web-dev-qa-db-ja.com

統合方法Laravelパスポート、oauthスコープとロール、および権限

angularでSPAを、laravelでバックエンドAPIを開発しています。5.3を統合しました。Laravel Passport for oauth

他のシステムで管理されている他のデータベースのテーブルのビューを使用して、ロールと権限を実装する必要があります。このシステムでは、ユーザーには1つの役割があります。また、ロールには自己参照があるため、次のような階層構造があります。

  • canSeeAnimals
  • canSeeMammals(canSeeAnimalsの子)
  • canSeeWolf(canSeeMammalsの子)

だから私はワークフローに従うことを考えていますが、それを実装する方法がわかりません:

  1. 別のシステムがユーザー、役割、権限を管理する
  2. APIサーバー(私の制御下)は、ビューを介して別のシステムテーブルにアクセスできます:
    • ユーザー
    • 役割
    • v_role_level(このテーブルでは、ロール間の親子関係が定義されています)
  3. APIサーバーからのクライアントアプリ(角度)リクエストリソースAPIサーバーは、役割と権限を持つユーザーデータを読み込み、役割と権限にマップされるスコープを持つトークンを生成します。

ポイント4は問題です。ユーザーの役割と権限に依存するスコープを持つトークンを生成するために、トークン生成をインターセプト/オーバーライドする方法を教えてください。

1
gandra404

この答えはそれを助けるようです。 https://stackoverflow.com/questions/39436509/laravel-passport-scopes

ユーザーを認証しているときに、ロールと権限についてデータベースを確認します。次に、スコープをリクエストのように追加します。

$request->request->add([
    'scope' => 'read-only-order' // read-only order scope for other user role
]);
1
fh-jashmore