2017-01-26 5 views
1

私は異なるユーザーと異なる役割を持つlaravelのアプリを持っています。私はいくつかのユーザ、ロール、role_user、permission、permission_roleをシードサーバを使って自分のDBに挿入しますが、すでにDBに記録されている電子メールとパスワードを使ってログインしようとすると、 これらの資格情報は私たちのレコードと一致しません

この

は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 ],    
    ]); 

} 

モデル:ユーザー、役割、許可。

どうぞよろしくお願いします。

+2

データベースに暗号化されたパスワードを挿入する必要があります: 'password' => bcrypt( 'passworduser')、 ' – Troyer

答えて

1

Troyer氏によると、bcryptでハッシュする必要があります。 Laravelは\ Hash :: make($ str)で便利なラッパーを提供します。

パスワードを平文で入力することは非常に悪いことです。

あなたはこのようなあなたのシーダを実行する必要があります。

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

それはあなたがbycriptを使用する必要がある、あなたのデータベースにパスワードをハッシュされていませんになります。

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); 
} 
} 

あなたはより多くのシーダを見ることができます例:oficial seeder Laravel documentation.

+0

あなたは右ですeの問題はハッシングであったが、bcryptを使ってみるとうまくいかなかった。代わりに "\ Hash :: make( 'passwordadmin')"を使用しました。ありがとうございました – Naj

+1

@ Hash :: make()とbcrypt()は同じです、 'bcrypt()'は 'Hash :: make()'を呼び出すLaravelヘルパー関数です。それはもっときれいに見えるのでもっと:) – Troyer

関連する問題