FEAT: Roles WIP

This commit is contained in:
Gabriel Rosa
2022-07-14 10:23:04 -03:00
parent d5cd562860
commit 14cfc46492
15 changed files with 247 additions and 116 deletions
@@ -3,7 +3,7 @@ import { Test, TestingModule } from '@nestjs/testing';
import { DucClient } from 'src/clients/duc/client.config';
import { PermissionsController } from './permissions.controller';
import { DadosferaLogger } from 'dadosfera-logs';
import { PermissionsClientService } from './permissions.service';
import { PermissionsService } from './permissions.service';
const ducClient = new DucClient();
@@ -21,7 +21,7 @@ describe('PermissionsController', () => {
]),
],
controllers: [PermissionsController],
providers: [DadosferaLogger, PermissionsClientService],
providers: [DadosferaLogger, PermissionsService],
}).compile();
controller = module.get<PermissionsController>(PermissionsController);
@@ -2,13 +2,13 @@ import { Controller, Get, Headers, Inject } from '@nestjs/common';
import { ApiOkResponse, ApiTags } from '@nestjs/swagger';
import { DadosferaLogger } from 'dadosfera-logs';
import { PermissionUsages } from 'src/authentication/permissions.enum';
import { User } from 'src/authentication/user.decorator';
import { RequestUser, User } from 'src/authentication/user.decorator';
import {
GetPublicPermissionsHeader,
GetPublicPermissionsRes,
LanguageEnum,
} from './dto/entities';
import { PermissionsClientService } from './permissions.service';
import { PermissionsService } from './permissions.service';
@ApiTags('Permissions')
@Controller('permissions')
@@ -18,7 +18,7 @@ export class PermissionsController {
constructor(
@Inject(DadosferaLogger)
dadosferaLogger: DadosferaLogger,
private permissionsService: PermissionsClientService,
private permissionsService: PermissionsService,
) {
this.logger = dadosferaLogger.logger;
}
@@ -26,13 +26,13 @@ export class PermissionsController {
@Get()
@ApiOkResponse({ type: GetPublicPermissionsRes })
getPublicPermissions(
@User() user,
@User() user: RequestUser,
@Headers() headers: GetPublicPermissionsHeader,
) {
this.logger.info('getPublicPermissions', { user });
const language: LanguageEnum = headers['dadosfera-lang'];
return this.permissionsService.getPermissions(
return this.permissionsService.getPermissionsGrouped(
PermissionUsages.PUBLIC,
language,
);
@@ -2,7 +2,7 @@ import { Module } from '@nestjs/common';
import { ClientsModule } from '@nestjs/microservices';
import { DadosferaLogger } from 'dadosfera-logs';
import { PermissionsClientService } from './permissions.service';
import { PermissionsService } from './permissions.service';
import { DucClient } from '../../clients/duc/client.config';
import { PermissionsController } from './permissions.controller';
@@ -18,7 +18,8 @@ const ducClient = new DucClient();
},
]),
],
providers: [PermissionsClientService, DadosferaLogger],
providers: [PermissionsService, DadosferaLogger],
controllers: [PermissionsController],
exports: [PermissionsService],
})
export class PermissionsModule {}
+24 -7
View File
@@ -12,22 +12,21 @@ import { PermissionsProtoService as PermissionsServiceInterface } from 'protospa
import { InjectPermissionsRequest } from 'protospack-v2/dist/lib/Duc/interfaces/messages';
import { DadosferaLogger } from 'dadosfera-logs';
import {
PermissionsObjectPermission,
PERMISSIONS,
PermissionsObject,
PermissionUsages,
PermissionsObjectGroup,
PermissionsObjectPermissionTranslated,
} from '../../authentication/permissions.enum';
import ErrorBuilder from '../../utils/ErrorBuilder';
import { LanguageEnum, PermissionDto, PermissionGroup } from './dto/entities';
@Injectable()
export class PermissionsClientService
export class PermissionsService
implements OnModuleInit, OnApplicationBootstrap
{
logger: any;
private permissionsService: PermissionsServiceInterface;
private permissionsClientService: PermissionsServiceInterface;
constructor(
@Inject(DadosferaLogger)
dadosferaLogger: DadosferaLogger,
@@ -37,7 +36,7 @@ export class PermissionsClientService
}
onModuleInit() {
this.permissionsService =
this.permissionsClientService =
this.grpcClient.getService<PermissionsServiceInterface>(
ProtoServices.PermissionsProtoService,
);
@@ -71,10 +70,10 @@ export class PermissionsClientService
this.logger.info('InjectPermissions');
return lastValueFrom(
this.permissionsService.InjectPermissions({ permissions }),
this.permissionsClientService.InjectPermissions({ permissions }),
);
}
getPermissions(
getPermissionsGrouped(
permissionUsage?: PermissionUsages,
language: LanguageEnum = LanguageEnum.ptbr,
): PermissionGroup[] {
@@ -97,4 +96,22 @@ export class PermissionsClientService
}
return groups;
}
getAllPermissions(language: LanguageEnum = LanguageEnum.ptbr) {
const permissions: PermissionsObjectPermissionTranslated[] = [];
for (const key in PERMISSIONS) {
const permissionGroup: PermissionsObjectGroup = PERMISSIONS[key];
const permissionGroupPermissions: PermissionsObjectPermissionTranslated[] =
Object.values(permissionGroup.permissions).map((p) => ({
...p,
name: p.name[language],
}));
permissions.concat(permissionGroupPermissions);
}
return permissions;
}
getPermissionsBySeqId(seqIds: number[]) {
const permissionGroupPermissions = this.getAllPermissions();
return permissionGroupPermissions.filter((p) => seqIds.includes(p.seqid));
}
}