2017-01-26 5 views
1

Ich habe eine App mit Laravel, in der ich verschiedene Benutzer und verschiedene Rollen habe. Ich füge einige Benutzer, Rollen, role_user, permission und permission_role in meine DB ein, benutze seeder, aber wenn ich versuche, mich mit E-Mail und Passwort zu registrieren, habe ich: Diese Zugangsdaten stimmen nicht mit unseren Aufzeichnungen überein.Diese Anmeldeinformationen stimmen nicht mit unseren Aufzeichnungen überein

das ist UserTableSeeder:

public function run() 
{ 
    // 

    $user = [ 
     [ 
      'name' => 'admin', 
      'email' => '[email protected]', 
      'password' => 'passwordadmin' 
     ], 
     [ 
      'name' => 'president', 
      'email' => '[email protected]', 
      'password' => 'passwordpresident' 
     ], 
     [ 
      'name' => 'utilisateur1', 
      'email' => '[email protected]', 
      'password' => 'passworduser' 
     ], 
     [ 
      'name' => 'utilisateur2', 
      'email' => '[email protected]', 
      'password' => 'passworduser' 
     ] 
    ]; 

    foreach ($user as $key => $value) { 
     User::create($value); 
    } 
} 

RoleTableSeeder:

public function run() 
{ 
    // 

    $role = [ 
     [ 
      'name' => 'admin', 
      'display_name' => 'Administrateur', 
      'description' => 'Administrateur du système' 
     ], 
     [ 
      'name' => 'president', 
      'display_name' => 'Président', 
      'description' => 'President de la commune' 
     ], 
     [ 
      'name' => 'utilisateur_normal', 
      'display_name' => 'membre du conseil', 
      'description' => 'membre du conseil' 
     ] 
    ]; 

    foreach ($role as $key => $value) { 
     Role::create($value); 
    } 
} 

RoleUserTableSeeder:

public function run() 
{ 
    // 

    DB::table('role_user')->insert([ 
     [ 'user_id' => 6, 'role_id' => 4 ], 
     [ 'user_id' => 7, 'role_id' => 5 ], 
     [ 'user_id' => 8, 'role_id' => 6 ], 
     [ 'user_id' => 9 , 'role_id' => 6 ],    
    ]); 

} 

Modelle Ich habe: User, Rolle, Permission.

Irgendeine Idee bitte?

+2

Sie müssen das Passwort verschlüsselt in die Datenbank einfügen: ''Passwort' => bcrypt ('passworduser'),' – Troyer

Antwort

1

Wie Troyer sagte, müssen Sie sie mit bcrypt hacken. Laravel bietet einen praktischen Wrapper mit \ Hash :: make ($ str).

Es ist extrem schlecht, Ihre Passwörter im Klartext zu haben.

Sie benötigen eine Sämaschine wie dies auszuführen:

public function run() 
{ 
    $users = [ 
     [ 
      'name' => 'admin', 
      'email' => '[email protected]', 
      'password' => \Hash::make('passwordadmin') // Hash them in order to make use of \Auth library (and more importantly, in order not to be a dick to your users) 
     ], 
     [ 
      'name' => 'president', 
      'email' => '[email protected]', 
      'password' => \Hash::make('passwordpresident') 
     ], 
     [ 
      'name' => 'utilisateur1', 
      'email' => '[email protected]', 
      'password' => \Hash::make('passworduser') 
     ], 
     [ 
      'name' => 'utilisateur2', 
      'email' => '[email protected]', 
      'password' => \Hash::make('passworduser') 
     ] 
    ]; 
    User::create($users); // Import them with 1 query for performance 
} 
2

Es sieht Sie Ihre Passwörter in der Datenbank nicht Hashing, müssen Sie bycript verwenden:

public function run() 
{ 
    // 

$user = [ 
    [ 
     'name' => 'admin', 
     'email' => '[email protected]', 
     'password' => bcrypt('passwordadmin') 
    ], 
    [ 
     'name' => 'president', 
     'email' => '[email protected]', 
     'password' => bcrypt('passwordpresident') 
    ], 
    [ 
     'name' => 'utilisateur1', 
     'email' => '[email protected]', 
     'password' => bcrypt('passworduser') 
    ], 
    [ 
     'name' => 'utilisateur2', 
     'email' => '[email protected]', 
     'password' => bcrypt('passworduser') 
    ] 
]; 

foreach ($user as $key => $value) { 
    User::create($value); 
} 
} 

Sie können mehr Seeder sehen Beispiele auf der oficial seeder Laravel documentation.

+0

Sie haben Recht th Das Problem war das Hashing, aber als ich es mit bcrypt versuchte, funktionierte es nicht. Ich habe stattdessen "\ Hash :: make ('passwordadmin')" verwendet. Danke – Naj

+1

@Naj esencially '\ Hash :: make()' und 'bcrypt()' sind die gleichen, 'bcrypt()' ist eine Laravel-Hilfsfunktion, die 'Hash :: make()' aufruft, nur ich mag es mehr weil es viel sauberer aussieht :) – Troyer

Verwandte Themen