UNPKG

@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

203 lines (202 loc) 5.61 kB
export interface User { id: string; user_id: string; name: string; email: string; role?: Role; } export interface Role { id: string; name: string; features?: FeaturePermission[]; } export interface Feature { id: string; name: string; permissions?: Permission[]; } export interface Permission { id: string; name: string; } export interface FeaturePermission { feature: Feature; permissions: Permission[]; } export interface CreateUserInput { user_id: string; name?: string; email?: string; role_id?: string; } export interface UpdateUserInput { name?: string; email?: string; } export interface CreateRoleInput { name: string; features?: FeaturePermissionInput[]; } export interface FeaturePermissionInput { feature_id: string; permission_ids: string[]; } export interface CreateFeatureInput { name: string; } export interface CreatePermissionInput { name: string; } /** * GraphQL resolvers for RBAC operations. * Provides full CRUD operations for users, roles, features, and permissions. * * @example * Usage with Apollo Server: * const server = new ApolloServer({ typeDefs, resolvers: rbacResolvers, ... }); */ export declare const rbacResolvers: { Query: { /** * Get all users with pagination support */ users(_: any, args: { page?: number; limit?: number; search?: string; }): Promise<{ data: import("../../adapters/DatabaseAdapter").DatabaseUser[]; pagination: { page: number; limit: number; total: number; pages: number; }; }>; /** * Get user by ID */ user(_: any, args: { user_id: string; }): Promise<import("../../adapters/DatabaseAdapter").DatabaseUser | null>; /** * Get all roles */ roles(): Promise<import("../../adapters/DatabaseAdapter").DatabaseRole[]>; /** * Get role by ID */ role(_: any, args: { id: string; }): Promise<import("../../adapters/DatabaseAdapter").DatabaseRole | null>; /** * Get all features */ features(): Promise<import("../../adapters/DatabaseAdapter").DatabaseFeature[]>; /** * Get all permissions */ permissions(): Promise<import("../../adapters/DatabaseAdapter").DatabasePermission[]>; /** * Get user permissions for a specific feature */ userFeaturePermissions(_: any, args: { user_id: string; feature: string; }): Promise<string[]>; /** * Get dashboard statistics */ rbacStats(): Promise<{ users: number; roles: number; features: number; permissions: number; }>; }; Mutation: { /** * Create a new user */ createUser(_: any, args: { input: CreateUserInput; }): Promise<import("../../adapters/DatabaseAdapter").DatabaseUser | null>; /** * Update a user */ updateUser(_: any, args: { user_id: string; input: UpdateUserInput; }): Promise<import("../../adapters/DatabaseAdapter").DatabaseUser | null>; /** * Delete a user */ deleteUser(_: any, args: { user_id: string; }): Promise<boolean>; /** * Assign role to user */ assignRole(_: any, args: { user_id: string; role_name: string; }): Promise<import("../../adapters/DatabaseAdapter").DatabaseUser | null>; /** * Create a new role */ createRole(_: any, args: { input: CreateRoleInput; }): Promise<import("../../adapters/DatabaseAdapter").DatabaseRole | null>; /** * Update a role */ updateRole(_: any, args: { id: string; input: CreateRoleInput; }): Promise<import("../../adapters/DatabaseAdapter").DatabaseRole | null>; /** * Delete a role */ deleteRole(_: any, args: { id: string; }): Promise<boolean>; /** * Create a new feature */ createFeature(_: any, args: { input: CreateFeatureInput; }): Promise<import("../../adapters/DatabaseAdapter").DatabaseFeature>; /** * Update a feature */ updateFeature(_: any, args: { id: string; input: CreateFeatureInput; }): Promise<import("../../adapters/DatabaseAdapter").DatabaseFeature | null>; /** * Delete a feature */ deleteFeature(_: any, args: { id: string; }): Promise<boolean>; /** * Create a new permission */ createPermission(_: any, args: { input: CreatePermissionInput; }): Promise<import("../../adapters/DatabaseAdapter").DatabasePermission>; /** * Update a permission */ updatePermission(_: any, args: { id: string; input: CreatePermissionInput; }): Promise<import("../../adapters/DatabaseAdapter").DatabasePermission | null>; /** * Delete a permission */ deletePermission(_: any, args: { id: string; }): Promise<boolean>; }; };