From 6e6979cfe3660056cff6b9eabc194852234ac0a6 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Sat, 16 Jan 2021 20:59:48 +0100 Subject: [PATCH] Hotfix: Missing relation bug --- src/models/entities/User.ts | 12 ++++++++---- src/models/entities/UserGroup.ts | 3 ++- src/models/responses/ResponseUser.ts | 14 ++++++-------- src/models/responses/ResponseUserGroup.ts | 10 +++------- 4 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/models/entities/User.ts b/src/models/entities/User.ts index c9111ff..fc1b401 100644 --- a/src/models/entities/User.ts +++ b/src/models/entities/User.ts @@ -138,8 +138,10 @@ export class User extends Principal { if (!this.groups) { return returnPermissions; } for (let group of this.groups) { - for (let permission of group.permissions) { - returnPermissions.push(permission); + if (group.permissions) { + for (let permission of group.permissions) { + returnPermissions.push(permission); + } } } return returnPermissions; @@ -159,8 +161,10 @@ export class User extends Principal { if (!this.groups) { return returnPermissions; } for (let group of this.groups) { - for (let permission of group.permissions) { - returnPermissions.push(permission.toString()); + if (group.permissions) { + for (let permission of group.permissions) { + returnPermissions.push(permission.toString()); + } } } return Array.from(new Set(returnPermissions)); diff --git a/src/models/entities/UserGroup.ts b/src/models/entities/UserGroup.ts index 3ed826a..4d45a3f 100644 --- a/src/models/entities/UserGroup.ts +++ b/src/models/entities/UserGroup.ts @@ -4,6 +4,7 @@ import { IsString } from "class-validator"; import { ChildEntity, Column } from "typeorm"; +import { ResponsePrincipal } from '../responses/ResponsePrincipal'; import { ResponseUserGroup } from '../responses/ResponseUserGroup'; import { Principal } from './Principal'; @@ -33,7 +34,7 @@ export class UserGroup extends Principal { /** * Turns this entity into it's response class. */ - public toResponse(): ResponseUserGroup { + public toResponse(): ResponsePrincipal { return new ResponseUserGroup(this); } } \ No newline at end of file diff --git a/src/models/responses/ResponseUser.ts b/src/models/responses/ResponseUser.ts index 205d766..103e48d 100644 --- a/src/models/responses/ResponseUser.ts +++ b/src/models/responses/ResponseUser.ts @@ -6,8 +6,8 @@ import { IsString } from "class-validator"; import { User } from '../entities/User'; +import { UserGroup } from '../entities/UserGroup'; import { ResponsePrincipal } from './ResponsePrincipal'; -import { ResponseUserGroup } from './ResponseUserGroup'; /** * Defines the user response. @@ -66,7 +66,7 @@ export class ResponseUser extends ResponsePrincipal { */ @IsArray() @IsOptional() - groups: ResponseUserGroup[]; + groups: UserGroup[]; /** * The user's permissions. @@ -90,12 +90,10 @@ export class ResponseUser extends ResponsePrincipal { this.username = user.username; this.enabled = user.enabled; this.profilePic = user.profilePic; - if (user.groups) { - for (let group of user.groups) { - this.groups.push(group.toResponse()); - } - } + this.groups = user.groups; this.permissions = user.allPermissions; - this.groups.forEach(function (g) { delete g.permissions }); + if (this.groups) { + this.groups.forEach(function (g) { delete g.permissions }); + } } } diff --git a/src/models/responses/ResponseUserGroup.ts b/src/models/responses/ResponseUserGroup.ts index 6f0dab1..6dd428d 100644 --- a/src/models/responses/ResponseUserGroup.ts +++ b/src/models/responses/ResponseUserGroup.ts @@ -1,6 +1,6 @@ import { IsArray, IsNotEmpty, IsOptional, IsString } from "class-validator"; +import { Permission } from '../entities/Permission'; import { UserGroup } from '../entities/UserGroup'; -import { ResponsePermission } from './ResponsePermission'; import { ResponsePrincipal } from './ResponsePrincipal'; /** @@ -26,7 +26,7 @@ export class ResponseUserGroup extends ResponsePrincipal { */ @IsArray() @IsOptional() - permissions: ResponsePermission[]; + permissions: Permission[]; /** * Creates a ResponseUserGroup object from a userGroup. @@ -36,10 +36,6 @@ export class ResponseUserGroup extends ResponsePrincipal { super(group); this.name = group.name; this.description = group.description; - if (group.permissions) { - for (let permission of group.permissions) { - this.permissions.push(permission.toResponse()); - } - } + this.permissions = group.permissions; } }