diff options
Diffstat (limited to 'hooks')
| -rw-r--r-- | hooks/use-auth-role.ts | 28 |
1 files changed, 28 insertions, 0 deletions
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 |
