middleware('guest')->except('logout'); } /** * Attempt to log the user into the application. * * @param \Illuminate\Http\Request $request * @return bool */ protected function attemptLogin(Request $request) { $token = $this->guard()->attempt($this->credentials($request)); if (! $token) { return false; } $user = $this->guard()->user(); if ($user instanceof MustVerifyEmail && ! $user->hasVerifiedEmail()) { return false; } $this->guard()->setToken($token); return true; } /** * Get the needed authorization credentials from the request. * * @param \Illuminate\Http\Request $request * @return array */ protected function credentials(Request $request) { return [ $this->username() => strtolower($request->get($this->username())), 'password' => $request->password, ]; } /** * Send the response after the user was authenticated. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\JsonResponse */ protected function sendLoginResponse(Request $request) { $this->clearLoginAttempts($request); $token = (string) $this->guard()->getToken(); $expiration = $this->guard()->getPayload()->get('exp'); return response()->json([ 'token' => $token, 'token_type' => 'bearer', 'expires_in' => $expiration - time(), ]); } /** * Get the failed login response instance. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\JsonResponse * * @throws \Illuminate\Validation\ValidationException */ protected function sendFailedLoginResponse(Request $request) { $user = $this->guard()->user(); if ($user instanceof MustVerifyEmail && ! $user->hasVerifiedEmail()) { throw VerifyEmailException::forUser($user); } throw ValidationException::withMessages([ $this->username() => [trans('auth.failed')], ]); } /** * Log the user out of the application. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function logout(Request $request) { $this->guard()->logout(); } }