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

Add a role

기본 4종 외에 새 역할을 추가하는 순서입니다.

기본 역할(MASTER, OWNER, VIEWER, WRITER) 외에 AUDITOR(감사 조회 전용) 역할을 추가한다고 가정하고 따라 합니다.

1. Add it to the database

역할은 roles 테이블의 한 행입니다. 마이그레이션으로 추가합니다.

idnamedescription
5AUDITOR감사 로그 조회 전용
백엔드는 아직 구현 전이라, 실제 마이그레이션 명령은 구현 후 이 가이드에 맞춰 채웁니다.

2. Add it to the frontend

프론트의 역할 목록은 src/meerkit/roles.ts 한 곳입니다. 한 줄만 추가하면 타입, 역할 선택 상자, 문서 표가 모두 따라옵니다.

src/meerkit/roles.ts
export const ROLES = [
  { id: 1, name: "MASTER", description: "시스템 전체 관리자", crud: "CRUD" },
  { id: 2, name: "OWNER", description: "자신이 소유한 데이터 관리", crud: "CRUD" },
  { id: 3, name: "VIEWER", description: "조회 전용 사용자", crud: "R" },
  { id: 4, name: "WRITER", description: "데이터 작성 및 수정 사용자", crud: "CRU" },
  { id: 5, name: "AUDITOR", description: "감사 로그 조회 전용", crud: "R" }, // 추가
] as const;
  • RoleName 타입이 자동으로 "AUDITOR"를 포함합니다.
  • RoleSelect와 MemberTable이 새 역할을 선택지로 보여 줍니다.

3. Use it in guards

tsx
<RequireRole role="AUDITOR">
  <AuditLogPage />
</RequireRole>

RequireRole는 역할 하나와 일치하는지 검사합니다. 여러 역할을 허용하려면 useAuth로 직접 비교하세요.

tsx
const { user } = useAuth();
const allowed = ["MASTER", "AUDITOR"].includes(user?.role.name ?? "");

4. Enforce on the server

서버의 해당 API가 새 역할을 허용 목록에 포함하는지 확인합니다. 화면만 바꾸면 새 역할은 아직 아무 것도 할 수 없습니다.

Naming tips

  • 이름은 대문자 영문(AUDITOR)으로 고정합니다. 코드에서 비교하는 키이기 때문입니다.
  • 설명(description)은 사람이 읽는 문구라 한글로 써도 됩니다.
  • 역할이 많아지면 역할 대신 세부 권한(permissions 테이블)을 도입하는 것을 검토하세요.
Protect a pageCall your own API
© Meerkit. All rights reserved.GitHub