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

在我的控制器中,我希望按照用戶角色的訪問方法,例如,如果用戶角色是admin,那麼他必須訪問控制器的所有方法,如果用戶角色是Author,那麼他可以訪問索引,創建並顯示方法和如果角色是用戶,那麼他只能訪問索引和顯示方法。如何根據laravel中的用戶角色管理控制器方法?

+1

檢查laravel文檔:http://www.laravel.com/docs/5.4/authorization –

+0

您是否使用包進行角色管理? –

+0

@IvankaTodorova no我爲用戶角色創建數據透視表並檢查模型中的角色。 –

回答

1

你可以看看Gatesdocs)。

在你App\Providers\AuthServiceProvider附加:

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

然後在你的控制器的方法create()

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

另外兩種方法:index()show()可供兩個角色,所以沒有必要的行動。

+0

感謝教新的,但我必須在控制器的每種方法中添加此條件,並且我想要從構造函數管理,所以你有任何想法從構造函數管理控制器。 –

相關問題