From dcfe7c0ae59d794601ce42e263e9deea5beb58a4 Mon Sep 17 00:00:00 2001 From: Mads Apollo <121861974+MadsApollo@users.noreply.github.com> Date: Thu, 26 Sep 2024 13:49:51 +0200 Subject: [PATCH] Feature/iot 1583 move application (#265) * Added endpoint for application admins, to get a slimmer version of permissions. * Cleanup --------- Co-authored-by: Frederik Christ Vestergaard --- .../user-management/permission.controller.ts | 23 +++++++++++++++++++ .../list-all-permissions-slim-response.dto.ts | 7 ++++++ 2 files changed, 30 insertions(+) create mode 100644 src/entities/dto/list-all-permissions-slim-response.dto.ts diff --git a/src/controllers/user-management/permission.controller.ts b/src/controllers/user-management/permission.controller.ts index 93c3b4df..349b7f55 100644 --- a/src/controllers/user-management/permission.controller.ts +++ b/src/controllers/user-management/permission.controller.ts @@ -50,6 +50,7 @@ import { OrganizationService } from "@services/user-management/organization.serv import { Organization } from "@entities/organization.entity"; import { User } from "@entities/user.entity"; import { ApiAuth } from "@auth/swagger-auth-decorator"; +import { ListAllPermissionsSlimResponseDto } from "@dto/list-all-permissions-slim-response.dto"; @UseGuards(JwtAuthGuard, RolesGuard) @ApiAuth() @@ -183,6 +184,28 @@ export class PermissionController { return this.permissionService.getAllPermissions(query); } + @Get("/applicationAdmin") + @ApiOperation({ summary: "Get list of all permissions for application admins" }) + async getAllPermissionsWithApplicationAdmin( + @Req() req: AuthenticatedRequest, + @Query() query?: ListAllPermissionsDto + ): Promise { + if (!req.user.permissions.isGlobalAdmin && query.organisationId === undefined) { + const allowedOrganizations = req.user.permissions.getAllOrganizationsWithApplicationAdmin(); + const permissions = await this.permissionService.getAllPermissionsInOrganizations(allowedOrganizations, query); + return { + count: permissions.count, + data: permissions.data.map(p => ({ + id: p.id, + name: p.name, + automaticallyAddNewApplications: p.automaticallyAddNewApplications, + organization: p.organization, + })), + }; + } + return this.permissionService.getAllPermissions(query); + } + @Get("getAllPermissionsWithoutUsers") @ApiOperation({ summary: "Get list of all permissions without include users" }) async getAllPermissionsWithoutUsers( diff --git a/src/entities/dto/list-all-permissions-slim-response.dto.ts b/src/entities/dto/list-all-permissions-slim-response.dto.ts new file mode 100644 index 00000000..73942cae --- /dev/null +++ b/src/entities/dto/list-all-permissions-slim-response.dto.ts @@ -0,0 +1,7 @@ +import { Permission } from "@entities/permissions/permission.entity"; +import { ListAllEntitiesResponseDto } from "./list-all-entities-response.dto"; + +export type PermissionsSlimDto = Pick & { + organization: { id: number }; +}; +export class ListAllPermissionsSlimResponseDto extends ListAllEntitiesResponseDto {}