zenix-rbac-cli
v1.0.2
Published
Command-line interface for ZenixRBAC - Visual RBAC/ABAC system
Downloads
89
Maintainers
Readme
zenix-rbac-cli
Command-line interface for ZenixRBAC - Visual RBAC/ABAC permission system.
Installation
npm install -g zenix-rbac-cliCommands
vrules init
Initialize a new ZenixRBAC project with starter files.
vrules initThis creates:
rules.yaml- Permission rulesvrules.config.ts- Engine configuration
vrules validate
Validate your rule files for syntax and logic errors.
vrules validate
# Or validate a specific file
vrules validate custom-rules.yamlChecks for:
- YAML/JSON syntax errors
- Rule schema validation
- Circular role dependencies
- Undefined roles/resources
vrules export
Export compiled rules and generated TypeScript code.
vrules export
# Or specify output directory
vrules export --out ./generatedGenerates:
rules.compiled.json- Pre-compiled rulestypes.ts- TypeScript interfaces for resourcesvrules.ts- Helper functions
vrules studio
Launch the visual studio for building rules.
vrules studio
# Or specify custom port
vrules studio --port 3000Opens the visual builder at http://localhost:4141
On first run, initializes the studio in .vrules/studio/
Quick Start
# 1. Initialize project
vrules init
# 2. Edit rules.yaml
# ... define your roles, resources, and rules
# 3. Validate rules
vrules validate
# 4. Launch visual studio
vrules studio
# 5. Export for production
vrules exportExample Workflow
# Create a new project
mkdir my-app && cd my-app
vrules init
# Answer prompts
# Resource name: Post
# Resource description: Blog post
# Include examples: Yes
# Validate the generated rules
vrules validate
# ✓ All rules are valid!
# Export compiled rules
vrules export
# ✓ Generated files:
# - generated/rules.compiled.json
# - generated/types.ts
# - generated/vrules.ts
# Use in your applicationIntegration
After exporting, use the generated files in your application:
import { can, authorize } from './generated/vrules';
// Check permission
const allowed = await can(
{ id: 1, role: 'editor' },
'post.update',
{ id: 10, authorId: 1 }
);
// Or throw if not allowed
await authorize(
{ id: 1, role: 'viewer' },
'post.delete',
{ id: 10 }
);License
MIT
