@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
42 lines (41 loc) • 1.33 kB
TypeScript
import { Pool } from 'pg';
export interface IPostgresUserRole {
id?: string;
name: string;
description: string;
created_at?: Date;
updated_at?: Date;
}
export interface IPostgresFeaturePermission {
feature_id: string;
permission_ids: string[];
}
export interface IPostgresUserRoleWithFeatures extends IPostgresUserRole {
features?: {
feature: {
id: string;
name: string;
description: string;
};
permissions: {
id: string;
name: string;
description: string;
}[];
}[];
}
export declare class PostgresUserRole {
private pool;
constructor(pool: Pool);
create(roleData: IPostgresUserRole): Promise<IPostgresUserRole>;
findByName(name: string): Promise<IPostgresUserRole | null>;
findById(id: string): Promise<IPostgresUserRole | null>;
findByIdWithFeatures(id: string): Promise<IPostgresUserRoleWithFeatures | null>;
update(id: string, updates: Partial<IPostgresUserRole>): Promise<void>;
delete(id: string): Promise<void>;
assignFeaturePermissions(roleId: string, featurePermissions: IPostgresFeaturePermission[]): Promise<void>;
getAll(limit?: number, offset?: number): Promise<{
roles: IPostgresUserRole[];
total: number;
}>;
}