From a277e083da7f6acb20aa6d64f31a7f6f1e08b812 Mon Sep 17 00:00:00 2001 From: taekyoungc Date: Thu, 25 Jun 2026 16:22:49 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=ED=9B=84?= =?UTF-8?q?=20=EB=92=A4=EB=A1=9C=EA=B0=80=EA=B8=B0=20=EC=8B=9C=20=EC=97=AD?= =?UTF-8?q?=ED=95=A0=EB=B3=84=20=ED=99=88=EC=9C=BC=EB=A1=9C=20=EB=B3=B5?= =?UTF-8?q?=EA=B7=80(=EC=97=89=EB=9A=B1=ED=95=9C=20=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EB=B0=A9=EC=A7=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 이전 수정이 로그인 상태 사용자를 무조건 '/'(워크스페이스)로 보내, 관리자(/admin)에서 뒤로가기하면 다른 화면으로 가던 문제 수정. 역할별 홈으로 리다이렉트(지자체관리자→/admin, 슈퍼→지자체 선택여부에 따라 /admin 또는 선택화면, 일반→/). Co-Authored-By: Claude Opus 4.8 --- app/Controllers/Auth.php | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) 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 = [