From a78bbb1de5765f6339440663bb884367b6d3bfdf Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Wed, 2 Dec 2020 18:46:36 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A7=20User=20+=20Permissions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/models/Permission.ts | 17 +++++++++++++++-- src/models/User.ts | 16 +++++++++++++--- src/models/UserGroup.ts | 14 +++++++------- 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/src/models/Permission.ts b/src/models/Permission.ts index e5d3d3c..e9b049b 100644 --- a/src/models/Permission.ts +++ b/src/models/Permission.ts @@ -1,11 +1,12 @@ -import { PrimaryGeneratedColumn, Column, OneToMany, Entity } from "typeorm"; +import { PrimaryGeneratedColumn, Column, OneToMany, Entity, ManyToOne } from "typeorm"; import { IsInt, IsNotEmpty, IsOptional, IsString, } from "class-validator"; - +import { User } from './User'; +import { UserGroup } from './UserGroup'; /** * Defines the Permission interface. */ @@ -19,6 +20,18 @@ export abstract class Permission { @IsInt() id: number; + /** + * users + */ + @OneToMany(() => User, user => user.permissions) + users: User[] + + /** + * groups + */ + @OneToMany(() => UserGroup, group => group.permissions) + groups: UserGroup[] + /** * The target */ diff --git a/src/models/User.ts b/src/models/User.ts index b59ad3f..d946500 100644 --- a/src/models/User.ts +++ b/src/models/User.ts @@ -67,9 +67,8 @@ export class User { /** * permissions */ - // TODO: Permission implementation - // @OneToMany(() => Permission,userpermission=>) - // permissions: Permission[]; + @ManyToOne(() => Permission, permission => permission.users) + permissions: Permission[]; /** * groups @@ -96,4 +95,15 @@ export class User { */ @IsString() profilepic: string; + + /** + * calculate all permissions + */ + public get calc_permissions(): Permission[] { + let final_permissions = this.groups.forEach((permission) => { + console.log(permission); + }) + // TODO: add user permissions on top of group permissions + return + return [] + } } diff --git a/src/models/UserGroup.ts b/src/models/UserGroup.ts index 90f6378..5a19713 100644 --- a/src/models/UserGroup.ts +++ b/src/models/UserGroup.ts @@ -1,4 +1,4 @@ -import { PrimaryGeneratedColumn, Column, OneToMany, Entity } from "typeorm"; +import { PrimaryGeneratedColumn, Column, OneToMany, Entity, ManyToOne } from "typeorm"; import { IsInt, IsNotEmpty, @@ -20,6 +20,12 @@ export abstract class UserGroup { @IsInt() id: number; + /** + * permissions + */ + @ManyToOne(() => Permission, permission => permission.groups) + permissions: Permission[]; + /** * The group's name */ @@ -35,10 +41,4 @@ export abstract class UserGroup { @IsOptional() @IsString() description: string; - - /** - * TODO: Something about permission stuff - */ - // TODO: - // grouppermissions: Permission[]; } \ No newline at end of file