JSPM

  • Created
  • Published
  • Downloads 266
  • Score
    100M100P100Q101493F
  • License MIT

RBAC — User/Role/Permission schemas, repos, management UI, API handlers

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/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/orm

How 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 role

5. 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|net

7. API Handlers (Next.js)

import { createUsersHandler } from '@mostajs/rbac/api/users'
export const { GET, POST } = createUsersHandler({ checkPermission, adminPermission: 'admin:access' })