diff --git a/src/controllers/UserController.ts b/src/controllers/UserController.ts
index 1b77743..c87536e 100644
--- a/src/controllers/UserController.ts
+++ b/src/controllers/UserController.ts
@@ -29,7 +29,7 @@ export class UserController {
@OpenAPI({ description: 'Lists all users.
This includes their groups and permissions directly granted to them (if existing/associated).' })
async getAll() {
let responseUsers: ResponseUser[] = new Array();
- const users = await this.userRepository.find({ relations: ['permissions', 'groups'] });
+ const users = await this.userRepository.find({ relations: ['permissions', 'groups', 'groups.permissions'] });
users.forEach(user => {
responseUsers.push(new ResponseUser(user));
});
@@ -43,7 +43,7 @@ export class UserController {
@OnUndefined(UserNotFoundError)
@OpenAPI({ description: 'Lists all information about the user whose id got provided.
Please remember that only permissions granted directly to the user will show up here, not permissions inherited from groups.' })
async getOne(@Param('id') id: number) {
- let user = await this.userRepository.findOne({ id: id }, { relations: ['permissions', 'groups'] })
+ let user = await this.userRepository.findOne({ id: id }, { relations: ['permissions', 'groups', 'groups.permissions'] })
if (!user) { throw new UserNotFoundError(); }
return new ResponseUser(user);
}
diff --git a/src/models/entities/User.ts b/src/models/entities/User.ts
index 00c18e4..94e091c 100644
--- a/src/models/entities/User.ts
+++ b/src/models/entities/User.ts
@@ -132,18 +132,20 @@ export class User extends Principal {
* Resolves all permissions granted to this user through groups or directly to the string enum format.
*/
public get allPermissions(): string[] {
- let allPermissions = new Array();
- for (let permission in this.permissions) {
- allPermissions.push(permission.toString());
+ let returnPermissions: string[] = new Array();
+
+ if (!this.permissions) { return returnPermissions; }
+ for (let permission of this.permissions) {
+ returnPermissions.push(permission.toString());
}
+ if (!this.groups) { return returnPermissions; }
for (let group of this.groups) {
- for (let permission in group.permissions) {
- allPermissions.push(permission.toString());
+ for (let permission of group.permissions) {
+ returnPermissions.push(permission.toString());
}
}
- console.log(allPermissions)
- return Array.from(new Set(allPermissions));
+ return Array.from(new Set(returnPermissions));
}
/**
diff --git a/src/models/responses/ResponseUser.ts b/src/models/responses/ResponseUser.ts
index ff25c6a..3da5434 100644
--- a/src/models/responses/ResponseUser.ts
+++ b/src/models/responses/ResponseUser.ts
@@ -91,5 +91,6 @@ export class ResponseUser extends ResponsePrincipal {
this.profilePic = user.profilePic;
this.groups = user.groups;
this.permissions = user.allPermissions;
+ this.groups.forEach(function (g) { delete g.permissions });
}
}