_paths[] = 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 { //기본값처리 $initFormDatas = []; //viewData처리 $viewDatas = []; $viewDatas['action'] = __FUNCTION__; $viewDatas['formFields'] = $this->service->getFormFields(); $viewDatas['formFilters'] = $this->service->getFormFilters(); $viewDatas['formRules'] = $this->service->getFormRules(__FUNCTION__); $viewDatas['formOptions'] = $this->service->getFormOptions(__FUNCTION__); $viewDatas['formDatas'] = $initFormDatas; $viewDatas = $this->login_form_process($viewDatas); return $this->form_post_process($viewDatas); } catch (\Exception $e) { $viewDatas['error'] = $e->getMessage(); //리디렉션 대신 폼 뷰를 다시 렌더링하도록 form_post_process 호출 return $this->form_post_process($viewDatas); } } //로그인처리 public function login(): RedirectResponse { try { $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', "로그아웃 중 오류가 발생했습니다."); } } }