diff --git a/src/controllers/UserGroupController.ts b/src/controllers/UserGroupController.ts index 8a90d94..95c6ca3 100644 --- a/src/controllers/UserGroupController.ts +++ b/src/controllers/UserGroupController.ts @@ -1,4 +1,4 @@ -import { Body, Delete, Get, JsonController, OnUndefined, Param, Post, Put } from 'routing-controllers'; +import { Body, Delete, Get, JsonController, OnUndefined, Param, Post, Put, QueryParam } from 'routing-controllers'; import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi'; import { getConnectionManager, Repository } from 'typeorm'; import { EntityFromBody } from 'typeorm-routing-controllers-extensions'; @@ -6,6 +6,8 @@ import { UserGroupIdsNotMatchingError, UserGroupNotFoundError } from '../errors/ import { CreateUserGroup } from '../models/actions/CreateUserGroup'; import { UserGroup } from '../models/entities/UserGroup'; import { ResponseEmpty } from '../models/responses/ResponseEmpty'; +import { ResponseUserGroup } from '../models/responses/ResponseUserGroup'; +import { PermissionController } from './PermissionController'; @JsonController('/usergroups') @@ -71,17 +73,21 @@ export class UserGroupController { } @Delete('/:id') - @ResponseSchema(UserGroup) + @ResponseSchema(ResponseUserGroup) @ResponseSchema(ResponseEmpty, { statusCode: 204 }) @OnUndefined(204) @OpenAPI({ description: 'Delete a specified usergroup (if it exists).' }) - async remove(@Param("id") id: number) { + async remove(@Param("id") id: number, @QueryParam("force") force: boolean) { let group = await this.userGroupsRepository.findOne({ id: id }); - if (!group) { - return null; + if (!group) { return null; } + const responseGroup = await this.userGroupsRepository.findOne({ id: id }, { relations: ['permissions'] });; + + const permissionControler = new PermissionController(); + for (let permission of responseGroup.permissions) { + await permissionControler.remove(permission.id, true); } await this.userGroupsRepository.delete(group); - return group; + return new ResponseUserGroup(responseGroup); } }