FEAT: internationalization of permissions

This commit is contained in:
Gabriel Rosa
2022-07-08 19:03:32 -03:00
parent 4cff593695
commit 730fab8ed1
14 changed files with 469 additions and 290 deletions
+2 -2
View File
@@ -10,7 +10,7 @@ import {
} from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { AuthenticateCondition } from '../../authentication/authentication.decorator';
import { Permissions } from '../../authentication/permissions.enum';
import { PERMISSIONS } from '../../authentication/permissions.enum';
import { CatalogService } from './catalog.service';
import { DadosferaLogger } from 'dadosfera-logs';
@@ -32,7 +32,7 @@ import { DadosferaLogger } from 'dadosfera-logs';
action = req.method;
}
return user.permissions.includes(Permissions.CATALOG[action].seqid);
return user.permissions.includes(PERMISSIONS.CATALOG[action].seqid);
})
export class CatalogController {
logger: any;
+3 -3
View File
@@ -12,7 +12,7 @@ import { InputsService } from './inputs.service';
import { DadosferaLogger } from 'dadosfera-logs';
import { InputsClientService } from 'src/clients/inputs/client.service';
import { UpdateInputRequest } from 'src/clients/inputs/interfaces';
import { Permissions } from '../../authentication/permissions.enum';
import { PERMISSIONS } from '../../authentication/permissions.enum';
import { AuthenticateCondition } from 'src/authentication/authentication.decorator';
import { ApiOkResponse, ApiTags } from '@nestjs/swagger';
import {
@@ -41,7 +41,7 @@ import {
break;
case 'PATCH':
action = 'UPDATE_PARTIAL';
action = 'UPDATE';
break;
default:
@@ -55,7 +55,7 @@ import {
action = 'GET_ENTITIES';
}
return user.permissions.includes(Permissions.INPUT[action].seqid);
return user.permissions.includes(PERMISSIONS.INPUT[action].seqid);
})
export class InputsController {
inputService: InputsService;
+2 -2
View File
@@ -12,7 +12,7 @@ import { Payload } from '@nestjs/microservices';
import { ApiTags } from '@nestjs/swagger';
import { OutputsClientService } from 'src/clients/outputs/client.service';
import { AuthenticateCondition } from 'src/authentication/authentication.decorator';
import { Permissions } from '../../authentication/permissions.enum';
import { PERMISSIONS } from '../../authentication/permissions.enum';
import { OutputsService } from './outputs.service';
import { DadosferaLogger } from 'dadosfera-logs';
@@ -34,7 +34,7 @@ import { DadosferaLogger } from 'dadosfera-logs';
action = req.method;
}
return user.permissions.includes(Permissions.OUTPUT[action].seqid);
return user.permissions.includes(PERMISSIONS.OUTPUT[action].seqid);
})
export class OutputsController {
logger: any;
+30
View File
@@ -0,0 +1,30 @@
import { ApiProperty } from '@nestjs/swagger';
export class PermissionDto {
@ApiProperty()
name: string;
@ApiProperty()
id: number;
}
export class PermissionGroup {
@ApiProperty()
title: string;
@ApiProperty({ type: [PermissionDto] })
permissions: PermissionDto[];
}
export class Permission {
@ApiProperty()
id: string;
@ApiProperty()
seqid: number;
@ApiProperty()
name: string;
@ApiProperty()
claim: string;
@ApiProperty()
createdAt: string;
@ApiProperty()
updatedAt: string;
}
+16 -3
View File
@@ -11,8 +11,14 @@ import { ProtoServices } from 'protospack-v2/dist/lib/Duc';
import { PermissionsProtoService as PermissionsServiceInterface } from 'protospack-v2/dist/lib/Duc/interfaces/write-service';
import { InjectPermissionsRequest } from 'protospack-v2/dist/lib/Duc/interfaces/messages';
import { DadosferaLogger } from 'dadosfera-logs';
import { Permissions } from '../../authentication/permissions.enum';
import {
Permission,
PERMISSIONS,
PermissionsObject,
PermissionUsages,
} from '../../authentication/permissions.enum';
import ErrorBuilder from '../../utils/ErrorBuilder';
import { PermissionGroup } from './dto/entities';
@Injectable()
export class PermissionsClientService
@@ -40,8 +46,8 @@ export class PermissionsClientService
async onApplicationBootstrap() {
this.logger.info('sending permissions to DUC...');
const permissions = Object.values(Permissions).flatMap((namespace) =>
Object.values(namespace),
const permissions = Object.values(PERMISSIONS).flatMap((namespace) =>
Object.values(namespace.permissions),
);
return this.injectPermissions({
@@ -67,4 +73,11 @@ export class PermissionsClientService
this.permissionsService.InjectPermissions({ permissions }),
);
}
getPublicPermissions() {
return this.getPermissions(PermissionUsages.PUBLIC);
}
getPermissions(permissionUsage?: PermissionUsages): PermissionGroup[] {
const groups: PermissionGroup[] = [];
return groups;
}
}
@@ -11,7 +11,7 @@ import {
import { ApiTags } from '@nestjs/swagger';
import { PipelinesClientService } from 'src/clients/pipelines/client.service';
import { AuthenticateCondition } from 'src/authentication/authentication.decorator';
import { Permissions } from '../../authentication/permissions.enum';
import { PERMISSIONS } from '../../authentication/permissions.enum';
import { PipelinesService } from './pipelines.service';
import { DadosferaLogger } from 'dadosfera-logs';
@@ -33,7 +33,7 @@ import { DadosferaLogger } from 'dadosfera-logs';
action = req.method;
}
return user.permissions.includes(Permissions.PIPELINE[action].seqid);
return user.permissions.includes(PERMISSIONS.PIPELINE[action].seqid);
})
export class PipelinesController {
logger: any;
+1 -15
View File
@@ -1,19 +1,5 @@
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
export class Permission {
@ApiProperty()
id: string;
@ApiProperty()
seqid: number;
@ApiProperty()
name: string;
@ApiProperty()
claim: string;
@ApiProperty()
createdAt: string;
@ApiProperty()
updatedAt: string;
}
import { Permission } from 'src/modules/permissions/dto/entities';
export class Role {
@ApiPropertyOptional({ type: [Permission] })
permissions: Permission[];
@@ -13,7 +13,7 @@ import { ApiTags } from '@nestjs/swagger';
import { TransformationsClientService } from 'src/clients/transformations/client.service';
import { IIdRequest } from 'src/clients/transformations/interfaces';
import { AuthenticateCondition } from 'src/authentication/authentication.decorator';
import { Permissions } from '../../authentication/permissions.enum';
import { PERMISSIONS } from '../../authentication/permissions.enum';
import { TransformationsService } from './transformations.service';
import { DadosferaLogger } from 'dadosfera-logs';
@@ -35,7 +35,7 @@ import { DadosferaLogger } from 'dadosfera-logs';
action = req.method;
}
return user.permissions.includes(Permissions.TRANSFORMATIONS[action].seqid);
return user.permissions.includes(PERMISSIONS.TRANSFORMATIONS[action].seqid);
})
export class TransformationsController {
logger: any;