251208:1625 Frontend: to be complete admin panel, Backend: tobe recheck all task
Spec Validation / validate-markdown (push) Has been cancelled
Spec Validation / validate-diagrams (push) Has been cancelled
Spec Validation / check-todos (push) Has been cancelled

This commit is contained in:
admin
2025-12-08 16:25:56 +07:00
parent dcd126d704
commit 863a727756
64 changed files with 5956 additions and 1256 deletions
@@ -5,28 +5,37 @@ import {
ManyToMany,
JoinTable,
} from 'typeorm';
import { BaseEntity } from '../../../common/entities/base.entity';
@Entity('permissions')
export class Permission {
@PrimaryGeneratedColumn()
export class Permission extends BaseEntity {
@PrimaryGeneratedColumn({ name: 'permission_id' })
id!: number;
@Column({ name: 'permission_code', length: 50, unique: true })
permissionCode!: string;
@Column({ name: 'permission_name', length: 100, unique: true })
permissionName!: string;
@Column({ name: 'description', type: 'text', nullable: true })
description!: string;
@Column({ name: 'resource', length: 50 })
resource!: string;
@Column({ name: 'module', length: 50, nullable: true })
module?: string;
@Column({ name: 'action', length: 50 })
action!: string;
@Column({
name: 'scope_level',
type: 'enum',
enum: ['GLOBAL', 'ORG', 'PROJECT'],
nullable: true,
})
scopeLevel?: 'GLOBAL' | 'ORG' | 'PROJECT';
@Column({ name: 'is_active', default: true, type: 'tinyint' })
isActive!: boolean;
}
@Entity('roles')
export class Role {
@PrimaryGeneratedColumn()
export class Role extends BaseEntity {
@PrimaryGeneratedColumn({ name: 'role_id' })
id!: number;
@Column({ name: 'role_name', length: 50, unique: true })
@@ -35,6 +44,16 @@ export class Role {
@Column({ name: 'description', type: 'text', nullable: true })
description!: string;
@Column({
type: 'enum',
enum: ['Global', 'Organization', 'Project', 'Contract'],
default: 'Global',
})
scope!: 'Global' | 'Organization' | 'Project' | 'Contract';
@Column({ name: 'is_system', default: false })
isSystem!: boolean;
@ManyToMany(() => Permission)
@JoinTable({
name: 'role_permissions',