import { CanActivate, ExecutionContext, ForbiddenException, Injectable } from '@nestjs/common';

/**
 * Tillåter åtkomst om användaren är admin eller har isPremium = true.
 * Används som alternativ till @Roles('admin') där premium-användare ska ha samma rättighet.
 */
@Injectable()
export class PremiumOrAdminGuard implements CanActivate {
  canActivate(context: ExecutionContext): boolean {
    const { user } = context.switchToHttp().getRequest();

    if (user?.role === 'admin' || user?.isPremium === true) {
      return true;
    }

    throw new ForbiddenException('Denna funktion kräver premiumkonto eller admin-behörighet.');
  }
}
