fix: 로그인 후 뒤로가기 시 역할별 홈으로 복귀(엉뚱한 화면 방지)
이전 수정이 로그인 상태 사용자를 무조건 '/'(워크스페이스)로 보내, 관리자(/admin)에서 뒤로가기하면 다른 화면으로 가던 문제 수정. 역할별 홈으로 리다이렉트(지자체관리자→/admin, 슈퍼→지자체 선택여부에 따라 /admin 또는 선택화면, 일반→/). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -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 = [
|
||||
|
||||
Reference in New Issue
Block a user