@mamoorali295/rbac
Version:
Complete RBAC (Role-Based Access Control) system for Node.js with Express middleware, NestJS integration, GraphQL support, MongoDB & PostgreSQL support, modern admin dashboard, TypeScript support, and dynamic permission management
47 lines (46 loc) • 2.66 kB
TypeScript
import { Pool } from 'pg';
import { DatabaseAdapter, DatabaseUser, DatabaseRole, DatabaseFeature, DatabasePermission, FeaturePermissions, PaginatedResult } from './DatabaseAdapter';
export declare class PostgresAdapter extends DatabaseAdapter {
private pool;
private userModel;
private roleModel;
private featureModel;
private permissionModel;
constructor(pool: Pool);
init(): Promise<void>;
private initializeSchema;
createStandardPermissions(): Promise<void>;
createUser(userData: DatabaseUser): Promise<DatabaseUser>;
findUserByUserId(user_id: string): Promise<DatabaseUser | null>;
findUserByUserIdWithRole(user_id: string): Promise<DatabaseUser | null>;
updateUser(user_id: string, updates: Partial<DatabaseUser>): Promise<void>;
deleteUser(user_id: string): Promise<void>;
getAllUsers(limit?: number, offset?: number, search?: string): Promise<PaginatedResult<DatabaseUser>>;
createRole(roleData: DatabaseRole): Promise<DatabaseRole>;
findRoleByName(name: string): Promise<DatabaseRole | null>;
findRoleById(id: string): Promise<DatabaseRole | null>;
findRoleByIdWithFeatures(id: string): Promise<DatabaseRole | null>;
updateRole(id: string, updates: Partial<DatabaseRole>): Promise<void>;
deleteRole(id: string): Promise<void>;
assignRoleFeaturePermissions(roleId: string, featurePermissions: FeaturePermissions[]): Promise<void>;
getAllRoles(limit?: number, offset?: number): Promise<PaginatedResult<DatabaseRole>>;
createFeature(featureData: DatabaseFeature): Promise<DatabaseFeature>;
findFeatureByName(name: string): Promise<DatabaseFeature | null>;
findFeatureById(id: string): Promise<DatabaseFeature | null>;
updateFeature(id: string, updates: Partial<DatabaseFeature>): Promise<void>;
deleteFeature(id: string): Promise<void>;
getAllFeatures(limit?: number, offset?: number): Promise<PaginatedResult<DatabaseFeature>>;
createPermission(permissionData: DatabasePermission): Promise<DatabasePermission>;
findPermissionByName(name: string): Promise<DatabasePermission | null>;
findPermissionById(id: string): Promise<DatabasePermission | null>;
updatePermission(id: string, updates: Partial<DatabasePermission>): Promise<void>;
deletePermission(id: string): Promise<void>;
getAllPermissions(limit?: number, offset?: number): Promise<PaginatedResult<DatabasePermission>>;
getUserFeaturePermissions(user_id: string, featureName: string): Promise<string[]>;
getDashboardStats(): Promise<{
users: number;
roles: number;
features: number;
permissions: number;
}>;
}