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); | |
| } | |
| } |