addActionPaths(self::PATH); } abstract protected function login_process(): UserEntity; abstract protected function logout_process(): void; //로그인화면 public function login_form_process(array $viewDatas = []): array { return $viewDatas; } public function login_form(): string|RedirectResponse { try { //초기화 $action = __FUNCTION__; $viewDatas = $this->action_init_process($action); $viewDatas = $this->login_form_process($viewDatas); return $this->action_post_process($action, $viewDatas); } catch (\Exception $e) { $viewDatas[self::ACTION_RESULT] = 'error'; $viewDatas[self::ACTION_MESSAGE] = $e->getMessage(); return $this->action_post_process($action, $viewDatas); } } //로그인처리 public function login(): RedirectResponse { try { $action = __FUNCTION__; $viewDatas = $this->action_init_process($action); $this->login_process(); return redirect()->to($this->authService->popPreviousUrl())->with('success', '로그인이 완료되었습니다.'); } catch (\Exception $e) { return redirect()->back()->withInput()->with('error', $e->getMessage()); // return redirect()->to($this->getMyAuth()->popPreviousUrl())->with('error', $e->getMessage()); } } //로그아웃 final public function logout(): RedirectResponse { try { $this->logout_process(); // 홈페이지로 리다이렉트 return redirect()->route('/')->with('error', MESSAGES['LOGOUT']); } catch (\Exception $e) { log_message("error", $e->getMessage()); return redirect()->back()->with('error', "로그아웃 중 오류가 발생했습니다."); } } }