diff --git a/src/controllers/PermissionController.ts b/src/controllers/PermissionController.ts index 663343c..990ad62 100644 --- a/src/controllers/PermissionController.ts +++ b/src/controllers/PermissionController.ts @@ -1,6 +1,6 @@ import { Authorized, 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 { Repository, getConnectionManager } from 'typeorm'; import { PermissionIdsNotMatchingError, PermissionNeedsPrincipalError, PermissionNotFoundError } from '../errors/PermissionErrors'; import { PrincipalNotFoundError } from '../errors/PrincipalErrors'; import { CreatePermission } from '../models/actions/create/CreatePermission'; @@ -27,9 +27,16 @@ export class PermissionController { @Authorized("PERMISSION:GET") @ResponseSchema(ResponsePermission, { isArray: true }) @OpenAPI({ description: 'Lists all permissions for all users and groups.' }) - async getAll() { + async getAll(@QueryParam("page", { required: false }) page: number, @QueryParam("page_size", { required: false }) page_size: number = 100) { let responsePermissions: ResponsePermission[] = new Array(); - const permissions = await this.permissionRepository.find({ relations: ['principal'] }); + let permissions: Array; + + if (page) { + permissions = await this.permissionRepository.find({ relations: ['principal'], skip: page * page_size, take: page_size }); + } else { + permissions = await this.permissionRepository.find({ relations: ['principal'] }); + } + permissions.forEach(permission => { responsePermissions.push(new ResponsePermission(permission)); });