napp/aclcore
Composer 安装命令:
composer require napp/aclcore
包简介
ACL core for projects
关键字:
README 文档
README
Roles and Permissions for Laravel optimized for performance. Every permission is registered through code instead of pivot tables. This results in great performance.
Install
composer require napp/aclcore
You can publish the config file with:
php artisan vendor:publish --provider="Napp\Core\Acl\AclServiceProvider" --tag="config"
When published - then review it and change accordingly to your applications. The config files config/acl.php contains:
return [ /** * Define which Eloquent models used by the package */ 'models' => [ 'role' => Napp\Core\Acl\Model\Role::class, 'user' => Illuminate\Foundation\Auth\User::class, ], /** * Table names for the package */ 'table_names' => [ 'roles' => 'roles', 'users_roles' => 'users_roles', ], /** * The default guard used to authorize users */ 'guard' => 'web' ];
Usage
Add HasRole trait to your User model:
use Illuminate\Foundation\Auth\User as Authenticatable; use Napp\Core\Acl\Contract\Role as RoleContract; use Napp\Core\Acl\Role\HasRole; class User extends Authenticatable implements RoleContract { use HasRole; }
Register Permissions
Register simple permissions in your app.
Napp\Core\Acl\PermissionRegistrar::register([ 'users.create', 'users.view' ]);
Register permissions with Closure.
Napp\Core\Acl\PermissionRegistrar::register([ 'users.create' => 'My\App\Users\Permissions@create', 'users.update' => 'My\App\Users\Permissions@edit', 'users.view' ]);
Register Middleware
Add the middleware to App/Http/Kernal.php
protected $routeMiddleware = [ 'may' => \Napp\Core\Acl\Middleware\Authorize::class,
usage:
Route::get('users', ['uses' => 'UsersController@index'])->middleware('may:users.view');
Usage in php code
// authorize a single permission if (may('users.view')) { // do something } // authorize if **any** of the permissions are valid if (may(['users.view', 'users.create'])) { // do something } // authorize if **all** of the permissions are valid if (mayall(['users.view', 'users.create'])) { // do something } // reverse - not logic if (maynot('users.view')) { return abort(); } // check for user role if (has_role($user, 'manager')) { // do something } // check if user has many roles if (has_role($user, ['support', 'hr'])) { // do something }
Usage in Blade
may is equivalent to default can from Laravel.
@may('users.create') <a href="my-link">Create</a> @endmay
Check if user has any of the permissions
@may(['users.create', 'users.update']) <a href="my-link">Create</a> @endmay
Check if user have all of the permissions
@mayall(['users.create', 'users.update']) <a href="my-link">Create</a> @endmayall
Use maynot for reverse logic
@maynot('users.create') <a href="my-link">Create</a> @endmaynot
Check if user has a specific role
@hasrole('admin') <a href="my-link">Create</a> @endhasrole
See PHPUnit tests for more examples and usage.
napp/aclcore 适用场景与选型建议
napp/aclcore 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.32k 次下载、GitHub Stars 达 3, 最近一次更新时间为 2018 年 09 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「acl」 「roles」 「permissions」 「napp」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 napp/aclcore 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 napp/aclcore 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 napp/aclcore 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Laravel Multiauth package
User permissions for MoonShine
This package provides a flexible way to add Role-based Permissions to Laravel 6.x
This package provides a flexible way to add Role-based Permissions to Laravel
AclManager plugin for CakePHP 3.x
Library for advanced filesystem functions
统计信息
- 总下载量: 1.32k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 11
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-09-04