crabbly/authorize

此包已被废弃,不再维护。未建议替代包。

Laravel 的角色和权限授权包。

v1.0.2 2016-06-17 15:24 UTC

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 — 存储角色和权限之间的多对多关系

模型

该包包含两个模型,RolePermission

角色

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 许可证条款下分发的免费软件。