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