From b84621f9b2b7161a5ad4f0b194264e9df3e65dbf Mon Sep 17 00:00:00 2001 From: dujinkim Date: Tue, 8 Jul 2025 11:23:40 +0000 Subject: (대표님) 20250708 미반영분 커밋 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hooks/use-auth-role.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 hooks/use-auth-role.ts (limited to 'hooks') diff --git a/hooks/use-auth-role.ts b/hooks/use-auth-role.ts new file mode 100644 index 00000000..3f3efc1a --- /dev/null +++ b/hooks/use-auth-role.ts @@ -0,0 +1,28 @@ +// hooks/use-auth-role.ts +import { useSession } from "next-auth/react" + +export function useAuthRole() { + const { data: session, status } = useSession() + + return { + user: session?.user, + isLoading: status === "loading", + isAuthenticated: !!session?.user, + roles: session?.user?.roles ?? [], + + // 특정 키워드가 포함된 role이 있는지 체크 + hasRole: (keyword: string) => + session?.user?.roles?.some(role => role.includes(keyword)) ?? false, + + // 정확한 role name으로 체크 + hasExactRole: (roleName: string) => + session?.user?.roles?.includes(roleName) ?? false, + + // 편의 메서드들 + hasPeriodicEvaluationRole: () => + session?.user?.roles?.some(role => role.includes('정기평가')) ?? false, + + hasAdminRole: () => + session?.user?.roles?.some(role => role.includes('admin') || role.includes('관리자')) ?? false, + } +} \ No newline at end of file -- cgit v1.2.3