add rbac module

This commit is contained in:
2025-06-30 21:51:17 +08:00
parent 2c70ce4cdf
commit 6951ea1373
5 changed files with 49 additions and 48 deletions
@@ -1,6 +1,7 @@
import { AbilityTuple, MongoQuery, RawRuleFrom } from '@casl/ability';
import { Exclude, Expose } from 'class-transformer';
import { Column, Entity, JoinTable, ManyToMany, PrimaryGeneratedColumn, Relation } from 'typeorm';
import type { Relation } from 'typeorm';
import { Column, Entity, JoinTable, ManyToMany, PrimaryGeneratedColumn } from 'typeorm';
import { UserEntity } from '@/modules/user/entities';
@@ -53,7 +54,7 @@ export class PermissionEntity<
* 权限角色
*/
@Expose({ groups: ['permission-list', 'permission-detail'] })
@ManyToMany(() => RoleEntity, (role) => role.permissions, { cascade: true })
@ManyToMany(() => RoleEntity, (role) => role.permissions)
@JoinTable()
roles: Relation<RoleEntity>[];
+1 -1
View File
@@ -1,4 +1,5 @@
import { Exclude, Expose, Type } from 'class-transformer';
import type { Relation } from 'typeorm';
import {
BaseEntity,
Column,
@@ -7,7 +8,6 @@ import {
JoinTable,
ManyToMany,
PrimaryGeneratedColumn,
Relation,
} from 'typeorm';
import { UserEntity } from '@/modules/user/entities';
+7 -1
View File
@@ -1,4 +1,4 @@
import { DynamicModule, Module } from '@nestjs/common';
import { DynamicModule, forwardRef, Module } from '@nestjs/common';
import { PassportModule } from '@nestjs/passport';
@@ -7,6 +7,10 @@ import { Configure } from '@/modules/config/configure';
import { DatabaseModule } from '@/modules/database/database.module';
import { addEntities, addSubscribers } from '@/modules/database/utils';
import { RbacModule } from '@/modules/rbac/rbac.module';
import { RoleRepository } from '@/modules/rbac/repositories';
import * as entities from './entities';
import * as guards from './guards';
import * as interceptors from './interceptors';
@@ -22,11 +26,13 @@ export class UserModule {
module: UserModule,
imports: [
PassportModule,
forwardRef(() => RbacModule),
services.TokenService.JwtModuleFactory(configure),
await addEntities(configure, Object.values(entities)),
DatabaseModule.forRepository(Object.values(repositories)),
],
providers: [
RoleRepository,
...Object.values(interceptors),
...Object.values(services),
...Object.values(strategies),
+2
View File
@@ -7,6 +7,7 @@ import { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify
import { existsSync } from 'fs-extra';
import { isNil } from 'lodash';
import { RbacModule } from '@/modules/rbac/rbac.module';
import { UserModule } from '@/modules/user/user.module';
import * as configs from './config';
@@ -29,6 +30,7 @@ export const createOptions: CreateOptions = {
await RestfulModule.forRoot(configure),
await ContentModule.forRoot(configure),
await UserModule.forRoot(configure),
await RbacModule.forRoot(configure),
],
globals: { guard: RbacGuard },
builder: async ({ configure, BootModule }) => {