Add a role
기본 4종 외에 새 역할을 추가하는 순서입니다.
기본 역할(MASTER, OWNER, VIEWER, WRITER) 외에 AUDITOR(감사 조회 전용) 역할을 추가한다고 가정하고 따라 합니다.
1. Add it to the database
역할은 roles 테이블의 한 행입니다. 마이그레이션으로 추가합니다.
| id | name | description |
|---|---|---|
| 5 | AUDITOR | 감사 로그 조회 전용 |
백엔드는 아직 구현 전이라, 실제 마이그레이션 명령은 구현 후 이 가이드에 맞춰 채웁니다.
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 테이블)을 도입하는 것을 검토하세요.
