yasser/laravel-roles

用于处理 Laravel 5.3 中角色和权限的强大包

0.1.2 2016-12-28 23:16 UTC

This package is not auto-updated.

Last update: 2024-09-28 21:16:13 UTC


README

Build Status

安装

您可以通过以下步骤安装此包。

Composer

您可以使用 composer 命令安装包。

composer require yasser/laravel-roles

或者您也可以通过 Composer 文件拉取此包

{
	"require": {
		...
		"yasser/laravel-roles": "^0.1.2"
	}
}

服务提供者

将包添加到您的应用程序服务提供者在 config/app.php 文件中。

'providers' => [
		...
		/*
         * Package Service Providers...
         */

        Yasser\Roles\RolesServiceProvider::class,
		
		/*
         * Application Service Providers...
         */
        ...
],

迁移

在控制台中执行此命令以将迁移文件添加到项目

php artisan vendor:publish --provider="Yasser\Roles\RolesServiceProvider" --tag=migrations

并运行迁移

php aritsan migrate

用户特性

在您的 User 模型中包含 HasRolesRelations 特性。

use Yasser\Roles\Traits\HasRolesRelations;

class User extends Authenticatable
{
    use Notifiable, HasRolesRelations;

}

中间件

将中间件 VerifyPermission 添加到 app/Http/kernel.php 文件中。

    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
    	...
		'verify' => \Yasser\Roles\Middlewares\VerifyPermission::class,
        'check' => \Yasser\Roles\Middlewares\VerifyRole::class,
    ],

用法

创建权限

	use Yasser\Roles\Models\Permission;

	$permission = Permission::create([
        'name' => 'Create Users',
        'slug' => 'user.create',
        'description' => '', //optional
        'model' => '' //optional
    ]);

创建角色

	use Yasser\Roles\Models\Role;

	$adminRole = Role::create([
        'name' => 'Admin',
        'slug' => 'admin',
        'description' => ''//optional
    ]);

将权限附加到或从角色中分离

您可以为角色附加一个权限

	$createPermission = Permission::create([
        'name' => 'Create Users',
        'slug' => 'user.create',
        'description' => '', //optional
        'model' => '' //optional
    ]);

    $role = Role::create([
        'name' => 'Admin',
        'slug' => 'admin',
    ]);

    $role->attachPermission($createPermission);

或者您可以为角色附加多个权限

	$createPermission = Permission::create([
        'name' => 'Create Users',
        'slug' => 'user.create'
    ]);

	$deletePermission = Permission::create([
        'name' => 'Delete user',
        'slug' => 'user.delete'
    ]);

    $role = Role::create([
        'name' => 'Admin',
        'slug' => 'admin',
    ]);

    $role->attachPermissions([$createPermission, $deletePermission]);

从角色中分离一个权限

	$role->detachPermission($createRole);

或者您可以从角色中分离多个权限

	$role->detachPermissions([$createPermission, $deletePermission])

将角色附加到或从用户中分离

将角色附加到用户

	$role = Role::create([
        'name' => 'Admin',
        'slug' => 'admin',
    ]);

    $user->attachRole($role)

将多个角色附加到用户

	$adminRole = Role::create([
        'name' => 'Admin',
        'slug' => 'admin',
    ]);

    $operatorRole = Role::create([
        'name' => 'Operator',
        'slug' => 'operator',
    ]);

    $user->attachRoles([$adminRole, $operatorRole]);

从用户中分离角色

	$user->detachRole($role)

从用户中分离多个角色

	$user->detachRoles([$adminRole, $operatorRole])

检查用户是否具有角色

    $adminRole = Role::create([
        'name' => 'Admin',
        'slug' => 'admin',
    ]);

    $user->checkRole('admin'); //return true or false

检查用户是否具有权限

    $createPermission = Permission::create([
        'name' => 'Create Users',
        'slug' => 'user.create'
    ]);
    
    $user->canDo('user.create');

Blade 指令

    $role = Role::create([
        'name' => 'Admin',
        'slug' => 'admin',
    ]);

    @checkRole('admin')
    ...
    @endCheckRole
    
    $createPermission = Permission::create([
        'name' => 'Create Users',
        'slug' => 'user.create'
    ]);
    
    @canDo('user.create')
        <a href="/users/create">Create a user</a>
    @endCanDo

中间件函数

    $role = Role::create([
        'name' => 'Admin',
        'slug' => 'admin',
    ]);
    
    Route::get('user/create', ...)->middleware('ckeck:admin');
    $createPermission = Permission::create([
        'name' => 'Create Users',
        'slug' => 'user.create'
    ]);
    
    Route::get('/user/create', ... )->middleware('verify:user.create');