2016-09-13 4 views
0

Ich bin neu bei Laravel und habe versucht, ein Benutzerrollen-Authentifizierungssystem zu erstellen. Da 5,3 sehr neu ist, gibt es nicht viele Ressourcen, die anfängerfreundlich sind. Ich verwende das Authentifizierungssystem, das von php artisan make: auth erstellt wurde, jedoch bin ich nicht sicher, wie ich meine neu erstellten Benutzer mit einer my roles-Tabelle verknüpfen kann.Wie ändere ich meine Laravel 5.2-Registrierung, um neuen Benutzern eine Rolle in Laravel 5.3 zuzuweisen?

Anfangs hatte ich verfolge this video series auf YouTube, aber die Authentifizierung Controller unterscheiden sich stark zwischen 5,2/5,3

Ich hoffe, dass jemand mir helfen, herauszufinden, was in äquivalenter hinzuzufügen getan werden muss, was zu tun ist im Video zum neuen Controller.

Laravel 5.2 Rolle Verband

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

Von Laravel 5.3 RegisterController.php

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

Danke fürs Lesen.

Antwort

0

Sie können die automatisch generierten Controller ändern:

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

Ich war mir nicht bewusst, dass diese so umstrukturiert werden könnten, ohne etwas zu brechen. Ich versuche es mal! – FastEddysNewUsedParts

+0

@FastEddysNewUsedParts Solange die Methode eine Instanz des 'User'-Modells zurückgibt, kann sie sicher geändert werden. –

+0

Ich musste sicherstellen, dass ich mein Modell für Rollen hinzufügen konnte, aber danach konnte ich den Code umstrukturieren und das funktioniert. Vielen Dank, dass Sie mir geholfen haben und dabei geholfen haben, etwas zu lernen. – FastEddysNewUsedParts

0

Um eine Rolle zu einem Benutzer an, indem Sie einen Datensatz in der Zwischentabelle einfügen, die die Modelle direkt nach dem Erstellen eines Kontos verbindet, verwenden Sie die Methode an, bevor Der neue Benutzer wird wie folgt zurückgegeben:

/** 
* 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; 
}