crabbly / authorize
此包已被废弃,不再维护。未建议替代包。
Laravel 的角色和权限授权包。
v1.0.2
2016-06-17 15:24 UTC
Requires
- illuminate/database: ^5.2
- illuminate/support: ^5.2
This package is auto-updated.
Last update: 2020-07-11 17:51:17 UTC
README
Authorize 是一个为 Laravel 提供使用角色和权限进行用户访问控制的包。
安装
第一步:Composer
从命令行运行
composer require crabbly/authorize
第二步:服务提供者
对于您的 Laravel 应用,打开 config/app.php,然后在 providers 数组中追加
Crabbly\Authorize\AuthorizeServiceProvider::class
这将引导包进入 Laravel。
第三步:发布和运行迁移
php artisan vendor:publish --provider="Crabbly\Authorize\AuthorizeServiceProvider" --tag="migrations"
php artisan migrate
第四步:将 UserAuthorizeTrait 添加到您的 User 模型中
<?php namespace App; use Crabbly\Authorize\UserAuthorizeTrait; use Illuminate\Database\Eloquent\Model; class User extends Model { use UserAuthorizeTrait; //... }
基础
表
迁移后,将出现四个新表
roles— 存储角色记录role_user— 存储角色和用户之间的多对多关系permissions— 存储权限记录permission_role— 存储角色和权限之间的多对多关系
模型
该包包含两个模型,Role 和 Permission。
角色
Role 模型有三个主要属性
name— 角色的唯一名称,用于在应用层查找角色信息。例如:"admin"、"owner"、"employee"。display_name— 角色的可读名称。例如:"用户管理员"、"项目所有者"、"公司员工"。description— 角色更详细的说明。此字段是可选的,在数据库中可为空。
权限
Permission 模型与 Role 具有相同的三个属性
name— 权限的唯一名称,用于在应用层查找权限信息。例如:"create-post"、"edit-user"。display_name— 权限的可读名称。不一定唯一。例如:"创建文章"、"编辑用户"。description— 权限更详细的说明。
使用方法
创建角色
创建一个 admin 角色
<?php use Crabbly\Authorize\Role; ... Role::create([ 'name' => 'admin', 'display_name' => "Administrator", 'description' => '' //optional ]);
分配和移除角色
角色和用户之间存在多对多关系。我们可以像这样给用户添加和移除角色:
<?php //add role of id $role_id to $user $user->roles()->attach($role_id); //remove role of id $role_id to $user $user->roles()->detach($role_id);
检查用户是否拥有角色
要检查用户是否被分配了角色 admin
<?php if ($user->hasRole('admin')) // pass in role name { //admin only code }
大多数应用程序可能都有一个 admin 角色,对此我们可以直接使用
<?php if ($user->isAdmin()) { //admin only code }
创建权限
创建一个 delete_users 权限
<?php use Crabbly\Authorize\Permission; ... Permission::create([ 'name' => 'delete_users', 'display_name' => "Delete Users", 'description' => '' //optional ]);
分配和移除权限
权限和角色之间存在多对多关系。我们可以像这样给角色添加和移除权限
<?php //add permission of id $permission_id to $role $role->permissions()->attach($permission_id); //remove permission of id $permission_id to $role $user->permissions()->detach($permission_id);
检查用户是否拥有权限
要检查用户是否拥有权限 delete_users
<?php if ($user->hasPermission('delete_users')) // pass in permission name { //delete users code }
这将检查用户被分配的任何角色中是否有 delete_users 权限。
贡献
欢迎提交拉取请求。请在问题页面报告您发现的所有问题。
许可证
Authorize 是在 MIT 许可证条款下分发的免费软件。