@devtigers-identity/core
v0.1.0
Published
A comprehensive user management and role-based access control (RBAC) library for Node.js applications
Maintainers
Readme
RBAC User Management Library
A comprehensive user management and role-based access control (RBAC) library for Node.js applications with support for multiple authentication providers.
Quick Start
Setup
# Install dependencies
npm install
# Generate Prisma client
npm run db:generate
# Initialize database
npm run db:push
# Seed with sample data
npm run db:seedDatabase
This project uses SQLite by default for local development. The database file will be created at prisma/dev.db.
To use a different database, update the DATABASE_URL in your .env file:
# PostgreSQL
DATABASE_URL="postgresql://username:password@localhost:5432/rbac_authz?schema=public"
# MySQL
DATABASE_URL="mysql://username:password@localhost:3306/rbac_authz"Basic Usage
import { PrismaClient } from '@prisma/client';
import { PrismaStorageAdapter } from './src/storage/prisma';
import { RBACService } from './src/rbac';
// Initialize storage
const prisma = new PrismaClient();
const storage = new PrismaStorageAdapter(prisma);
// Initialize RBAC service
const rbac = new RBACService(storage);
// Create a user
const user = await rbac.createUser({
email: '[email protected]',
username: 'newuser',
firstName: 'John',
lastName: 'Doe'
});
// Create a role
const role = await rbac.createRole({
name: 'editor',
description: 'Can edit content',
permissions: ['posts.write', 'posts.read']
});
// Assign role to user
await rbac.assignRole(user.id, role.id);
// Check permissions
const canEdit = await rbac.hasPermission(user.id, 'posts.write');Scripts
npm run build- Build the librarynpm run dev- Build in watch modenpm run test- Run testsnpm run db:generate- Generate Prisma clientnpm run db:push- Push schema to databasenpm run db:migrate- Run database migrationsnpm run db:studio- Open Prisma Studionpm run db:seed- Seed database with sample data
Database Schema
The library uses the following entities:
- User - User accounts with profile information
- Role - Roles that can be assigned to users
- Permission - Fine-grained permissions (resource:action)
- UserRole - Many-to-many relationship between users and roles
- RolePermission - Many-to-many relationship between roles and permissions
Development
For development, the library provides:
- SQLite database for easy local setup
- Prisma Studio for database visualization
- Seed script for sample data
- Type-safe operations with full TypeScript support
