2014-10-31 2 views
3

Я создаю postSignIn метод и хотите проверить: электронной почты, пароль, verifiedFlag Во-первых, не было никаких проблем для создания postSignIn метода, как:Laravel Auth Войти Решение

public function postSignIn(){ 
    if(Auth::attempt(array('email' => Input::get('email'),'password' => Input::get('password'),'verifiedFlag'=>1))){ 
      return Redirect::route('home-view'); 
    } 
    else{ 
     return "Email/Password wrong or Your Account not verified by Admin"; 
    } 
} 

Но теперь я стараюсь, чтобы сделать его более дружественным к пользователю с помощью раздельного оповещения для

  • счета не проверена, и
  • Email/Пароль Неправильный

и теперь я пытаюсь сделать это следующим образом:

if(Auth::attempt(array('nim' => Input::get('nim'),'password' => Input::get('password')))){ 
     Auth::logout(); 
     if(Auth::attempt(array('nim' => Input::get('nim'),'password' => Input::get('password'),'verified' => 1))){ 
      return Redirect::route('home-view'); 
     } 
     else{ 
      return "Your Account not verfied. Please wait until admin verified your account or contact your admin"; 

     } 
    } 
    else{ 
     return "NIM/Password wrong"; 
    } 

не было никаких проблем, но я думаю, что мне нужно другое решение, чтобы Auth не нужно Войти (Покушение) Дважды

ответ

3

Вы можете используйте метод validate. Это будет работать:

public function postSignIn(){ 
    if(Auth::attempt(array('email' => Input::get('email'),'password' => Input::get('password'),'verifiedFlag'=>1))){ 
      return Redirect::route('home-view'); 
    } 
    elseif(Auth::validate(array('email' => Input::get('email'),'password' => Input::get('password')))){ 
      return "Your Account not verified by Admin"; 
    } 
    else 
    { 
     return "Email/Password wrong"; 
    } 
} 
+0

Я просто понимаю, что я ошибался в заявлении о размещении ._. в любом случае, спасибо :) – GandhyOnly

0

Фильтры - это путь. Для решения этой проблемы легко и просто, см. Мой пример ниже.

Если пользователь неактивен в любой момент, он выйдет из системы, вы можете перенаправить пользователя с помощью флеш-сообщения Session, код входа в систему работает так, как есть.

Route::filter('auth', function() 
{ 
    if (Auth::guest()) 
    { 
     if (Request::ajax()) 
     { 
      return Response::make('Unauthorized', 401); 
     } 
     else 
     { 
      return Redirect::guest('login'); 
     } 
} 
else 
{ 
    // If the user is not active any more, immidiately log out. 
    if(Auth::check() && !Auth::user()->verifiedFlag) 
    { 
     Auth::logout(); 
     Session::flash('message','Your account is not active, please contact your administrator    to active your account'); 

     // redirect to login page 
     return Redirect::to('/'); 
    } 
} 
}); 
Смежные вопросы