- ホライゾン バージョン: ^5.7
- Laravel バージョン: ^8.18
- PHP バージョン: ^8.0
- Redis ドライバーとバージョン: predis/phpredis ^1.1
説明:
承認ロジックにカスタム ガードを使用しようとすると、最初の引数ではなく 2 番目のコールバック引数から認証済みオブジェクトにアクセスできました。
再現する手順:
namespace App\Providers;
class HorizonServiceProvider extends HorizonApplicationServiceProvider
{
...
protected function authorization()
{
$this->gate();
Horizon::auth(function ($request) {
return app()->environment('local') ||
Gate::check('viewHorizon', [$request->user('web:admin')]);
// used custom guard
});
}
protected function gate()
{
Gate::define(
'viewHorizon',
fn ($user = null, $admin = null) =>
// 2nd arg = $admin has the authenticated object
// # unexpected behaviour
($admin ? $admin::class : null) == Admin::class
);
}
}
これは正常な動作ですか?または、私が間違っていることがありますか?