import { Controller, Get, Inject } from '@nestjs/common'; import { ApiHeader, ApiOkResponse, ApiTags } from '@nestjs/swagger'; import { DadosferaLogger } from '@dadosfera/dadosfera-logs'; import { Authenticated } from 'src/decorators/authentication.decorator'; import { PermissionUsages } from 'src/authentication/permissions.enum'; import { RequestUser, User } from 'src/decorators/user.decorator'; import { LanguageEnum } from 'src/utils/languages.enum'; import { GetPublicPermissionsRes } from './dto/entities'; import { PermissionsService } from './permissions.service'; import { Language } from 'src/decorators/language.decorator'; import { ApiInternalOnlyController } from 'src/decorators/swagger.decorator'; @ApiInternalOnlyController() @ApiTags('Permissions') @Authenticated() @Controller('permissions') @ApiHeader({ name: 'dadosfera-lang', enum: LanguageEnum, required: false, description: 'Defaults to pt-br', }) export class PermissionsController { logger: DadosferaLogger; constructor( @Inject(DadosferaLogger) dadosferaLogger: DadosferaLogger, private permissionsService: PermissionsService, ) { this.logger = dadosferaLogger.logger; } @Get() @ApiOkResponse({ type: GetPublicPermissionsRes }) getPublicPermissions( @User() user: RequestUser, @Language() language: LanguageEnum, ) { this.logger.info('getPublicPermissions', { user }); const permissionGroups = this.permissionsService.getPermissionsGrouped( PermissionUsages.PUBLIC, language, ); return { permissionGroups }; } }