fix: 로그인 후 뒤로가기 시 역할별 홈으로 복귀(엉뚱한 화면 방지)

이전 수정이 로그인 상태 사용자를 무조건 '/'(워크스페이스)로 보내,
관리자(/admin)에서 뒤로가기하면 다른 화면으로 가던 문제 수정.
역할별 홈으로 리다이렉트(지자체관리자→/admin, 슈퍼→지자체 선택여부에 따라 /admin 또는 선택화면, 일반→/).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
taekyoungc
2026-06-25 16:22:49 +09:00
parent 933d174fa4
commit a277e083da

View File

@@ -19,11 +19,12 @@ class Auth extends BaseController
public function showLoginForm() public function showLoginForm()
{ {
if (session()->get('logged_in')) { if (session()->get('logged_in')) {
return redirect()->to('/'); // 이미 로그인 상태면 역할별 홈으로(뒤로가기로 로그인 화면에 와도 작업 화면으로 복귀)
return redirect()->to($this->loggedInHomeUrl());
} }
// 로그인 후 뒤로가기 시 브라우저 캐시(bfcache)로 로그인 화면이 다시 보이는 것을 방지. // 로그인 후 뒤로가기 시 브라우저 캐시(bfcache)로 로그인 화면이 다시 보이는 것을 방지.
// 캐시 금지 → 뒤로가기 시 서버 재요청 → 로그인 상태면 위에서 대시보드로 리다이렉트. // 캐시 금지 → 뒤로가기 시 서버 재요청 → 로그인 상태면 위에서 작업 화면으로 리다이렉트.
$this->response->setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0'); $this->response->setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0');
$this->response->setHeader('Pragma', 'no-cache'); $this->response->setHeader('Pragma', 'no-cache');
$this->response->setHeader('Expires', '0'); $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() public function login()
{ {
$rules = [ $rules = [