@mostajs/rbac
v2.5.0
Published
RBAC — User/Role/Permission schemas, repos, management UI, API handlers
Downloads
1,558
Maintainers
Readme
@mostajs/rbac
User, Role, Permission, PermissionCategory — schemas, repositories, seed, admin creation. Author: Dr Hamid MADANI [email protected]
Install
npm install @mostajs/rbac @mostajs/ormHow to Use
1. Schemas (client-safe)
import { UserSchema, RoleSchema, PermissionSchema, PermissionCategorySchema } from '@mostajs/rbac'2. Repositories (server-side)
import { UserRepository, RoleRepository } from '@mostajs/rbac/server'
const dialect = await getDialect()
const userRepo = new UserRepository(dialect)
const user = await userRepo.findByEmail('[email protected]')
await userRepo.findByIdWithRoles(user.id)
await userRepo.addRole(user.id, roleId)3. Seed RBAC (from setup.json data)
import { seedRBAC } from '@mostajs/rbac/server'
await seedRBAC({
categories: [{ name: 'admin', label: 'Administration', icon: 'Settings', order: 0, system: true }],
permissions: [{ code: 'admin:access', name: 'admin:access', description: 'Admin access', category: 'admin' }],
roles: { admin: { name: 'admin', description: 'Administrator', permissions: ['*'] } },
})4. Create Admin
import { createAdmin } from '@mostajs/rbac/lib/create-admin'
await createAdmin({ email: '[email protected]', password: 'Admin123!', firstName: 'Admin', lastName: 'Test' })
// Handles: bcrypt hash + find admin role + create user + link role5. Module Info (for @mostajs/setup)
import { getSchemas, moduleInfo } from '@mostajs/rbac/lib/module-info'
const schemas = getSchemas() // [UserSchema, RoleSchema, PermissionSchema, PermissionCategorySchema]
await moduleInfo.seed(setupJson.rbac)
await moduleInfo.createAdmin({ email, password, firstName, lastName })6. Dual ORM/NET Mode
import { getRbacRepos } from '@mostajs/rbac/lib/repos-factory'
const { users, roles, permissions, categories } = await getRbacRepos()
// In ORM mode: BaseRepository + dialect
// In NET mode: NetClient-backed repositories
// Controlled by MOSTA_DATA=orm|net7. API Handlers (Next.js)
import { createUsersHandler } from '@mostajs/rbac/api/users'
export const { GET, POST } = createUsersHandler({ checkPermission, adminPermission: 'admin:access' })