fix: [auth] 권한 게이트 강화 — 바이패스 경로 추가 + 미등록 메뉴 접근 차단
This commit is contained in:
@@ -25,9 +25,20 @@ export function PermissionProvider({ children }: { children: React.ReactNode })
|
||||
}
|
||||
|
||||
/**
|
||||
* 자기 잠금(self-lockout) 방지: 권한 설정 페이지는 항상 접근 허용
|
||||
* 화이트리스트 바이패스: 메뉴 권한 등록 없이도 항상 접근 허용하는 경로
|
||||
*
|
||||
* - 권한 설정 (자기 잠금 방지)
|
||||
* - 대시보드 (모든 유저 필수 접근)
|
||||
* - 시스템 페이지 (메뉴 등록 대상 아님)
|
||||
*/
|
||||
const BYPASS_PATHS = ['/settings/permissions'];
|
||||
const BYPASS_PATHS = [
|
||||
'/settings/permissions',
|
||||
'/settings/account-info',
|
||||
'/dashboard',
|
||||
'/company-info',
|
||||
'/subscription',
|
||||
...(process.env.NODE_ENV === 'development' ? ['/dev', '/test'] : []),
|
||||
];
|
||||
|
||||
function isGateBypassed(pathname: string): boolean {
|
||||
const pathWithoutLocale = stripLocalePrefix(pathname);
|
||||
@@ -52,11 +63,11 @@ export function PermissionGate({ children }: { children: React.ReactNode }) {
|
||||
const matchedUrl = findMatchingUrl(pathname, permissionMap);
|
||||
|
||||
if (!matchedUrl) {
|
||||
return <>{children}</>;
|
||||
return <AccessDenied />;
|
||||
}
|
||||
|
||||
const perms = permissionMap[matchedUrl];
|
||||
const canView = perms?.view ?? true;
|
||||
const canView = perms?.view ?? false;
|
||||
|
||||
if (!canView) {
|
||||
return <AccessDenied />;
|
||||
|
||||
Reference in New Issue
Block a user