Meerkit
Meerkit
HomeDocsComponentsAPI
GitHub

Getting Started

5
IntroductionInstallationProject StructureThemingDeployment

CLI

6
CLI Overviewinit & setupstart, stop & openstatus, check, env & logsdbadd, test & update

Core Concepts

5
AuthenticationRoles & PermissionsData ModelLogin LockoutSecurity

Guides

3
Protect a pageAdd a roleCall your own API

Components

24

사용자 화면12

Login FormSignup FormEmail VerificationTerms AgreementGoogle LoginPassword ResetProfile & PasswordNicknameAuth DialogProfile ImageUser AvatarUser Menu

관리자 화면6

Member TableMember DirectoryMember AI UsageMember AI Usage HistoryRole ManagerRole Select

공통5

Address FieldFile DropzoneLoadingDateRoute Guards

AI Components

4
AI Prompt InputThinking IndicatorAPI Key InputVoice

API

6
OverviewHealthAuthUsers · 내 정보Users · 관리자LLM

Reference

2
Hooks & StateFAQ

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

PropType설명
children필수ReactNode조건을 통과했을 때 보여 줄 내용.
role필수RoleNameRequireRole 전용. 필요한 역할 이름.
redirectTostringGuestOnly 전용. 로그인한 사람을 보낼 주소. 기본은 routes.home.
가드는 화면 보호용입니다. 데이터 보호는 백엔드가 같은 규칙으로 다시 검증해야 합니다.

States

상황RequireAuthRequireRole
세션 복원 중불러오는 중…불러오는 중…
로그인 안 함안내 문구와 로그인 버튼RequireAuth와 동일
로그인했지만 역할 다름내용 표시접근 권한이 없습니다.
조건 충족내용 표시내용 표시

Where they are used

  • /me: RequireAuth
  • /admin/members: RequireRole role="MASTER"
  • 서비스 화면(app/(service)/)에서도 같은 방식으로 감싸면 됩니다.

Customization

안내 문구와 모양은 auth/guards/ 안의 두 파일에서 바꿉니다. 로그인하지 않은 사용자를 다른 페이지로 보내고 싶다면 RequireAuth에서 router.replace를 호출하세요.

Related API

이 컴포넌트가 호출하는 API입니다. 누르면 요청·응답 명세로 이동합니다.

GET/api/users/me내 정보POST/api/auth/refresh리프레시 쿠키로 액세스 토큰 재발급
DateAI Prompt Input
© Meerkit. All rights reserved.GitHub