2017-07-03 71 views
-1

我想在Laravel 5.4過去我開始與不同的表使用user_types不同的表工作,但對於這個項目我想使用默認users表的所有類型的用戶,只是分開他們的訪問(角色),我不知道如何做到這一點,這就是爲什麼我需要它的指導。 PS:對那些可能想要代碼的朋友,目前還沒有代碼!在開始編碼之前我需要領導,所以請不要評論垃圾郵件。需要指導與laravel角色

親切的問候。

+0

請至少做一個谷歌搜索。參考:https://github.com/httpoz/roles – Priya

+0

@DavidMakogon正如我所說的要求'提供代碼'是垃圾評論,因爲是指導問題不是一個問題解決問題,所以很明顯,沒有代碼尚未向人們要求它。 '有些人只是把這樣的評論,這樣得到這個網站的排名!' – djhru

回答

0

假設用戶可以有多種角色,然後做到這一點。首先是你必須有3個表.. tbl_userstbl_user_rolestbl_roles其中

tbl_users

id 
username 
password 
someotherfields 

tbl_user_roles

id 
user_id 
role_id 

tbl_roles

id 
rolename 

然後在model user你必須分配的角色有關係。

public function roles() 
{ 
    return $this->belongsToMany('App\Role', 'user_roles', 'user_id', 'role_id')->withTimestamps(); 
} 

現在你的角色..現在怎麼都取決於角色的頁面限制..你必須做的是有一箇中間件吧..這裏是如何:

創建一箇中間件所謂RolePermission,在你的終端運行

php artisan make:middleware RolePermission 

然後在它的內容

public function handle($request, Closure $next, $roles) 
{ 
    $roles = explode('|',$roles); 
    $userRoles = Auth::user()->roles; 
    foreach($userRoles as $role) 
    { 
     if(in_array($role->id, $roles)) 
     { 
      return $next($request); 
     } 
    } 

    // Redirect 
    return redirect()->back(); 
} 

基本上它是檢查如果authed用戶列表角色是在允許使用頁面的角色..

然後添加一個頁面的限制是在您的路由文件,例如假設角色管理員有id:1主持人ID:2 SimpleUser ID:3,那麼頁面用戶管理需要你的管理員進入,然後有這樣的:

// Group of route that will only be accessible for Users with Level = 1 (Administrator) 
Route::group(['middleware' => 'rolePermissions:1'], function(){ 
    Route::get('/users',['as'=>'users', 'uses'=>'[email protected]']); 
} 

// Multiple roles for a page 
Route::group(['middleware' => 'rolePermissions:1|2|3|4'], function(){ 
    // routes here 
} 

此外,中間件還沒有工作..你必須編輯內核並將其添加到受保護的$ routeMiddleware中。

'rolePermissions' => \App\Http\Middleware\RolePermissions::class, 

和它的一切設置,歡呼..你現在有頁面限制認證的用戶角色..

+0

@Deamonyowh嗨,感謝評論,現在我註冊用戶默認在用戶角色,而不是管理員或超級管理員等? – djhru

+0

這取決於你的人..你可以給一個默認的角色或管理員可以給用戶或兩個角色.. – Demonyowh

+0

我知道它可以發生我的問題是'如何'?和其他問題,我的是我不能得到正確的用戶角色名稱的一部分我試過這個,但沒有運氣'@if(認證::用戶() - >角色='isAdmin') 歡迎回到管理員! @else 歡迎回來用戶! @ endif' – djhru