2017-12-26 3 views
0

ポリシークラスを使用して、一部のユーザ(作成者または管理者)がポストモデルからレコードを更新および削除する権限を与えています。それは単純なCRUDです。質問は、具体的なメソッドのポリシーチェックを一度に実行するにはどうすればいいですか?たとえば、PostControllerのコンストラクタでミドルウェアを使用して、ユーザーがログに記録されているかどうかを確認できますが、パラメータを必要とするポリシーに似たようなことを行うにはどうすればよいですか?コントローラコンストラクタのラーベルポリシー

のPostController

public function __construct() 
{ 
    $this->middleware('auth', ['except' => ['index', 'show']]); 
} 

PostPolicy

class PostPolicy 
{ 
    use HandlesAuthorization; 

    public function before($user) 
    { 
    if ($user->hasRole('admin')) { 
     return true; 
    } 
    } 

    public function manage($user, $post) 
    { 
    return $user->id == $post->user_id; 
    } 
} 

AuthServiceProvider

public function boot() 
{ 
    $this->registerPolicies(); 

    Gate::define('manage-post', 'App\Policies\[email protected]'); 
} 

Iこれを試しました:

$this->middleware('can:manage-post', ['except' => ['index', 'show']]); 

しかし、それは動作しませんでした。

ありがとうございます。

+0

ルート定義を確認する必要があります – lagbox

答えて

関連する問題