Package Exports
- @mostajs/rbac
- @mostajs/rbac/api/categories
- @mostajs/rbac/api/categories-id
- @mostajs/rbac/api/matrix
- @mostajs/rbac/api/permissions
- @mostajs/rbac/api/permissions-id
- @mostajs/rbac/api/roles
- @mostajs/rbac/api/roles-id
- @mostajs/rbac/api/seed
- @mostajs/rbac/api/users
- @mostajs/rbac/api/users-id
- @mostajs/rbac/components/CategoriesManager
- @mostajs/rbac/components/PermissionMatrix
- @mostajs/rbac/components/PermissionsManager
- @mostajs/rbac/components/RBACManager
- @mostajs/rbac/components/RolesManager
- @mostajs/rbac/components/UsersManager
- @mostajs/rbac/helpers/permissions
- @mostajs/rbac/lib/create-admin
- @mostajs/rbac/lib/data-mode
- @mostajs/rbac/lib/i18n
- @mostajs/rbac/lib/menu
- @mostajs/rbac/lib/module-info
- @mostajs/rbac/lib/permissions-server
- @mostajs/rbac/lib/rbac-seed
- @mostajs/rbac/lib/repos-factory
- @mostajs/rbac/pages/RolesPage
- @mostajs/rbac/pages/UsersPage
- @mostajs/rbac/register
- @mostajs/rbac/server
Readme
@mostajs/rbac
User, Role, Permission, PermissionCategory — schemas, repositories, seed, admin creation. Author: Dr Hamid MADANI drmdh@msn.com
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('admin@test.com')
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: 'admin@test.com', 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' })