0
  • ホライゾン バージョン: ^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
        );
    }
}

これは正常な動作ですか?または、私が間違っていることがありますか?

4

1 に答える 1