import { CanActivate, ExecutionContext, Injectable, UnauthorizedException } from '@nestjs/common';
import { Request } from 'express';
import { envs } from './config';

@Injectable()
export class AppTokenGuard implements CanActivate {
  canActivate(context: ExecutionContext): boolean {
    const request = context.switchToHttp().getRequest<Request>();
    const appToken = request.headers['x-app-key'];

    // Usar directamente el valor de envs en lugar de ConfigService
    const validToken = envs.appPublicToken;

    if (!validToken) {
      throw new UnauthorizedException('Application token not configured');
    }

    if (!appToken || typeof appToken !== 'string' || appToken !== validToken) {
      throw new UnauthorizedException('Invalid application token');
    }

    return true;
  }
}
