mirror of
https://github.com/dadosfera/maestro.git
synced 2026-11-14 20:19:08 +00:00
FEAT: Roles WIP
This commit is contained in:
@@ -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 {}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user