searsaw / drawbridge
Laravel 4 的角色和权限。
Requires
- php: >=5.3.0
- illuminate/support: 4.x
- magniloquent/magniloquent: dev-master
This package is not auto-updated.
Last update: 2023-02-13 18:28:08 UTC
README
此仓库不再维护。由于 Laravel 现在要求 PHP 5.4,使用 Laravel 允许您使用 traits。已弃用的 Entrust 包已经支持此功能,并且拥有更大的社区。我建议使用它。
Laravel 4 的角色和权限。
##安装
将 searsaw/drawbridge
添加到您的 composer.json
文件的要求中。
{ "require": { "searsaw/drawbridge": "dev-master" } }
使用 composer update
更新您的应用程序包或使用 composer install
安装它们。然后在 app/config/app.php
文件的 providers
数组中添加服务提供者。
'providers' => array( 'Illuminate\Foundation\Providers\ArtisanServiceProvider', 'Illuminate\Auth\AuthServiceProvider', ... 'Illuminate\Workbench\WorkbenchServiceProvider', 'Searsaw\Drawbridge\DrawbridgeServiceProvider' ),
##入门
首先,我们需要将迁移导出到 migrations
目录中,以便 Drawbridge 的表可以放入数据库中。运行 php artisan drawbridge:migrations
命令以导出它们。然后使用 php artisan migrate
迁移数据库。
为了让角色和权限正常工作,需要存在一个 Role 模型、一个 Permission 模型和用户模型。幸运的是,Drawbridge 提供了三个模型,您可以轻松扩展它们以向您的模型添加功能。在您的 app/models
目录中,创建以下两个模型。
use Searsaw\Drawbridge\Models\BridgeRole; class Role extends BridgeRole {}
use Searsaw\Drawbridge\Models\BridgePermission; class Permission extends BridgePermission {}
此包还包含一个 BridgeUser 模型,用于向您的 User 模型添加添加角色的功能。以下代码将 BridgeUser 模型功能添加到 Laravel 中的默认 User 模型。
use Illuminate\Auth\UserInterface; use Illuminate\Auth\Reminders\RemindableInterface; use Searsaw\Drawbridge\Models\BridgeUser; class User extends BridgeUser implements UserInterface, RemindableInterface { ...
这三个模型都扩展了 Magniloquent,这是 Laravel 模型验证包。Magniloquent 扩展了 Eloquent,为您提供了 Eloquent 的所有功能,并增加了模型验证的优势。有关 Magniloquent 的更多信息,请访问其 [GitHub 页面](https://github.com/philipbrown/magniloquent)。
添加角色和权限
角色是一组权限。用户可以拥有不同的角色,根据他们拥有的角色获得扩展的能力。
要向用户添加角色,请使用用户对象的 addRole
方法。此方法可以接受角色 ID、角色名称或角色对象。如果角色对象尚未保存到数据库中,它将在附加到用户之前被保存。此方法还可以接受前面三种的组合的数组。
要向角色添加权限,请使用角色对象的 addPermission
方法。此方法与上面提到的 addRole
方法工作方式相同。这使得添加权限变得尽可能简单。
$user = User::find(1); $admin = new Role; $admin->name = 'admin'; $admin->display_name = 'Admin'; $admin->save(); $author = new Role; $author->name = 'author'; $author->display_name = 'Author'; $author->save(); $edit = new Permission; $edit->name = 'can_edit'; $edit->display_name = 'Can Edit'; $edit->save(); $view = new Permission; $view->name = 'can_view'; $view->display_name = 'Can View'; $view->save(); $user->addRole([$admin, $author]); $admin->addPermission([$edit->id, 'can_view']);
##检查角色或权限
要检查用户是否具有特定角色,请使用用户对象的 hasRole
方法。它可以接受 ID、名称或 Role 对象本身。如果用户具有该角色则返回 true
,如果用户不具有该角色则返回 false
。
要检查角色是否具有特定权限,请使用角色对象的 hasPermission
方法。它可以接受 ID、名称或 Permission 对象本身。如果角色具有该权限则返回 true
,如果角色不具有该权限则返回 false
。
您还可以通过在用户对象上使用 hasPermission
方法来检查用户是否具有特定的权限。它可以接受一个ID、一个名称,或者是一个权限对象本身。如果用户具有该权限,则返回 true
,如果没有则返回 false
。
$user = User::find(1); $admin = Role::find(2); $edit = Permission::find(1); $user->hasRole('admin'); $user->hasRole($admin); $user->hasRole(2); $admin->hasPermission('can_edit'); $admin->hasPermission($edit); $admin->hasPermission(1); $user->hasPermission('can_edit'); $user->hasPermission($edit); $user->hasPermission(1);
##许可证
MIT许可证 (MIT)
版权所有 (c) 2013 Alex Sears
特此免费授予任何获得本软件及其相关文档副本(以下简称“软件”)的人士,无限制地使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许获得软件的人士进行上述操作,但需遵守以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的明示或暗示担保,包括但不限于适销性、针对特定目的的适用性和非侵权性担保。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论该责任源于合同、侵权或其他原因,以及与软件或软件的使用或其他交易相关的任何事件。