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],