これはかなり標準的なログイン機能であり、適切に機能する検証です。しかし、ユーザーがアクティブであることも確認したいと思います。「アクティブ」を 0 または 1 に設定して、users テーブルに列を設定しました。
public function post_login()
{
$input = Input::all();
$rules = array(
'email' => 'required|email',
'password' => 'required',
);
$validation = Validator::make($input, $rules);
if ($validation->fails())
{
return Redirect::to_route('login_user')
->with_errors($validation->errors)->with_input();
}
$credentials = array(
'username' => $input['email'],
'password' => $input['password'],
);
if (Auth::attempt($credentials))
{
// Set remember me cookie if the user checks the box
$remember = Input::get('remember');
if ( !empty($remember) )
{
Auth::login(Auth::user()->id, true);
}
return Redirect::home();
} else {
return Redirect::to_route('login_user')
->with('login_errors', true);
}
}
私はすでにこのようなことを試しました:
$is_active = Auth::user()->active;
if (!$is_active == 1)
{
echo "Account not activated";
}
ただし、これは「認証試行」if ステートメント内でのみ使用でき、その時点でユーザーの資格情報 (電子メールとパス) は既に検証されています。そのため、この時点でユーザー アカウントがアクティブでない場合でも、ユーザーは既にログインしています。
メールとパスがチェックされると同時に、アカウントをアクティブ化し、アカウントが設定されているかどうかを確認する必要があることを知らせるために、検証を返す方法が必要です。