milebits / authorizer
Laravel 6.0及以上版本的权限处理
3.2.18
2022-02-10 14:25 UTC
Requires
- php: >=8.0
- laravel/framework: ^6|^7|^8|^9
- milebits/eloquent-filters: >=3
Requires (Dev)
- orchestra/testbench: ^6.14
- phpunit/phpunit: ^9.5
README
Milebits Authorizer通过一个简单的安装过程,为您提供Laravel应用程序的简化角色/权限管理系统。
如何安装
安装包
composer require milebits/authorizer
添加到模型中
use Illuminate\Database\Eloquent\Model; use Milebits\Authorizer\Concerns\Authorizer; class User extends Model{ use Authorizer; }
安装权限
当您对应用程序中applicationModels文件夹中现有的实际模型满意时,您可以在命令行中运行artisan authorizer:permInstall
命令来为应用程序中每个模型生成权限。
php artisan authorizer:permInstall
注意:此命令应仅使用一次,强烈建议在新鲜迁移之后而不是在迁移之后运行。
好了,您就完成了!现在您可以使用这个包了。
如何使用它
关系
用户角色
$user= App\Models\User::find(1); $user->roles();
用户权限
$user= App\Models\User::find(1); $user->permissions();
获取权限
getByClassAction
use App\Models\User; use Milebits\Authorizer\Models\Permission; $permissions = Permission::getByClassAction(class: User::class, action: 'viewAny', getCollection: true); $permissions = Permission::getByClassAction(['class' => User::class, 'action'=> 'viewAny'], getCollection: true); $permissions = Permission::getByClassAction([User::class, 'viewAny'], getCollection: true); $permissions = Permission::getByClassAction('App\Models\User.viewAny', getCollection: true);
方法
向用户添加角色
use App\Models\User;use Milebits\Authorizer\Models\Role; $user = User::find(1); $role = Role::find(2); $user->addRole($role); $role = 'admin'; $user->addRole($role);
在这种情况下,$role
应该是要添加的期望角色的ID
从用户中移除角色
use App\Models\User;use Milebits\Authorizer\Models\Role; $user = User::find(1); $role = Role::find(2); $user->removeRole($role); $role = 'admin'; $user->removeRole($role);
在这种情况下,$role
应该是要添加的期望角色的ID
检查用户是否具有某个角色
use App\Models\User; use Milebits\Authorizer\Models\Role; $user = User::find(1); $heHasIt = $user->hasRole('editor'); $heHasIt = $user->hasRole(Role::find(1)); $heHasIt = $user->hasRole(Role::slug('editor')->first());
检查用户是否具有某个权限
use App\Models\User;use Milebits\Authorizer\Models\Permission; $user = User::find(1); $canViewAnyUser = $user->hasPermission('App\Models\User.viewAny'); $canViewAnyUser = $user->hasPermission(class: User::class,action: 'viewAny'); $canViewAnyUser = $user->hasPermission([User::class, 'viewAny']); $canViewAnyUser = $user->hasPermission([ 'class' => User::class, 'action' => 'viewAny', ]); // Or you can do it using the hasPermissions instead of hasPermission $canViewOrUpdateUser = $user->hasPermissions([1, 2, 3]); $canViewOrUpdateUser = $user->hasPermissions([ ...Permission::getByClassAction(action: 'view', pluck: 'id'), ...Permission::getByClassAction(action: 'update', pluck: 'id'), ]);
使用中间件
HasPermission中间件
use Milebits\Authorizer\Http\Middleware\HasPermission; $this->middleware(HasPermission::class.':permission_slug_or_id');
HasRole中间件
use Milebits\Authorizer\Http\Middleware\HasRole; $this->middleware(HasRole::class.':role_slug_or_id');
贡献
如果在使用此包的过程中,您希望请求新的功能,请通过suggestions@os.milebits.com联系我们,并提及您愿意贡献的包或建议的新功能。
漏洞
如果在使用此包的过程中,您遇到安全问题或安全漏洞,请尽快在此GitHub问题中报告,或通过发送电子邮件至security@os.milebits.com并提及主题漏洞报告 milebits/authorizer。