import { inject } from '@angular/core';
import { CanActivateFn, Router } from '@angular/router';
import { Auth } from '../services/auth';

/**
 * Guard générique basé sur le roleId de l'utilisateur.
 * Usage dans le routing:
 * {
 *   path: 'users',
 *   canActivate: [roleGuard],
 *   data: { roles: ['1', '2'] } // ids de rôles autorisés
 * }
 */
export const roleGuard: CanActivateFn = (route, state) => {
  const auth = inject(Auth);
  const router = inject(Router);

  const expectedRoles = (route.data?.['roles'] as string[] | undefined) ?? [];

  if (!auth.isAuthenticated()) {
    return router.parseUrl('/auth/login');
  }

  if (expectedRoles.length === 0) {
    // Si aucune contrainte, on laisse passer
    return true;
  }

  const ok = auth.hasAnyRoleId(expectedRoles);
  return ok ? true : router.parseUrl('/dashboard'); // ou une page 403 dédiée
};


