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()
|
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 = [
|
||||||
|
|||||||
Reference in New Issue
Block a user