skailan-core
Version:
Servicio de autenticación y multitenancy para Skailan.
80 lines • 2.58 kB
TypeScript
import { PrismaClient } from "@prisma/client";
import { PermissionService } from "./PermissionService";
import { PermissionResponse, PermissionValidation, RBACContext, RBACConfig, Resource, Action } from "../types/rbac";
export declare class RBACService {
private prisma;
private permissionService;
private cache;
private config;
constructor(prisma: PrismaClient, config?: Partial<RBACConfig>);
/**
* Verificar si un usuario tiene un permiso específico
*/
checkPermission(userId: string, organizationId: string, resource: Resource, action: Action): Promise<PermissionValidation>;
/**
* Verificar múltiples permisos de una vez
*/
checkMultiplePermissions(userId: string, organizationId: string, permissions: Array<{
resource: Resource;
action: Action;
}>): Promise<{
hasAllPermissions: boolean;
results: Array<{
permission: string;
hasPermission: boolean;
}>;
}>;
/**
* Obtener contexto RBAC completo de un usuario
*/
getRBACContext(userId: string, organizationId: string): Promise<RBACContext | null>;
/**
* Verificar si un usuario tiene un rol específico o superior
*/
hasRoleOrHigher(userId: string, organizationId: string, requiredRole: string): Promise<boolean>;
/**
* Obtener todos los permisos de un usuario con cache
*/
getUserPermissions(userId: string, organizationId: string): Promise<PermissionResponse[]>;
/**
* Limpiar cache de permisos
*/
clearCache(userId?: string, organizationId?: string): void;
/**
* Obtener estadísticas de permisos
*/
getPermissionStats(organizationId: string): Promise<{
totalPermissions: number;
totalRoleAssignments: number;
permissionsByResource: Record<string, number>;
permissionsByRole: Record<string, number>;
}>;
/**
* Validar configuración de permisos
*/
validatePermissionConfiguration(organizationId: string): Promise<{
isValid: boolean;
issues: string[];
}>;
/**
* Obtener el rol de un usuario
*/
private getUserRole;
/**
* Obtener permisos del cache
*/
private getCachedPermissions;
/**
* Cachear permisos
*/
private cachePermissions;
/**
* Obtener el servicio de permisos
*/
getPermissionService(): PermissionService;
/**
* Actualizar configuración
*/
updateConfig(config: Partial<RBACConfig>): void;
}
//# sourceMappingURL=RBACService.d.ts.map