"use client";

import { createContext, useContext } from "react";

export type RoleValue = "super_admin" | "admin" | "user";

export interface CurrentUser {
  id: string;
  username: string;
  role: RoleValue;
  displayName: string | null;
  impersonating?: boolean;
}

export const ROLE_LABELS: Record<RoleValue, string> = {
  super_admin: "Super Admin",
  admin: "Admin",
  user: "Utilisateur",
};

const UserContext = createContext<CurrentUser | null>(null);

export const UserProvider = UserContext.Provider;

export function useCurrentUser(): CurrentUser {
  const user = useContext(UserContext);
  if (!user) {
    // Le layout garantit qu'un utilisateur est présent avant le rendu des pages.
    throw new Error("useCurrentUser doit être utilisé dans le layout authentifié");
  }
  return user;
}
