2016-09-13 47 views
0

我是Laravel的新手,一直在嘗試構建一個用戶角色認證系統。由於5,3非常新,所以沒有太多適合初學者的資源。我正在使用由php artisan make:auth創建的身份驗證系統,但是我不確定如何將我新創建的用戶與我的角色表相關聯。如何修改我的Laravel 5.2註冊以分配新用戶在Laravel 5.3中的角色?

起初,我一直在關注YouTube上this video series,但認證控制器5.2/5.3

之間有很大的不同,我希望有人能幫助我弄清楚什麼是必須做在同等添加什麼做在新的控制器的視頻。

Laravel 5.2角色協會

public function postSignUp(Request $request) 
{ 
    $user = new User(); 
     . . . 
    $user->save(); 
    $user->roles()->attach(Role::where('name', 'User')->first(); 
} 

從Laravel 5.3 RegisterController.php

protected function create(array $data) 
    { 
     return User::create([ 
      'name' => $data['name'], 
      'email' => $data['email'], 
      'password' => bcrypt($data['password']), 
     ]); 
    } 

感謝您的閱讀。

回答

0

您可以修改自動生成的控制器:

protected function create(array $data) 
{ 
    $user = User::create([ 
     'name' => $data['name'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
    ]); 

    $user->roles()->attach(Role::where('name', 'User')->first()); 

    return $user; 
} 
+0

我不知道這些可以像這樣重組而不會破壞某些東西。我會給它一個! – FastEddysNewUsedParts

+0

@FastEddysNewUsedParts只要該方法返回'User'模型的實例,就可以安全地修改它。 –

+0

我必須確保添加角色的模型用法,但在此之後,我能夠重構代碼並使其正常工作。非常感謝你幫助我,並幫助我學習了一點。 – FastEddysNewUsedParts

0

要通過在創建帳戶之後加入模型中的中間表中插入記錄附加一個角色給用戶,使用前附加方法返回新的用戶,像這樣:

/** 
* Create a new user instance after a valid registration. 
* 
* @param array $data 
* @return User 
*/ 
protected function create(array $data) 
{ 
    $user = User::create([ 
     'first_name' => $data['first_name'], 
     'last_name' => $data['last_name'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
    ]); 
    //attach default user role to user 
    $user->roles()->attach(Role::where('name', 'User')->first()); 

    return $user; 
}