import { defaultsForRole } from "@/app/(protected)/team-members/_components/team-member-permissions"; import type { TeamMemberRole } from "@/domain/team-members/types/team-member"; import { useAuthContext } from "@/providers/auth-context"; const TEAM_ROLES: readonly TeamMemberRole[] = ["Admin", "Scheduler", "Dispatcher"]; export interface CompletionTemplatePermissions { canCreate: boolean; canEdit: boolean; canDelete: boolean; } function teamRoles(userRoles: string | null | undefined): TeamMemberRole[] { const names = (userRoles ?? "").split(",").map((role) => role.trim().toLowerCase()); return TEAM_ROLES.filter((role) => names.includes(role.toLowerCase())); } /** * The signed-in user's session carries roles, not per-user permission overrides, so each key * resolves to the role default the Team Members screen and the server policy start from. */ export function completionTemplatePermissions( userRoles: string | null | undefined, ): CompletionTemplatePermissions { const granted = new Set(teamRoles(userRoles).flatMap((role) => [...defaultsForRole(role)])); return { canCreate: granted.has("createCompletionDocTemplates"), canEdit: granted.has("editCompletionDocTemplates"), canDelete: granted.has("deleteCompletionDocTemplates"), }; } export function useCompletionTemplatePermissions(): CompletionTemplatePermissions { const { user } = useAuthContext(); return completionTemplatePermissions(user?.userRoles); }