Route Guards
공통 컴포넌트사용자 화면과 관리자 화면 모두에서 쓰입니다.
로그인과 역할로 화면을 보호합니다.
로그인 여부와 역할에 따라 화면을 보호하는 두 개의 래퍼입니다.
RequireAuth
로그인하지 않았다면 안내 문구와 로그인 버튼을 보여 줍니다. 세션을 복원하는 동안에는 "불러오는 중…"을 보여 줍니다.
tsx
import { RequireAuth } from "@/meerkit";
export default function Page() {
return (
<RequireAuth>
<MyPage />
</RequireAuth>
);
}RequireRole
로그인 확인 후 역할까지 검사합니다. 다른 역할이면 "접근 권한이 없습니다."를 보여 줍니다.
tsx
import { RequireRole, ADMIN_ROLE } from "@/meerkit";
<RequireRole role={ADMIN_ROLE}>
<AdminMembersPage />
</RequireRole>GuestOnly
로그인하지 않은 사람만 볼 화면(로그인·회원가입·아이디 찾기·비밀번호 찾기·비밀번호 재설정)을 감쌉니다. 로그인한 사람이 주소창으로 들어오면 화면을 보여 주지 않고 redirectTo(기본 routes.home)로 보냅니다. 킷의 /reset-password에는 이미 적용되어 있습니다. 인증 화면을 팝업 대신 페이지로 만든 서비스는 그 페이지마다 감싸 주세요. 로그인한 사람에게는 인증 팝업(AuthDialog)도 열리지 않습니다.
tsx
import { GuestOnly } from "@/meerkit";
export default function LoginPage() {
return (
<GuestOnly redirectTo="/projects">
<LoginForm />
</GuestOnly>
);
}Props
| Prop | Type | 설명 |
|---|---|---|
children필수 | ReactNode | 조건을 통과했을 때 보여 줄 내용. |
role필수 | RoleName | RequireRole 전용. 필요한 역할 이름. |
redirectTo | string | GuestOnly 전용. 로그인한 사람을 보낼 주소. 기본은 routes.home. |
가드는 화면 보호용입니다. 데이터 보호는 백엔드가 같은 규칙으로 다시 검증해야 합니다.
States
| 상황 | RequireAuth | RequireRole |
|---|---|---|
| 세션 복원 중 | 불러오는 중… | 불러오는 중… |
| 로그인 안 함 | 안내 문구와 로그인 버튼 | RequireAuth와 동일 |
| 로그인했지만 역할 다름 | 내용 표시 | 접근 권한이 없습니다. |
| 조건 충족 | 내용 표시 | 내용 표시 |
Where they are used
/me:RequireAuth/admin/members:RequireRole role="MASTER"- 서비스 화면(
app/(service)/)에서도 같은 방식으로 감싸면 됩니다.
Customization
안내 문구와 모양은 auth/guards/ 안의 두 파일에서 바꿉니다. 로그인하지 않은 사용자를 다른 페이지로 보내고 싶다면 RequireAuth에서 router.replace를 호출하세요.
Related API
이 컴포넌트가 호출하는 API입니다. 누르면 요청·응답 명세로 이동합니다.
