mirror of
https://github.com/dadosfera/maestro.git
synced 2026-09-05 06:04:49 +00:00
68 lines
2.1 KiB
TypeScript
68 lines
2.1 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
Post,
|
|
Get,
|
|
HttpCode,
|
|
HttpStatus,
|
|
Inject,
|
|
Headers,
|
|
UseFilters,
|
|
} from '@nestjs/common';
|
|
import { ApiHeaders, ApiTags } from '@nestjs/swagger';
|
|
import { TermsOfUseAcceptRequest } from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces/messages';
|
|
|
|
import { TermsOfUseClientService } from './termsOfUse.service';
|
|
import { DadosferaLogger } from '@dadosfera/dadosfera-logs';
|
|
|
|
import { GrpcToHttpExceptionFilter } from '../../error/grpc-to-http-exception.filter';
|
|
import { RequestUser, User } from '../../decorators/user.decorator';
|
|
import { Metadata } from '@grpc/grpc-js';
|
|
import { Language } from 'src/decorators/language.decorator';
|
|
import { LanguageEnum } from 'src/utils/languages.enum';
|
|
import { ApiInternalOnlyController } from 'src/decorators/swagger.decorator';
|
|
|
|
@ApiInternalOnlyController()
|
|
@ApiTags('TermsOfUse')
|
|
@ApiHeaders([{ name: 'dadosfera-lang', enum: LanguageEnum, required: false }])
|
|
@UseFilters(new GrpcToHttpExceptionFilter())
|
|
@Controller('terms-of-use')
|
|
export class TermsOfUseController {
|
|
logger: DadosferaLogger;
|
|
|
|
constructor(
|
|
@Inject(DadosferaLogger)
|
|
dadosferaLogger: DadosferaLogger,
|
|
private termsOfUseClient: TermsOfUseClientService,
|
|
) {
|
|
this.logger = dadosferaLogger.logger;
|
|
}
|
|
|
|
@Get('token')
|
|
async getToken(
|
|
@User({ required: true }) user: RequestUser,
|
|
@Language() language: LanguageEnum,
|
|
) {
|
|
this.logger.info('/terms-of-use - get token');
|
|
const metadata = new Metadata();
|
|
metadata.add('language', language || 'pt-br');
|
|
|
|
return this.termsOfUseClient.getToken({ userId: user.user_id }, metadata);
|
|
}
|
|
|
|
@Post('accept')
|
|
@HttpCode(HttpStatus.OK)
|
|
async accept(@Body() body: TermsOfUseAcceptRequest, @Headers() headers) {
|
|
this.logger.info('/terms-of-use - accept');
|
|
|
|
const { token } = body;
|
|
const fingerprint = {
|
|
ip: process.env.ENV !== 'local' ? headers['x-forwarded-for'] : '0.0.0.0',
|
|
port: process.env.ENV !== 'local' ? headers['x-forwarded-port'] : '00000',
|
|
userAgent: headers['user-agent'],
|
|
};
|
|
|
|
return this.termsOfUseClient.accept({ token, fingerprint });
|
|
}
|
|
}
|