@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
TypeScript
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;
}