wnikk / laravel-access-rules
Simple system of ACR (access control rules) for Laravel, with roles, groups, unlimited inheritance and possibility of multiplayer use.
Installs: 1 073
Dependents: 1
Suggesters: 0
Security: 0
Stars: 8
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: >=7.4
- illuminate/auth: ^8.0|^9.0|^10.0|^11.0
- illuminate/cache: ^8.0|^9.0|^10.0|^11.0
- illuminate/console: ^8.0|^9.0|^10.0|^11.0
- illuminate/container: ^8.0|^9.0|^10.0|^11.0
- illuminate/contracts: ^8.0|^9.0|^10.0|^11.0
- illuminate/database: ^8.0|^9.0|^10.0|^11.0
README
Access Control Rules (Laravel Permissions Package)
What does Access Control Rules support?
- Multiple user models.
- Multiple permissions can be attached to users.
- Multiple permissions can be attached to groups.
- Permissions verification.
- Permissions caching.
- Events when permissions are attached, detached or synced.
- Multiple permissions can be attached to user or group.
- Permissions can be inherited with unlimited investment from users and groups.
- Laravel gates and policies.
Visual Interface
The visual interface for managing access control rules and permissions can be found at this link. It offers an intuitive and user-friendly environment for administrators to define roles, assign permissions, and configure access rules.
For detailed usage examples and instructions, refer to the example repository.
Documentation, Installation, and Usage Instructions
See the documentation for detailed installation and usage instructions.
You can install the package using composer:
composer require wnikk/laravel-access-rules
See the installation page for detailed.
What It Does
This package allows you to manage user permissions and groups (instead roles) in a database.
Once installed you can do stuff like this:
use Wnikk\LaravelAccessRules\AccessRules; // Add new rule permission AccessRules::newRule('articles.edit', 'Access to editing articles');
// Adding permissions to a user $user->addPermission('articles.edit');
Or you can inherit the rights from another user or groups
// According to the existing user from object $user->inheritPermissionFrom(User::find(1)); // By identifier $user->inheritPermissionFrom(User::class, 1); // From the group $user->inheritPermissionFrom('Group', 1);
Because all permissions will be registered on Laravel's gate, you can check if a user has a permission with Laravel's default can
function:
$user->can('articles.edit');
Or without model:
$acr = new AccessRules; $acr->setOwner('AnotherAnySystemUser', 'UserID-From-Any-System-FF01'); $check = $acr->hasPermission('articles.edit'); if (!$check) {abort(403);}
Examples of how can be used in more detail described in Basic Usage section.
Opening an Issue
Before opening an issue there are a couple of considerations:
- You are all awesome!
- Pull requests are more than welcome.
- Read the instructions and make sure all steps were followed correctly.
- Check that the issue is not specific to your development environment setup.
- Provide duplication steps.
- Attempt to look into the issue, and if you have a solution, make a pull request.
- Show that you have made an attempt to look into the issue.
- Check to see if the issue you are reporting is a duplicate of a previous reported issue.
- Following these instructions show me that you have tried.
- Please be considerate that this is an open source project that I provide to the community for FREE when opening an issue.
Alternatives
- spatie/laravel-permission takes a slightly different approach to its features.
- ultraware/roles It not supported and transferred to archive.
- santigarcor/laratrust implements team support.
- zizaco/entrust offers some wildcard pattern matching.
License
The MIT License (MIT). Please see License File for more information.