middleware(['guest', 'front'])->except('logout'); } /** * 로그인 시 uid 검증 사용 */ public function username() { return 'email'; } /** * Show the application's login form. * * @return \Illuminate\View\View */ public function showLoginForm() { $env = strtoupper(env('DEVELOPER_ENV')); $email = ""; $password = ""; if($env == 'LOCAL') { $email = 'playedcompany@gmail.com'; $password = '12341234'; } return view('auth.login', [ 'email' => $email, 'password' => $password, ]); } /** * 로그인 창에서 처리 요청 시 처리 방식을 변경한다. */ public function credentials(Request $request) { $inputParam = $request->only($this->username(), 'password'); return [ 'email' => $inputParam['email'], 'password' => $inputParam['password'], 'is_withdraw' => 0, 'deleted_at' => null ]; } /** * 로그인 시 마지막 로그인 시간 기록 */ public function authenticated(Request $request, $user) { // 이메일 인증을 받았는지 확인 if(!$user->hasVerifiedEmail()) { Auth::logout(); // 강제 로그아웃 return view('auth.verify'); } // 로그인 성공 기록 (new LoginLog)->setSucceedLog($user->email, "로그인 성공"); // 로그인 일시, IP 갱신 $user->update([ 'last_login_at' => now(), 'last_login_ip' => $request->getClientIp() ]); // 비밀번호 갱신 주기 확인 $chgPwdDay = (int)config('change_password_day', 0); if($chgPwdDay > 0) { $diffDay = (int)((new DateTime($user->password_updated_at))->diff(new DateTime)->format("%r%a")); if($diffDay >= $chgPwdDay) { return redirect()->route('account.password.campaign'); } } } /** * 로그인 실패 시 처리 */ protected function sendFailedLoginResponse(Request $request) { // 로그인 시도 제한 여부 $msg = ($this->hasTooManyLoginAttempts($request) ? '로그인 시도 횟수 초과' : '로그인 실패, ID/PW 불일치'); $email = $request->post('email'); // 로그인 실패 기록 (new LoginLog)->setFailedLog($email, $msg); // 로그인 실패 기록 throw ValidationException::withMessages([ $this->username() => [trans('auth.failed')], ]); } /** * 로그인 후 이동 주소 */ public function redirectTo() { return request()->post('callback') ?? DIRECTORY_SEPARATOR . config('url_after_login'); } /** * 로그인 시도 제한 횟수 */ public function maxAttempts() { return intval(config('max_login_try_count', 6)); } /** * 로그인 시도 제한 시간 */ public function decayMinutes() { return intval(config('max_login_try_limit_second', 60) / 60); } /** * 로그아웃 후 처리 */ protected function loggedOut(Request $request) { if($to = config('url_after_logout')) { return redirect($to)->call(function() { Auth::logout(); }); } } }