sorora/aurp

此软件包已被放弃,不再维护。没有建议的替代软件包。

Aurp - Laravel 4 中用户、角色和权限的认证

dev-master 2014-12-11 09:19 UTC

This package is not auto-updated.

Last update: 2018-07-08 11:14:27 UTC


README

此软件包不再维护,市面上有很多针对 Laravel 的替代方案,它们都能做得很好。

Aurp 是什么?

Aurp 是用户、角色和权限的认证。它提供了以下功能

  • 接口来执行以下操作(视图可以替换为您自己的)
    • 添加、编辑、查看和删除权限
    • 添加、编辑、查看和删除角色。每个角色都可以分配很多权限,或者只有几个!这取决于您
    • 添加、编辑、查看和删除用户。每个用户都有一个所属的角色,使他们能够执行某些操作。
    • "magicaurp" 过滤器,它使用 RESTful 关键词来确定用户是否有权访问特定区域
      • 只要路由遵循资源控制器的指南,它就会正常工作。权限应该使用复数来匹配资源!有关 magicaurp 过滤器的更多信息,请参阅 此处
        • create_pages
        • edit_pages
        • show_pages
        • destroy_pages
      • 关键词应该使用复数来匹配资源!有关 magicaurp 过滤器的更多信息,请参阅 此处
  • "Aurp" 类可用于确定用户是否可以执行权限或权限。它还可以用于确定用户是否无法执行权限或权限。它甚至可以用于确定用户是否是某个角色!太棒了,不是吗?

简而言之,它为您的 Laravel 安装添加了接口(可以自定义),允许管理用户、角色和权限。还提供了登录和注销功能。这意味着一旦安装,您就无需编写任何代码!

要求

此软件包是为 Laravel 4 创建的,并使用 Auth 类来减少重复。

它还需要 sorora/empower 软件包,这将在运行 composer update 时安装。

此软件包仅用于检查用户是否有特定的权限或角色,更多信息可以在 使用说明 部分找到。

安装

您可以通过 composer 安装此软件包,将以下内容添加到您的 composer.json 文件中

"sorora/aurp" : "dev-master"

通过 composer 安装软件包后,请参阅 此处 以一键发布配置/迁移!

注意:您还需要将 'Sorora\Aurp\Providers\AurpServiceProvider' 添加到您的 app/config/app.php 文件中的 providers 数组

配置选项

可定制视图

要查看如何自定义此包中使用的视图/布局,请参阅Empower包的README,点击这里

God Mode

Aurp的config.php中的godmode选项指定了哪个角色拥有执行所有操作、忽略所有权限的权力。默认设置为超级管理员,但可以根据需要进行更改。

登录/注销前缀

默认情况下,登录和注销路由分别通过yoursite.com/loginyoursite.com/logout访问。要在这些路由之前添加段,只需更改Aurps的config.php文件中的prefix选项。默认设置为false,表示不向路由前添加段。

使用方法

安装包、发布配置和迁移表后,您可以通过/login(假设您没有添加路由)登录到管理面板。提供了一个默认用户admin@admin.com和密码为password,登录后请务必更改密码。

登录后,您应该位于管理面板的主页(确保您已将'aurp' => 'layouts.nav'添加到Empowers的externals config.php选项),您将看到一个可以执行的操作的导航列表。

Aurp

Aurp可以通过以下任一命令从您的应用程序访问

Is

is可用于确定用户是否是特定角色。

示例用法

Aurp::is('Example Role');

Can

can可用于确定用户是否可以执行某些操作。它接受单个字符串或数组。

示例用法

Aurp::can('create_permissions'); // returns true if the user has this permission, false if not.
Aurp::can(array('create_permissions', 'edit_permissions')); // returns true only if the user can do everything in the array

Cannot

cannot用于确定用户是否不能执行某些操作。它接受单个字符串或数组。这是can的逆操作。

示例用法

Aurp::cannot('create_permissions'); // returns true if the user has not got this permission, false if they have.
Aurp::can(array('create_permissions', 'edit_permissions')); // returns true only if the user can not do everything in the array

Magicaurp过滤器

当使用Route::resources时,此过滤器效果非常好——为了证明这一点,我们将其用于此包!让我们看看以下示例

Route::group(array('before' => 'auth|magicaurp', 'prefix' => $baseurl), function () {
    Route::resource('permissions', 'Sorora\\Aurp\\Controllers\\PermissionsController');
});

如你所见,我们有两个过滤器。Auth简单地检查他们是否已登录,如果没有,则将他们发送到登录页面。magicaurp检查他们访问的路由,然后确定他们是否有权限访问它。当用于此过滤器时,数据库中的权限结构非常重要。

  • 创建项目应具有“create_items”权限任务(与资源控制器方法:create,store匹配)
  • 查看(单个和多个)项目应具有“show_items”权限任务(与资源控制器方法:index,show匹配)
  • 编辑/修改项目应具有“edit_items”权限任务(与资源控制器方法:edit,update匹配)
  • 销毁项目应具有“destroy_items”权限任务(与资源控制器方法:destroy匹配)

因此,对于我们的“permissions”示例,magicaurp访问每部分的权限如下:create_permissionsshow_permissionsedit_permissionsdestroy_permissions

当用户没有权限通过过滤器时,会抛出一个403。强烈建议您自定义此页面。

403自定义示例

App::error(function ($exception, $code) {
    if($code == 403)
    {
        return 'Sorry, you cannot access this area!';
    }
});

有关错误定制的更详细的文章,请参阅这篇博客文章及评论*

重要提示

如果由于某种原因您要为此包运行测试,请注意它会刷新所有迁移并重新迁移包的迁移到数据库 - 因此请务必注意,数据可能会丢失!