Implemented new Permission system on the DB side.

ref #22
This commit is contained in:
2020-12-17 20:46:54 +01:00
parent 39b932a81c
commit cc5a30980a
6 changed files with 64 additions and 56 deletions

View File

@@ -1,12 +1,11 @@
import {
IsInt,
IsNotEmpty,
IsString
IsNotEmpty
} from "class-validator";
import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from "typeorm";
import { User } from './User';
import { UserGroup } from './UserGroup';
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from "typeorm";
import { PermissionAction } from '../enums/PermissionAction';
import { PermissionTarget } from '../enums/PermissionTargets';
import { Principal } from './Principal';
/**
* Defines the Permission interface.
*/
@@ -20,30 +19,27 @@ export abstract class Permission {
id: number;
/**
* users
* The permissions principal
*/
@OneToMany(() => User, user => user.permissions, { nullable: true })
users: User[]
/**
* groups
*/
@OneToMany(() => UserGroup, group => group.permissions, { nullable: true })
groups: UserGroup[]
@ManyToOne(() => Principal, principal => principal.permissions)
principal: Principal[]
/**
* The target
*/
@Column()
@Column({
type: 'simple-enum',
enum: PermissionTarget
})
@IsNotEmpty()
@IsString()
target: string;
target: PermissionTarget;
/**
* The action type
*/
@Column()
@IsNotEmpty()
@IsString()
action: string;
@Column({
type: 'simple-enum',
enum: PermissionAction
})
action: PermissionAction;
}