diff --git a/app/Controllers/Auth.php b/app/Controllers/Auth.php index c76e39c..2be141a 100644 --- a/app/Controllers/Auth.php +++ b/app/Controllers/Auth.php @@ -19,11 +19,12 @@ class Auth extends BaseController public function showLoginForm() { if (session()->get('logged_in')) { - return redirect()->to('/'); + // 이미 로그인 상태면 역할별 홈으로(뒤로가기로 로그인 화면에 와도 작업 화면으로 복귀) + return redirect()->to($this->loggedInHomeUrl()); } // 로그인 후 뒤로가기 시 브라우저 캐시(bfcache)로 로그인 화면이 다시 보이는 것을 방지. - // 캐시 금지 → 뒤로가기 시 서버 재요청 → 로그인 상태면 위에서 대시보드로 리다이렉트. + // 캐시 금지 → 뒤로가기 시 서버 재요청 → 로그인 상태면 위에서 작업 화면으로 리다이렉트. $this->response->setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0'); $this->response->setHeader('Pragma', 'no-cache'); $this->response->setHeader('Expires', '0'); @@ -34,6 +35,26 @@ class Auth extends BaseController ]); } + /** + * 로그인 상태 사용자의 역할별 기본 홈 URL. + * (로그인 성공 시 이동 지점과 일치 — 단, 슈퍼/본부는 지자체를 이미 선택했으면 작업 화면으로) + */ + private function loggedInHomeUrl(): string + { + $level = (int) session()->get('mb_level'); + + if ($level === \Config\Roles::LEVEL_LOCAL_ADMIN) { + return site_url('admin'); + } + if (\Config\Roles::isSuperAdminEquivalent($level)) { + $hasLg = (int) (session()->get('admin_selected_lg_idx') ?? 0) > 0; + + return site_url($hasLg ? 'admin' : 'admin/select-local-government'); + } + + return site_url('/'); + } + public function login() { $rules = [