いくつかの類似の質問がありますが、それらはすべて既存の機能を参照していないので不完全なようです。しかし、これらの関数が存在しない、主にAuthController
から機能を変更するためにそれらのすべてが提示されているソリューションではLaravel 5 Auth active members
Check for active user state with laravel
Login only if user is active using Laravel
extend laravel 5 built-in authentication to login only "if user == active"
:
私はを参照しています。
私はLaravel(5.2)の最新バージョンを使用していますので、私のデフォルトでは、ファイルを述べたようになっています。今https://github.com/laravel/laravel/blob/master/app/Http/Controllers/Auth/AuthController.php
、どのように私はこの機能を実装するのですか?私はそのAuthController
ファイルにpublic function postLogin()
(これらの他の投稿に示唆されているように)をコピーしようとしました。何も変わっていません。
私は明らかに何かが不足しています。
誰か助けてください!
編集: 私が追加した機能は次のとおりです。AuthController
で
public function postLogin(Request $request)
{
$this->validate($request, [
'email' => 'required|email', 'password' => 'required',
]);
$credentials = $this->getCredentials($request);
// This section is the only change
if (Auth::validate($credentials)) {
$user = Auth::getLastAttempted();
if ($user->active) {
Auth::login($user, $request->has('remember'));
return redirect()->intended($this->redirectPath());
} else {
return redirect($this->loginPath()) // Change this to redirect elsewhere
->withInput($request->only('email', 'remember'))
->withErrors([
'active' => 'You must be active to login.'
]);
}
}
return redirect($this->loginPath())
->withInput($request->only('email', 'remember'))
->withErrors([
'email' => $this->getFailedLoginMessage(),
]);
}
Authのルートを登録するために 'Route :: auth()'を使用している場合、メソッドは 'login'の' login'ではありません。ルートを確認してください。 – lagbox
私は関数を 'postLogin'から' login'に変更しました。 'Request'について例外が発生し、' Use Illuminate \ Http \ Request'を追加しなければなりませんでした。クラス 'App \ Http \ Controllers \ Auth \ Auth'が見つかりませんでした。 –
これはPHPの名前空間の問題です。 – lagbox