blob: 3f3efc1af5cd11aee9e472f715b50c7c63769341 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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,
}
}
|