ajimoti/roles-and-permissions
Composer 安装命令:
composer require ajimoti/roles-and-permissions
包简介
Implement roles and permissions on your laravel application, supports many-to-many relationship (pivot tables).
README 文档
README
Introduction
This package allows you to assign roles and permissions to any laravel model, or on a pivot table (many to many relationship).
Built and written by Ajimoti John
Documentation
You can read the proper documentation here
Quick Samples
On a Model
The example below explains how to use the package on a model after installation.
use App\Enums\Role; use App\Enums\Permission; // Assign a 'Super Admin' role to this user $user->assign(Role::SuperAdmin); // Check if the user has the role $user->hasRole(Role::SuperAdmin); // Or $user->isSuperAdmin(); // returns true // Check if the user can perform a operation $user->can(Permission::DeleteTransactions); // Or $user->canDeleteTransactions(); // Check if the user has multiple permissions $user->holds(Permission::DeleteTransactions, Permission::BlockUsers);
Pivot table (many to many relationship)
This demonstrates how to use the package on a many to many relationship.
In this example, we assume we have a merchant relationship in our User model. And this relationship returns an instance of Laravel's BelongsToMany class.
Import the App\Enums\Role and App\Enums\Permission class.
use App\Enums\Role; use App\Enums\Permission; // Sample merchant $merchant = Merchant::where('name', 'wallmart')->first(); // Assign a 'Super Admin' role to this user on the selected merchant (wallmart) $user->of($merchant)->assign(Role::SuperAdmin); // Check if the user has a super admin role on the selected merchant (wallmart) $user->of($merchant)->hasRole(Role::SuperAdmin); // Check if the user can 'delete transactions' on the selected merchant (wallmart) $user->of($merchant)->can(Permission::DeleteTransactions); // Check if the user has multiple permissions on the selected merchant (wallmart) $user->of($merchant)->holds(Permission::DeleteTransactions, Permission::BlockUsers);
We used the
usermodel to make the example explanatory, similar to the examples above the package will work on any model class.
Requirements
- PHP 8.0 or higher
- Laravel 8.0 or higher
- Upon installation, the package publishes a
config/roles-and-permissions.phpfile, ensure you do not have a file with the same name in your config directory.
Pros
- The package can be used on any model, i.e any model can be assigned roles, and permissions.
- Roles can be given multiple permissions.
- Models have permissions via roles.
- Models can be assigned multiple roles.
- A
many to manyrelationship can be assigned roles. (i.e the package can be used on a pivot table). - Supports role hierarchy. (A higher level role can be configured to have the permissions of lower level roles).
Crons
- Permissions cannot be assigned directly on a
many to manyrelationship.
Installation
You can install the package via composer:
composer require ajimoti/roles-and-permissions
If you have existing pivot tables that you want to apply the package on, you can add the table names to the pivot.tables array in the config/roles-and-permissions.php config file. The command below will add a role column to every pivot table provided in the array.
Run the command below, then you are set to use the package.
php artisan roles:install
Documentation
Visit documentation here to better understand how to use the package.
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.
ajimoti/roles-and-permissions 适用场景与选型建议
ajimoti/roles-and-permissions 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.3k 次下载、GitHub Stars 达 62, 最近一次更新时间为 2022 年 01 月 11 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「laravel」 「ajimoti」 「roles-and-permissions」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 ajimoti/roles-and-permissions 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ajimoti/roles-and-permissions 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 ajimoti/roles-and-permissions 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Implement roles and permissions on your laravel application, supports many-to-many relationship (pivot tables).
This package provides a more readable way to get time in seconds while caching.
Alfabank REST API integration
Adds Roles and Permissions to Laravel
A lightweight Laravel roles and permissions package using Backed Enums.
Laravel package for Accurate Online API integration.
统计信息
- 总下载量: 1.3k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 63
- 点击次数: 9
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-01-11