Merge pull request 'usergroups/permissions endpoint feature/143-usergroup_permissions_endpoint' (#144) from feature/143-usergroup_permissions_endpoint into dev
Reviewed-on: #144
This commit is contained in:
commit
a30a342e00
@ -8,6 +8,7 @@ import { UpdateUserGroup } from '../models/actions/update/UpdateUserGroup';
|
|||||||
import { UserGroup } from '../models/entities/UserGroup';
|
import { UserGroup } from '../models/entities/UserGroup';
|
||||||
import { ResponseEmpty } from '../models/responses/ResponseEmpty';
|
import { ResponseEmpty } from '../models/responses/ResponseEmpty';
|
||||||
import { ResponseUserGroup } from '../models/responses/ResponseUserGroup';
|
import { ResponseUserGroup } from '../models/responses/ResponseUserGroup';
|
||||||
|
import { ResponseUserGroupPermissions } from '../models/responses/ResponseUserGroupPermissions';
|
||||||
import { PermissionController } from './PermissionController';
|
import { PermissionController } from './PermissionController';
|
||||||
|
|
||||||
|
|
||||||
@ -25,20 +26,37 @@ export class UserGroupController {
|
|||||||
|
|
||||||
@Get()
|
@Get()
|
||||||
@Authorized("USERGROUP:GET")
|
@Authorized("USERGROUP:GET")
|
||||||
@ResponseSchema(UserGroup, { isArray: true })
|
@ResponseSchema(ResponseUserGroup, { isArray: true })
|
||||||
@OpenAPI({ description: 'Lists all groups. <br> The information provided might change while the project continues to evolve.' })
|
@OpenAPI({ description: 'Lists all groups. <br> The information provided might change while the project continues to evolve.' })
|
||||||
getAll() {
|
async getAll() {
|
||||||
return this.userGroupsRepository.find({ relations: ["permissions"] });
|
let responseGroups: ResponseUserGroup[] = new Array<ResponseUserGroup>();
|
||||||
|
const groups = await this.userGroupsRepository.find({ relations: ['permissions'] });
|
||||||
|
groups.forEach(group => {
|
||||||
|
responseGroups.push(group.toResponse());
|
||||||
|
});
|
||||||
|
return responseGroups;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Get('/:id')
|
@Get('/:id')
|
||||||
@Authorized("USERGROUP:GET")
|
@Authorized("USERGROUP:GET")
|
||||||
@ResponseSchema(UserGroup)
|
@ResponseSchema(ResponseUserGroup)
|
||||||
@ResponseSchema(UserGroupNotFoundError, { statusCode: 404 })
|
@ResponseSchema(UserGroupNotFoundError, { statusCode: 404 })
|
||||||
@OnUndefined(UserGroupNotFoundError)
|
@OnUndefined(UserGroupNotFoundError)
|
||||||
@OpenAPI({ description: 'Lists all information about the group whose id got provided. <br> The information provided might change while the project continues to evolve.' })
|
@OpenAPI({ description: 'Lists all information about the group whose id got provided. <br> The information provided might change while the project continues to evolve.' })
|
||||||
getOne(@Param('id') id: number) {
|
async getOne(@Param('id') id: number) {
|
||||||
return this.userGroupsRepository.findOne({ id: id }, { relations: ["permissions"] });
|
return await (await (this.userGroupsRepository.findOne({ id: id }, { relations: ["permissions"] }))).toResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@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()
|
@Post()
|
||||||
@ -54,7 +72,8 @@ export class UserGroupController {
|
|||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.userGroupsRepository.save(userGroup);
|
userGroup = await this.userGroupsRepository.save(userGroup);
|
||||||
|
return (await (this.userGroupsRepository.findOne({ id: userGroup.id }, { relations: ["permissions"] }))).toResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Put('/:id')
|
@Put('/:id')
|
||||||
|
@ -2,7 +2,6 @@ import { IsArray, IsNotEmpty, IsOptional, IsString } from "class-validator";
|
|||||||
import { UserGroup } from '../entities/UserGroup';
|
import { UserGroup } from '../entities/UserGroup';
|
||||||
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
import { IResponse } from './IResponse';
|
import { IResponse } from './IResponse';
|
||||||
import { ResponsePermission } from './ResponsePermission';
|
|
||||||
import { ResponsePrincipal } from './ResponsePrincipal';
|
import { ResponsePrincipal } from './ResponsePrincipal';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,7 +33,7 @@ export class ResponseUserGroup extends ResponsePrincipal implements IResponse {
|
|||||||
*/
|
*/
|
||||||
@IsArray()
|
@IsArray()
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
permissions: ResponsePermission[];
|
permissions: string[] = new Array<string>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a ResponseUserGroup object from a userGroup.
|
* Creates a ResponseUserGroup object from a userGroup.
|
||||||
@ -46,7 +45,7 @@ export class ResponseUserGroup extends ResponsePrincipal implements IResponse {
|
|||||||
this.description = group.description;
|
this.description = group.description;
|
||||||
if (group.permissions) {
|
if (group.permissions) {
|
||||||
for (let permission of group.permissions) {
|
for (let permission of group.permissions) {
|
||||||
this.permissions.push(permission.toResponse());
|
this.permissions.push(permission.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
43
src/models/responses/ResponseUserGroupPermissions.ts
Normal file
43
src/models/responses/ResponseUserGroupPermissions.ts
Normal file
@ -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…
x
Reference in New Issue
Block a user