From 1cf35f016b0aeb0f1224648b301044b2ea76dc60 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Wed, 2 Dec 2020 19:34:43 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A7=20Permissions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/models/User.ts | 67 +++++++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 30 deletions(-) diff --git a/src/models/User.ts b/src/models/User.ts index b039d20..5f153b7 100644 --- a/src/models/User.ts +++ b/src/models/User.ts @@ -10,90 +10,90 @@ import { UserAction } from './UserAction'; @Entity() export class User { /** - * autogenerated unique id (primary key). - */ + * autogenerated unique id (primary key). + */ @PrimaryGeneratedColumn() @IsOptional() @IsInt() id: number; /** - * autogenerated uuid - */ + * autogenerated uuid + */ @IsOptional() @IsInt() @Generated("uuid") uuid: string; /** - * user email - */ + * user email + */ @IsEmail() email: string; /** - * username - */ + * username + */ @IsString() username: string; /** - * firstname - */ + * firstname + */ @IsString() @IsNotEmpty() firstname: string; /** - * middlename - */ + * middlename + */ @IsString() @IsOptional() middlename: string; /** - * lastname - */ + * lastname + */ @IsString() @IsNotEmpty() lastname: string; /** - * password - */ + * password + */ @IsString() @IsNotEmpty() password: string; /** - * permissions - */ + * permissions + */ @ManyToOne(() => Permission, permission => permission.users) permissions: Permission[]; /** - * groups - */ + * groups + */ @ManyToMany(() => UserGroup) @JoinTable() groups: UserGroup[]; /** - * is user enabled? - */ + * is user enabled? + */ @IsBoolean() enabled: boolean; /** - * jwt refresh count - */ + * jwt refresh count + */ @IsInt() @Column({ default: 1 }) refreshTokenCount: number; /** - * profilepic - */ + * profilepic + */ @IsString() profilepic: string; @@ -107,10 +107,17 @@ export class User { * calculate all permissions */ public get calc_permissions(): Permission[] { - let final_permissions = this.groups.forEach((permission) => { - console.log(permission); + let final_permissions = [] + this.groups.forEach((permission) => { + if (!final_permissions.includes(permission)) { + final_permissions.push(permission) + } }) - // TODO: add user permissions on top of group permissions + return - return [] + this.permissions.forEach((permission) => { + if (!final_permissions.includes(permission)) { + final_permissions.push(permission) + } + }) + return final_permissions } }