私のシステムを使用しているユーザーのタイプは 4 つあります: 1.スーパー管理者、2.スーパー管理者チーム、3.管理者、および 4。 管理チームメンバー、
spatie を使用してロールとアクセス許可を処理するため、すべてのタイプのユーザーに共通のモジュール (アクセス許可) のセットと、支払い方法などのスーパー管理者専用のモジュール (アクセス許可) の別のセットがあります。
さて、データベースをシードして許可を得たら、すべてを一度にシードする必要がありますか? ['contacts','email','bids']
にはネットワーク シールドが付属しているため (ただし、シールドの正確な使用法とその仕組みについては少し混乱しています)、管理者はこれらからのみアクセスできます。許可されたアクセス許可 チームにアクセス許可を割り当てます。ただし、SuperAdmin の場合、SuperAdminGuard を使用して他のアクセス許可セットを作成する必要がありますか?何がベストプラクティスなのか知りたいです。
使用例: スーパー管理者 まずシステムにログインし、リストから管理者にどの権限を付与するかを決定します。
2. 管理者はシステムにログインし、どの権限セットを自分のチームに付与するかを割り当てますが、管理者はスーパー管理者が持つ権限のリストを表示することはできません。
私の主張を明確にできたと思いますが、それを実装する適切な方法を教えてください。
P粉7369355872023-11-15 10:44:18
ユーザーというモデルを使用し、ユーザーに権限を直接割り当てていると思います。これが私のアプローチです。つまり、最初にロールを作成し、そのロールに適切なアクセス許可を付与してから、そのロールをユーザーに割り当てることができます。
まず、ロールに権限を割り当てます
リーリー次に、ロールをユーザーと同期します
リーリーこれらは、app/Http/Kernel.php に記述できる組み込みの spatie ミドルウェアです。
リーリールーティングで「ロール」ミドルウェアを使用して保護できるようになりました。
リーリーそれでは、特定の役割 (スーパー管理者または管理者) の権限を取得する必要があります。あなたにできることは次のとおりです、
リーリーさらに、この方法でユーザー ロールを取得することもできます
リーリーもう 1 つ 、スーパー管理者の場合、ロールから権限を取得する必要はなく、すべての権限を直接取得できます。スーパー管理者はシステム全体にアクセスできるため、これを行うことでスーパー管理者の権限チェックをバイパスできます。 リーリー
お役に立てば幸いです:)