tourze / rbac-core
RBAC Core
Installs: 2
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/tourze/rbac-core
Requires
- php: ^8.1
- tourze/enum-extra: 0.1.*
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2025-11-01 19:23:24 UTC
README
A comprehensive Role-Based Access Control (RBAC) core library implementation for PHP 8.1+. This library provides complete RBAC0, RBAC1, and RBAC2 implementations with rule-based extensions.
Features
- RBAC0: Basic role-based access control with users, roles, and permissions
- RBAC1: Role hierarchy support with inheritance
- RBAC2: Constraints including mutual exclusion and prerequisite roles
- Rule System: Flexible rule-based permission evaluation
- Session Management: Support for user sessions with role activation
- Full Type Safety: Complete PHP 8.1+ type hints and interfaces
Installation
composer require tourze/rbac-core
Quick Start
Basic Usage
<?php use Tourze\RBAC\Core\Level0\User; use Tourze\RBAC\Core\Level0\Role; use Tourze\RBAC\Core\Level0\Permission; // Implement the interfaces in your application class MyUser implements User { public function getRoles(): array { // Return user's roles } public function getSessions(): array { // Return user's sessions } } class MyRole implements Role { public function getName(): string { return 'admin'; } public function getTitle(): string { return 'Administrator'; } } class MyPermission implements Permission { public function getName(): string { return 'user.create'; } public function getTitle(): string { return 'Create User'; } public function getParentPermission(): ?Permission { return null; } }
Hierarchical Roles (RBAC1)
<?php use Tourze\RBAC\Core\Level1\HierarchicalRole; class MyHierarchicalRole implements HierarchicalRole { public function getName(): string { return 'manager'; } public function getTitle(): string { return 'Manager'; } public function getParentRoles(): array { // Return parent roles for inheritance return []; } }
Constrained Roles (RBAC2)
<?php use Tourze\RBAC\Core\Level2\MutexRole; use Tourze\RBAC\Core\Level2\PreconditionRole; // Mutually exclusive roles class MyMutexRole implements MutexRole { public function getMutexRoles(): array { // Return roles that cannot be assigned together return []; } } // Prerequisite roles class MyPreconditionRole implements PreconditionRole { public function getPreconditionRole(): ?Role { // Return role that must be assigned first return null; } }
Rule-Based Permissions
<?php use Tourze\RBAC\Core\Rule\Rule; use Tourze\RBAC\Core\Rule\RuleRole; class MyRule implements Rule { public function getName(): string { return 'business_hour_rule'; } public function getTitle(): string { return 'Business Hour Access Rule'; } public function evaluate(array $context): bool { // Custom rule logic $currentHour = date('H'); return $currentHour >= 9 && $currentHour <= 17; } }
Architecture
RBAC Levels
- Level 0 (RBAC0): Core components - Users, Roles, Permissions, Sessions
- Level 1 (RBAC1): Adds role hierarchy for inheritance
- Level 2 (RBAC2): Adds constraints (mutex, precondition)
Core Components
User: Represents system users with roles and sessionsRole: Defines user roles with permissionsPermission: Defines system permissions with hierarchySession: Manages user sessions with activated rolesOperation: Defines system operationsObj: Defines protected objects
Testing
./vendor/bin/phpunit packages/rbac-core/tests
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This package is open-sourced software licensed under the MIT license.