import { Injectable, UnauthorizedException } from '@nestjs/common';
import { PassportStrategy } from '@nestjs/passport';
import { ExtractJwt, Strategy } from 'passport-jwt';
import { UserService } from '../../user/user.service';
import { ConfigService } from '@nestjs/config';

@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
  constructor(
    private userService: UserService,
    private configService: ConfigService,
  ) {
    super({
      jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
      ignoreExpiration: false,
      secretOrKey: configService.get<string>('JWT_SECRET') ?? 'fallback-secret', // ✅ fixed
    });
    console.log('🔑 JWT Secret loaded:', !!configService.get('JWT_SECRET'));
  }

  async validate(payload: any) {
    // ✅ Trust the token — no DB lookup needed on every request
    return {
      id: payload.sub,
      email: payload.email,
      firstName: payload.firstName,
      lastName: payload.lastName,
      roleIds: payload.roleIds || [],
      roleNames: payload.roleNames || [],
      company_ids: payload.company_ids,  // ← ADD THIS!
      is_client: payload.is_client,       // ← ADD THIS!
    };
  }
}
