import {
CanActivate,
ExecutionContext,
HttpException,
HttpStatus,
Injectable,
} from '@nestjs/common';
import { Reflector } from '@nestjs/core';
import { I18nTranslations } from '../.generate/i18n.generated';
import { I18nContext } from 'nestjs-i18n';
import { ConfigService } from '@nestjs/config';
import { Configure } from '../config-schema';
@Injectable()
export class RejectRequestGuard implements CanActivate {
constructor(
private readonly reflector: Reflector,
private readonly cfg: ConfigService<Configure>
) {
}
async canActivate(ctx: ExecutionContext): Promise<boolean> {
if (!this.cfg.get('PREVIEW_MODE')) {
return true;
}
const i18n = I18nContext.current<I18nTranslations>();
const rejectRequest = this.reflector.getAllAndOverride('reject', [
ctx.getHandler(),
ctx.getClass(),
]);
if (!rejectRequest) {
return true;
}
throw new HttpException(
i18n.t('exception.preview.reject-this-request', {
lang: I18nContext.current().lang,
}),
HttpStatus.BAD_REQUEST
);
}
}