UNPKG

@brandazm/dynamic-permissions

Version:

A flexible and powerful permissions management system for NestJS applications with built-in security features

37 lines (36 loc) 1.29 kB
import { Permission } from '../interfaces/permission.interface'; import { Repository } from 'typeorm'; import { PermissionEntity } from '../models/permission.entity'; import 'reflect-metadata'; import { ConfigService } from './config.service'; export interface RoleNode { role: string; level: number; children: RoleNode[]; permissions: Set<string>; } export interface RoleHierarchy { [role: string]: { level: number; inherits?: string[]; }; } export declare class RoleHierarchyService { private readonly permissionRepository; private readonly configService; private roleTree; private rolePermissions; constructor(permissionRepository: Repository<PermissionEntity>, configService: ConfigService); buildRoleTree(hierarchy: RoleHierarchy): Promise<RoleNode>; private buildRoleNode; getInheritedPermissions(role: string): Promise<Permission[]>; private findRoleNode; private collectPermissions; private getRolePermissions; validateRoleHierarchy(hierarchy: RoleHierarchy): boolean; private validateHierarchy; clearCache(): void; getPermissionsByRole(role: string): Promise<PermissionEntity[]>; getRoleHierarchy(role: string): Promise<PermissionEntity[]>; private mapPermissionEntity; }