In this php example (app/Http/Controllers/Auth/LoginController.php
) my model is called User
and the custom field for login validation is confirmed
. ($User->confirmed
)
Feel free to customize!
<?php | |
namespace App\Http\Controllers\Auth; | |
use App\User; | |
use Illuminate\Http\Request; | |
use App\Http\Controllers\Controller; | |
use Illuminate\Foundation\Auth\AuthenticatesUsers; | |
class LoginController extends Controller | |
{ | |
/* | |
|-------------------------------------------------------------------------- | |
| Login Controller | |
|-------------------------------------------------------------------------- | |
| | |
| This controller handles authenticating users for the application and | |
| redirecting them to your home screen. The controller uses a trait | |
| to conveniently provide its functionality to your applications. | |
| | |
*/ | |
use AuthenticatesUsers; | |
/** | |
* Where to redirect users after login. | |
* | |
* @var string | |
*/ | |
protected $redirectTo = '/home'; | |
/** | |
* Create a new controller instance. | |
* | |
* @return void | |
*/ | |
public function __construct() | |
{ | |
$this->middleware('guest', ['except' => 'logout']); | |
} | |
/** | |
* Handle a login request to the application. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response | |
*/ | |
public function login(Request $request) | |
{ | |
$this->validateLogin($request); | |
if ($this->hasTooManyLoginAttempts($request)) { | |
$this->fireLockoutEvent($request); | |
return $this->sendLockoutResponse($request); | |
} | |
if ($this->attemptLogin($request)) { | |
return $this->sendLoginResponse($request); | |
} | |
$username = $request->get($this->username()); | |
$user = User::where($this->username(), $username)->first(); | |
$this->incrementLoginAttempts($request); | |
// Customization: If client status is inactive (0) return failed_status error. | |
if( $user ) { | |
if ($user->confirmed == 0) { | |
return $this->sendFailedLoginResponse($request, 'You need to confirm your account first. We have sent you an email to confirm your account.'); | |
} | |
} | |
return $this->sendFailedLoginResponse($request); | |
} | |
/** | |
* Get the needed authorization credentials from the request. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return array | |
*/ | |
protected function credentials(Request $request) | |
{ | |
$credentials = $request->only($this->username(), 'password'); | |
$credentials['confirmed'] = 1; | |
return $credentials; | |
} | |
/** | |
* Get the failed login response instance. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @param string $field | |
* @return \Illuminate\Http\RedirectResponse | |
*/ | |
protected function sendFailedLoginResponse(Request $request, $trans = 'auth.failed') | |
{ | |
$errors = [$this->username() => trans($trans)]; | |
if ($request->expectsJson()) { | |
return response()->json($errors, 422); | |
} | |
return redirect()->back() | |
->withInput($request->only($this->username(), 'remember')) | |
->withErrors($errors); | |
} | |
} |