3

プロジェクトの ACL Manager としてZizaco/ entrust laravel パッケージを使用しています。

ミドルウェアを介してルート グループへのアクセスを制限し、それにロール (またはアクセス許可) を割り当てるには、次のようにする必要があることを知っています。

Route::group(['prefix' => 'admin', 'middleware' => ['role:admin']], function() {
    ....
});

しかし、リソース コントローラーの異なるルート (メソッド) に個別のアクセス許可を割り当てたいと考えています。

リソース全体に対してどのようにできるかはわかっていますが、コントローラーメソッドごとに実装することはできません。

Route::group(['prefix' => 'admin', 'middleware' => ['role:admin']], function() {
        Route::resource('/post', ['middleware' => ['permission:manage-posts'], 'uses' => 'PostController']);

    });

この権限を関連するメソッドに割り当てたい:

'post-create' => public function create ()  
'post-edit' => public function edit()

等々。

4

2 に答える 2

-1

メソッドを使用して、メソッドをチェーンできますonly。以下に例を示します。

    <?php
    
    namespace App\Http\Controllers;
    
    use App\Models\User;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Hash;
    use Illuminate\Support\Facades\Storage;
    use Spatie\Permission\Models\Role;
    
    class UserController extends Controller
    {
    
        public function __construct()
        {
            $this->middleware('permission:read-user')->only('index','show');
            $this->middleware('permission:edit-user')->only('edit','update');
            $this->middleware('permission:delete-user')->only('delete');
            $this->middleware('permission:create-user')->only('create','store');
        }

于 2021-08-12T14:48:16.323 に答える