2017-04-05 5 views
3
public function __construct() 
{ 
    $this->middleware('roles:Author')->only(['index','show','create']); 
    $this->middleware('roles:User')->only(['index','show']); 
} 

私のコントローラでは、ユーザロールが管理者であれば、コントローラのすべてのメソッドにアクセスする必要があります。ユーザロールがAuthorの場合は、インデックスにアクセスし、メソッドを作成して表示します。 roleがUserの場合、彼はindexとshowメソッドのアクセスのみを持ちます。laravelのユーザー役割ごとにコントローラメソッドをどのように管理できますか?

+1

laravelのドキュメントを確認してください:http://www.laravel.com/docs/5.4/authorization –

+0

パッケージをロール管理に使用していますか? –

+0

@IvankaTodorovaいいえ、ユーザーロールとモデルのロールをチェックするためのピボットテーブルを作成します。 –

答えて

1

Gatesdocs)をご覧ください。お使いのコントローラのメソッドcreate()

Gate::define('create-post', function ($user) { 
    return $user->isAuthor(); //Here you should check the users role 
}); 

そして:

if (Gate::allows('create-post', $post)) { 
    // The current user can create posts... 
} 

他の2つの方法:あなたのApp\Providers\AuthServiceProviderアドオンで

必要なアクションはありませんので、index()show()は両方の役割にご利用いただけます。

+0

新しい教えてくれてありがとうが、私はコントローラの各メソッドにこの条件を追加する必要があり、コンストラクタからコントローラを管理するアイデアがあるので、コンストラクタから管理したい。 –

関連する問題