2.5 권한 기반 UI 노출 제어(빠른 액션/관리자 메뉴)
This commit is contained in:
16
src/app/components/QuickActions.tsx
Normal file
16
src/app/components/QuickActions.tsx
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
"use client";
|
||||||
|
import { usePermission } from "@/lib/usePermission";
|
||||||
|
|
||||||
|
export function QuickActions() {
|
||||||
|
const { can } = usePermission();
|
||||||
|
const canWrite = can("POST", "CREATE");
|
||||||
|
const isAdmin = can("ADMIN", "ADMINISTER") || can("BOARD", "MODERATE");
|
||||||
|
return (
|
||||||
|
<div style={{ display: "flex", gap: 8 }}>
|
||||||
|
{canWrite && <button>글쓰기</button>}
|
||||||
|
{isAdmin && <button>관리자</button>}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
|
import { QuickActions } from "@/app/components/QuickActions";
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home() {
|
||||||
return (
|
return (
|
||||||
<div className="">
|
<div className="">
|
||||||
|
<QuickActions />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
2.2 권한 enum/매핑 정의(리소스/액션) o
|
2.2 권한 enum/매핑 정의(리소스/액션) o
|
||||||
2.3 서버 권한 미들웨어 적용(API 보호 라우트 지정) o
|
2.3 서버 권한 미들웨어 적용(API 보호 라우트 지정) o
|
||||||
2.4 페이지/컴포넌트 가드 훅 구현(usePermission) o
|
2.4 페이지/컴포넌트 가드 훅 구현(usePermission) o
|
||||||
2.5 권한 기반 UI 노출 제어(빠른 액션/관리자 메뉴)
|
2.5 권한 기반 UI 노출 제어(빠른 액션/관리자 메뉴) o
|
||||||
|
|
||||||
[로그인/인증]
|
[로그인/인증]
|
||||||
3.1 로그인/가입 폼 검증(Zod) 및 오류 UX
|
3.1 로그인/가입 폼 검증(Zod) 및 오류 UX
|
||||||
|
|||||||
Reference in New Issue
Block a user