import {
  CanActivate,
  ExecutionContext,
  ForbiddenException,
  Injectable,
} from '@nestjs/common';
import { UserStatus } from '../constants/enums';
import type { JwtUserPayload } from '../../auth/jwt.types';

@Injectable()
export class UserActiveGuard implements CanActivate {
  canActivate(context: ExecutionContext): boolean {
    const req = context.switchToHttp().getRequest<{
      user: JwtUserPayload & { status?: UserStatus };
    }>();
    const user = req.user;
    if (user && user.status === UserStatus.INACTIVE) {
      throw new ForbiddenException('Account is inactive');
    }
    return true;
  }
}
