kduma / permissions
为Laravel 5.1提供角色和权限的简单(真的吗?)包
Requires
- php: >=5.4.0
- illuminate/support: 5.*
This package is auto-updated.
Last update: 2022-12-02 01:27:15 UTC
README
为Laravel 5.1提供角色和权限的简单(真的吗?)包
设置
将包添加到composer.json中的require部分,并运行composer update
"kduma/permissions": "^1.1"
然后将服务提供者添加到config/app.php中的providers数组
KDuma\Permissions\PermissionsServiceProvider::class,
然后将外观添加到config/app.php中的aliases数组
'Permissions' => KDuma\Permissions\Facades\Permissions::class,
'PermissionsManager' => KDuma\Permissions\Facades\PermissionsManager::class,
然后将中间件添加到app/Http/Kernel.php中的routeMiddleware数组
'permission' => \KDuma\Permissions\Middleware\Permission::class,
'role' => \KDuma\Permissions\Middleware\Role::class,
在你的User
模型(app/User.php
)中添加以下行
use \KDuma\Permissions\Permissions;
运行以下命令以复制迁移
php artisan vendor:publish --provider="KDuma\Permissions\PermissionsServiceProvider" --tag="migrations"
在SampleMigrations
文件夹中有你可以使用或根据需要创建的示例。
- 在
2015_01_01_000005_create_and_assign_roles_and_permissions.php
迁移文件中有示例角色和权限 - 在
2015_01_01_000006_create_administrator_account.php
迁移文件中创建了管理员账户
使用方法
保护控制器和路由
你可以使用两个中间件:permission
和role
Route::get('admin/profile', [ 'middleware' => 'role:editor', 'uses' => 'UserController@showProfile' ]);
或者
class UserController extends Controller { public function __construct() { $this->middleware('permission:user.edit:user.panel'); } }
你可以在一次调用中提供多个角色/权限,通过:
分隔。例如:permission:perm1:perm2:perm3
。中间件如果用户没有提供的权限/角色之一,将拒绝访问。
在视图中检查权限
你可以使用Permissions
外观
Permissions::can('permission');
或者
Permissions::is('role');
创建/删除角色和权限
要管理角色和权限,你可以使用PermissionsManager
外观。
管理权限的最简单方法是将它们放在迁移文件中。
PermissionsManager
外观有一系列有用的方法
- 角色
PermissionsManager::createRole('ROLE_STRING_ID', 'ROLE_DESCRIPTION');
PermissionsManager::deleteRole('ROLE_STRING_ID');
- 权限
PermissionsManager::createPermission('PERMISSION_STRING_ID', 'PERMISSION_DESCRIPTION');
PermissionsManager::deletePermission('PERMISSION_STRING_ID');
- 附加和解除角色和权限
PermissionsManager::attach('ROLES_LIST', 'PERMISSIONS_LIST');
PermissionsManager::detach('ROLES_LIST', 'PERMISSIONS_LIST');
管理员角色
默认情况下,admin
角色被设置为根角色。根角色始终拥有所有权限。你可以在配置文件中更改它。
扩展
模型
你可以自由扩展Permission
和Role
模型。
如果你扩展,请在配置中设置模型路径(在ConfigServiceProvider
中)
config([ 'permissions.models.Role' => '\App\Role' ]);
示例扩展模型
namespace App; use KDuma\Permissions\Models\Role as BaseRole; class Role extends BaseRole { public function members() { return $this->hasMany('\App\Member'); } }
来自关联模型的角色和权限
例如,如果您的用户与具有自己角色的Member对象相关联,您可以通过在您的User
模型中放置此示例方法来导入它们。
protected function fetchAddionalPermissions($roles_list, $permissions_list) { $this->load('member.role.permissions'); if(!is_null($this->member) && !is_null($this->member->role)){ $role = $this->member->role; $roles_list[$role->str_id] = $role; foreach ($role->permissions as $permission) { $permissions_list[$permission->str_id] = $permission; } } return [$roles_list, $permissions_list]; }
Packagist
在Packagist.org上查看此包:kduma/permissions