Je utilise Laravel 4 pour mon application. Dans cette application, j'ai deux modèles d'authentification : Buyers et Users. Je ne veux pas utiliser le champ User->type, car ces modèles ont une logique absolument différente.
Voici mon contrôleur de connexion :
public function postIndex()
{
if (Auth::attempt(array_only(Input::get(), array('email', 'password')), array_only(Input::get(), array('save')))) {
Login::create(array('user_id' => Auth::user()->id, 'session_id' => session_id())); //session_id.
return Redirect::to('/');
}
return $this->userauth();
}
public function userauth() {
Config::set('auth.model', 'User');
Config::set('auth.table', 'users');
$test = Config::get('auth.model');
if (Auth::attempt(array_only(Input::get(), array('email', 'password')), array_only(Input::get(), array('save')))) {
Login::create(array('user_id' => Auth::user()->id, 'session_id' => session_id())); //session_id.
return Redirect::to('/');
}
Session::flash('error', 'Authentification non acceptée. '. implode(' ', array_only(Input::get(), array('email', 'password'))));
return Redirect::to('logins')->withInput(Input::except('password'));
}
J'ai déjà changé les paramètres dans auth.php pour fonctionner avec les acheteurs. Lorsque je saisis le login et le mot de passe pour l'acheteur, tout fonctionne bien. Il semble qu'après Auth::attempted(), les paramètres ne changent pas. Il semble que je doive recharger l'objet Auth. Quelqu'un peut-il m'aider ?
Par ailleurs, si j'écris comme ceci :
public function postIndex()
{
Config::set('auth.model', 'User');
Config::set('auth.table', 'users');
$test = Config::get('auth.model');
if (Auth::attempt(array_only(Input::get(), array('email', 'password')), array_only(Input::get(), array('save')))) {
Login::create(array('user_id' => Auth::user()->id, 'session_id' => session_id())); //session_id.
return Redirect::to('/');
}
Session::flash('error', 'Authentification non acceptée. '. implode(' ', array_only(Input::get(), array('email', 'password'))));
return Redirect::to('logins')->withInput(Input::except('password'));
}
tout fonctionne aussi bien.