import { CanActivate, ExecutionContext, ForbiddenException, Injectable } from '@nestjs/common';
import { RequestConSesion } from './erp-jwt.guard';
import { soporteHabilitado } from './sesion.types';

/**
 * El usuario puede usar el asistente: tiene SOP_IA_USAR, el privilegio del módulo SOPORTE_IA
 * del ERP. Como v_privilegios_usuario replica getMe, solo aparece si el módulo está en la
 * suscripción, el submódulo no fue excluido y el perfil lo tiene. Va DESPUÉS de ErpJwtGuard.
 */
@Injectable()
export class SoporteHabilitadoGuard implements CanActivate {
  canActivate(context: ExecutionContext): boolean {
    const req = context.switchToHttp().getRequest<RequestConSesion>();
    if (!req.sesion || !soporteHabilitado(req.sesion)) {
      throw new ForbiddenException(
        'Soporte IA no está habilitado para tu usuario. Consultalo con el administrador de tu empresa.',
      );
    }
    return true;
  }
}
