import { useAuth } from '../contexts/AuthContext';
import { useCallback } from 'react';

export const usePermissions = () => {
  const { user } = useAuth();

  // Envolvemos la función en useCallback.
  // Su dependencia es [user], por lo que la función solo se
  // volverá a crear si el objeto 'user' cambia (ej. al iniciar/cerrar sesión).
  const tienePermiso = useCallback((codigoPermisoRequerido: string): boolean => {
    if (!user) {
      return false;
    }
    if (user.esSuperAdmin) {
      return true;
    }
    return user.permissions?.includes(codigoPermisoRequerido) ?? false;
  }, [user]);

  return {
    tienePermiso,
    isSuperAdmin: user?.esSuperAdmin ?? false,
    idPerfil: user?.idPerfil ?? 0,
    currentUser: user
  };
};