summaryrefslogtreecommitdiff
path: root/hooks/use-auth-role.ts
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,
  }
}