parent
8379c3e29c
commit
0c9867d706
|
@ -8,6 +8,7 @@ import { UpdateUserGroup } from '../models/actions/update/UpdateUserGroup';
|
|||
import { UserGroup } from '../models/entities/UserGroup';
|
||||
import { ResponseEmpty } from '../models/responses/ResponseEmpty';
|
||||
import { ResponseUserGroup } from '../models/responses/ResponseUserGroup';
|
||||
import { ResponseUserGroupPermissions } from '../models/responses/ResponseUserGroupPermissions';
|
||||
import { PermissionController } from './PermissionController';
|
||||
|
||||
|
||||
|
@ -41,6 +42,18 @@ export class UserGroupController {
|
|||
return this.userGroupsRepository.findOne({ id: id }, { relations: ["permissions"] });
|
||||
}
|
||||
|
||||
@Get('/:id/permissions')
|
||||
@Authorized("USERGROUP:GET")
|
||||
@ResponseSchema(ResponseUserGroupPermissions)
|
||||
@ResponseSchema(UserGroupNotFoundError, { statusCode: 404 })
|
||||
@OnUndefined(UserGroupNotFoundError)
|
||||
@OpenAPI({ description: 'Lists all permissions granted to the group as permission response objects.' })
|
||||
async getPermissions(@Param('id') id: number) {
|
||||
let group = await this.userGroupsRepository.findOne({ id: id }, { relations: ['permissions', 'permissions.principal'] })
|
||||
if (!group) { throw new UserGroupNotFoundError(); }
|
||||
return new ResponseUserGroupPermissions(group);
|
||||
}
|
||||
|
||||
@Post()
|
||||
@Authorized("USERGROUP:CREATE")
|
||||
@ResponseSchema(UserGroup)
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
import {
|
||||
IsArray,
|
||||
IsOptional
|
||||
} from "class-validator";
|
||||
import { UserGroup } from '../entities/UserGroup';
|
||||
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||
import { IResponse } from './IResponse';
|
||||
import { ResponsePermission } from './ResponsePermission';
|
||||
|
||||
/**
|
||||
* Defines the group permission response (get /api/groups/:id/permissions).
|
||||
*/
|
||||
export class ResponseUserGroupPermissions implements IResponse {
|
||||
/**
|
||||
* The responseType.
|
||||
* This contains the type of class/entity this response contains.
|
||||
*/
|
||||
responseType: ResponseObjectType = ResponseObjectType.USERPERMISSIONS;
|
||||
|
||||
/**
|
||||
* The permissions directly granted to the group.
|
||||
*/
|
||||
@IsArray()
|
||||
@IsOptional()
|
||||
directlyGranted: ResponsePermission[] = new Array<ResponsePermission>();
|
||||
|
||||
/**
|
||||
* Is just here for compatability.
|
||||
*/
|
||||
@IsArray()
|
||||
@IsOptional()
|
||||
inherited: ResponsePermission[] = new Array<ResponsePermission>();
|
||||
|
||||
/**
|
||||
* Creates a ResponseUserPermissions object from a group.
|
||||
* @param group The group the response shall be build for.
|
||||
*/
|
||||
public constructor(group: UserGroup) {
|
||||
for (let permission of group.permissions) {
|
||||
this.directlyGranted.push(permission.toResponse());
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue