From 4df7de91d08dc06b057593618a6d12e96f7c7c75 Mon Sep 17 00:00:00 2001 From: tone <3341154833@qq.com> Date: Wed, 7 May 2025 22:12:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E6=9D=83=E9=99=90=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E3=80=81=E7=94=A8=E6=88=B7=E6=A8=A1=E5=9D=97=E5=8A=A0?= =?UTF-8?q?=E5=85=A5userRole=E5=AE=9E=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tone-page-server/src/app.module.ts | 4 +++- .../src/role/entities/permission.entity.ts | 13 +++++++++++ .../role/entities/role-permission.entity.ts | 11 +++++++++ .../src/role/entities/role.entity.ts | 10 ++++++++ tone-page-server/src/role/role.module.ts | 10 ++++++++ .../src/user/entities/user-role.entity.ts | 23 +++++++++++++++++++ tone-page-server/src/user/user.module.ts | 3 ++- 7 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 tone-page-server/src/role/entities/permission.entity.ts create mode 100644 tone-page-server/src/role/entities/role-permission.entity.ts create mode 100644 tone-page-server/src/role/entities/role.entity.ts create mode 100644 tone-page-server/src/role/role.module.ts create mode 100644 tone-page-server/src/user/entities/user-role.entity.ts diff --git a/tone-page-server/src/app.module.ts b/tone-page-server/src/app.module.ts index 710ed36..a28b516 100644 --- a/tone-page-server/src/app.module.ts +++ b/tone-page-server/src/app.module.ts @@ -10,6 +10,7 @@ import { NotificationModule } from './notification/notification.module'; import { PassportModule } from '@nestjs/passport'; import { ResourceModule } from './resource/resource.module'; import { BlogModule } from './blog/blog.module'; +import { RoleModule } from './role/role.module'; @Module({ imports: [ @@ -31,7 +32,8 @@ import { BlogModule } from './blog/blog.module'; VerificationModule, NotificationModule, ResourceModule, - BlogModule + BlogModule, + RoleModule, ], controllers: [AppController], providers: [AppService], diff --git a/tone-page-server/src/role/entities/permission.entity.ts b/tone-page-server/src/role/entities/permission.entity.ts new file mode 100644 index 0000000..5a2ae04 --- /dev/null +++ b/tone-page-server/src/role/entities/permission.entity.ts @@ -0,0 +1,13 @@ +import { Column, Entity, PrimaryGeneratedColumn } from "typeorm"; + +@Entity() +export class Permission { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ unique: true }) + name: string; + + @Column() + description: string; +} \ No newline at end of file diff --git a/tone-page-server/src/role/entities/role-permission.entity.ts b/tone-page-server/src/role/entities/role-permission.entity.ts new file mode 100644 index 0000000..c717901 --- /dev/null +++ b/tone-page-server/src/role/entities/role-permission.entity.ts @@ -0,0 +1,11 @@ +import { Entity, Index, PrimaryColumn } from "typeorm"; + +@Entity() +@Index(['roleId', 'permissionId']) +export class RolePermission { + @PrimaryColumn('uuid') + roleId: string; + + @PrimaryColumn('uuid') + permissionId: string; +} \ No newline at end of file diff --git a/tone-page-server/src/role/entities/role.entity.ts b/tone-page-server/src/role/entities/role.entity.ts new file mode 100644 index 0000000..09a750a --- /dev/null +++ b/tone-page-server/src/role/entities/role.entity.ts @@ -0,0 +1,10 @@ +import { Column, Entity, PrimaryGeneratedColumn } from "typeorm"; + +@Entity() +export class Role { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ unique: true }) + name: string; +} \ No newline at end of file diff --git a/tone-page-server/src/role/role.module.ts b/tone-page-server/src/role/role.module.ts new file mode 100644 index 0000000..8c0dd79 --- /dev/null +++ b/tone-page-server/src/role/role.module.ts @@ -0,0 +1,10 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { Role } from './entities/role.entity'; +import { Permission } from './entities/permission.entity'; +import { RolePermission } from './entities/role-permission.entity'; + +@Module({ + imports: [TypeOrmModule.forFeature([Role, Permission, RolePermission])] +}) +export class RoleModule { } diff --git a/tone-page-server/src/user/entities/user-role.entity.ts b/tone-page-server/src/user/entities/user-role.entity.ts new file mode 100644 index 0000000..6623a20 --- /dev/null +++ b/tone-page-server/src/user/entities/user-role.entity.ts @@ -0,0 +1,23 @@ +import { Column, CreateDateColumn, Entity, Index, PrimaryGeneratedColumn } from "typeorm"; + +@Entity() +@Index(['userId', 'roleId']) +export class UserRole { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column('uuid') + roleId: string; + + @Column('uuid') + userId: string + + @Column() + isEnabled: boolean; + + @CreateDateColumn({ precision: 3 }) + createdAt: Date; + + @Column({ nullable: true, precision: 3 }) + expiredAt?: Date; +} \ No newline at end of file diff --git a/tone-page-server/src/user/user.module.ts b/tone-page-server/src/user/user.module.ts index 00f7280..f697452 100644 --- a/tone-page-server/src/user/user.module.ts +++ b/tone-page-server/src/user/user.module.ts @@ -6,10 +6,11 @@ import { UserService } from './user.service'; import { UserSession } from './entities/user-session.entity'; import { AuthModule } from 'src/auth/auth.module'; import { UserSessionService } from './services/user-session.service'; +import { UserRole } from './entities/user-role.entity'; @Module({ imports: [ - TypeOrmModule.forFeature([User, UserSession]), + TypeOrmModule.forFeature([User, UserSession, UserRole]), forwardRef(() => AuthModule),// 解决循环依赖问题 ], controllers: [UserController],