mirror of
https://github.com/dadosfera/maestro.git
synced 2026-09-08 02:14:48 +00:00
63 lines
1.8 KiB
TypeScript
63 lines
1.8 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
Post,
|
|
Get,
|
|
HttpCode,
|
|
HttpStatus,
|
|
Inject,
|
|
Headers,
|
|
UseFilters,
|
|
} from '@nestjs/common';
|
|
import { 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 '../../authentication/user.decorator';
|
|
import { Metadata } from '@grpc/grpc-js';
|
|
|
|
@ApiTags('TermsOfUse')
|
|
@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,
|
|
@Headers('Dadosfera-Lang') language: string,
|
|
) {
|
|
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 });
|
|
}
|
|
}
|