mamikon/role-manager

此软件包已被弃用且不再维护。未建议替代软件包。

Laravel 角色和权限管理器

安装: 33

依赖关系: 1

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 1

开放问题: 0

类型:laravel-package

1.0.5 2017-04-13 10:33 UTC

This package is not auto-updated.

Last update: 2021-05-15 10:03:14 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

laravel的角色和权限管理系统。本软件包实现了Laravel中的角色管理功能。您可以通过简单的方式创建新权限并将它们分配给角色。

安装

通过Composer

$ composer require mamikon/role-manager

然后,将ServiceProvider添加到config/app.php文件中的providers数组中。

Mamikon\RoleManager\RoleManagerProvider::class,

您可以使用外观以缩短代码。将其添加到您的别名中

'RoleManager' => Mamikon\RoleManager\RoleManagerFacade::class,

要发布配置设置,请使用

 $ php artisan vendor:publish --provider="Mamikon\RoleManager\RoleManagerProvider"

它将发布角色和权限管理的默认视图和roleManager.php配置文件。

在开始之前,让我们先浏览一下配置文件并做一些配置。

配置文件包含默认权限和角色。

它将为RoleManager软件包创建一些权限,在发布软件包后,您可以直接添加一些新权限,这比从管理面板更方便,可以使您的应用程序更容易部署。每个权限都必须包含数组键,它将是权限的名称,该键的值必须是一个数组,其中包含描述。除了这些,您还可以添加类和方法以进行额外的权限检查。

'edit_post' => [
    'description' => "Edit Post",
    'class' => App\Permissions\Post::class, // not required
    'method' => 'canEdit', // not required
],

然后您可以创建默认角色。每个数组元素必须包含键,该键将是角色名称,值将是角色的描述。

'super-admin' =>  "Can Do everything",

然后您可以分配一些权限给角色。

'assignPermissionsToRole'=> [
    'editor' => [
            'edit_post',
            'publish_post',
            //...
        ]
 ],

您可以使用星号来将所有权限添加到该角色。

'assignPermissionsToRole'=> [
   'super-admin' => '*'
],

然后您可以将角色添加到用户。

'assignRoleToUser' => [
    'super-admin'=>'admin@pass.com',
    'editor'=>'editor@pass.com',
 ],

所有这些配置将在运行permission:migrate artisan命令后加载。

$ php artisan permissions:migrate

但在那之前,我们必须迁移我们的表。默认情况下,它将创建4个表

  • permissions
  • roles
  • roles_user
  • permissions_roles

如果您的数据库中存在permissions和roles表,您可以从配置文件更改它们的名称,然后迁移。

    'permissionsTable'=>'other_permissions',
    'rolesTable'=>'other_roles',

RoleManager软件包将为角色管理控制页面创建路由

  • /
  • /role(resource)
  • /permission(resource)
  • /user/{id}

并且它们将默认以role-manager为前缀。

'routePrefix'=>'role-manager',

默认视图将从layouts.app扩展。

'extendedView'=>'layouts.app',

如果您不想扩展任何视图,您可以提供false值。您必须提供要扩展的部分。

 'extendedSection'=>'content',

所有配置(除默认角色、权限和默认分配外)都可以从.env加载。

ROLE_MANAGER_PERMISSIONS_TABLE=permissions
ROLE_MANAGER_ROLES_TABLE=roles
ROLE_MANAGER_EXTENDED_VIEW=layout.app
ROLE_MANAGER_EXTENDED_SECTION=content
ROLE_MANAGER_EXTERNAL_BOOTSTRAP=false
ROLE_MANAGER_EXTERNAL_JQUERY=false
ROLE_MANAGER_ROUTE_PREFIX=role-manager
USERS_PER_PAGE=15
PERMISSIONS_PER_PAGE=15
ROLES_PER_PAGE=15

完成所有配置后运行迁移

$ php aritsan migrate

然后

$ php aritsan permissions:migrate

用法

RoleManager不会更改Laravel授权中的任何逻辑。您可以使用标准的Laravel外观、方法和函数。

if (Gate::allows('update-post', $post)) {
    // The current user can update the post...
}

if (Gate::denies('update-post', $post)) {
    // The current user can't update the post...
}

此外,RoleManager外观还有2个辅助函数

  • RoleManager::assignRole(mixed $user, mixed $role)
  • RoleManager::removeRole(mixed $user, mixed $role)

其中$user参数可以是User模型或user_id(int),$role参数可以是Role模型、role_id(int)或角色名称(string)

变更日志

请参阅变更日志了解最近的变化信息。

贡献

请参阅 CONTRIBUTINGCONDUCT 获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 m.araqelyan@gmail.com 反馈,而不是使用问题跟踪器。

致谢

许可

MIT 许可证 (MIT)。请参阅 许可文件 获取更多信息。