arobases/sylius-rights-management-plugin

此插件允许您管理管理员用户的权限和角色


README

此插件允许您管理管理员用户的权限和角色

arobases_banner

安装

步骤 1:下载插件

  • 使用 composer require arobases/sylius-rights-management-plugin 安装插件

步骤 2:启用插件

  • 在您的 bundles.php 中注册捆绑包
# config/bundles.php
<?php

return [
...
  Arobases\SyliusRightsManagementPlugin\ArobasesSyliusRightsManagementPlugin::class => ['all' => true],
...
];

步骤 3:导入配置

创建文件 config/packages/arobases_sylius_rights_management_plugin.yaml,并包含以下内容

imports:
  - { resource: "@ArobasesSyliusRightsManagementPlugin/Resources/config/config.yaml" }

步骤 4:导入路由

创建文件 config/routes/arobases_sylius_rights_management_plugin.yaml,并包含以下内容

arobases_sylius_rights_management_plugin_admin:
    resource: "@ArobasesSyliusRightsManagementPlugin/Resources/config/admin_routing.yml"
    prefix: /admin

步骤 5:使用 AdminUserTrait 并实现 AdminUserInterface

//src/Entity/AdminUser.php

<?php

declare(strict_types=1);

namespace App\Entity\User;

use Arobases\SyliusRightsManagementPlugin\Entity\AdminUserInterface;
use Doctrine\ORM\Mapping as ORM;
use Arobases\SyliusRightsManagementPlugin\Entity\AdminUserTrait;
use Sylius\Component\Core\Model\AdminUser as BaseAdminUser;

/**
 * @ORM\Entity
 * @ORM\Table(name="sylius_admin_user")
 */
class AdminUser extends BaseAdminUser implements AdminUserInterface
{
    use AdminUserTrait;
}

步骤 6:修改模板 SyliusAdminBundle/AdminUser/Form/_generalInfoExtended.html.twig

 {# templates/bundles/SyliusAdminBundle/AdminUser/Form/_generalInfoExtended.html.twig #}
    ...
    <div class="ui segment">
       <h4 class="ui dividing header">{{ 'arobases_sylius_rights_management_plugin.ui.choice_role'|trans }}</h4>
       {{ form_row(form.role) }}
    </div>
    ...

步骤 7:更新您的数据库

php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate

步骤 8:安装资源

php bin/console asset:install
php bin/console cache:clear

步骤 9:定义您的默认角色(例如 "管理员")以及默认具有此角色的管理员账户的用户名

#.env

###> arobases/sylius-rights-management ###
DEFAULT_ADMIN_USER=EDITME
DEFAULT_ADMIN_ROLE_CODE=EDITME
DEFAULT_ADMIN_ROLE_NAME=EDITME
###> arobases/sylius-rights-management ###

如果您不更改这些行,当您使用命令创建权限时,您将无法访问后台办公系统中的任何内容,因为您将没有权限。

步骤 10:使用命令行创建角色、权限组以及权限

php bin/console arobases:right:create-admin-right

屏幕截图

索引

role_index

编辑/创建角色

role_update

role_update2

如果用户没有权限,将显示错误

access_denied

用法

存在一个预配置的默认权限列表

#vendor/arobases/sylius-rights-management-plugin/src/Resources/config/right_management.yaml

arobases_sylius_rights_management:
  groups:
    arobases_sylius_rights_management_plugin.group.taxon:  #here it's the name of the group of the right
      rights:
        all:
          name: 'arobases_sylius_rights_management_plugin.rights.taxon' #here it's the name of the right
          routes: ['sylius_admin_taxon_*', 'sylius_admin_ajax_generate_taxon_slug']

    arobases_sylius_rights_management_plugin.group.product:
      rights:
        product:
          name: 'arobases_sylius_rights_management_plugin.rights.product'
          routes: ['sylius_admin_product_*', 'sylius_admin_get_product_attributes_*', 'sylius_admin_get_attribute_types', 'sylius_admin_ajax_generate_product_slug', 'sylius_admin_ajax_taxon_*', 'sylius_admin_ajax_product_*' ]
        stock:
          name: 'arobases_sylius_rights_management_plugin.rights.inventory'
          routes: ['sylius_admin_inventory_*']

    arobases_sylius_rights_management_plugin.group.order:
      rights:
        all:
          name: 'arobases_sylius_rights_management_plugin.rights.order'
          routes: ['sylius_admin_order_*', 'sylius_admin_payment_*', 'sylius_admin_shipment_*','sylius_invoicing_plugin_admin_invoice_*', 'sylius_refund_*', 'sylius_admin_ajax_render_province_*']
          excludes: ['sylius_admin_payment_method_*']
    arobases_sylius_rights_management_plugin.group.promotion:
      rights:
        all:
          name: 'arobases_sylius_rights_management_plugin.rights.promotion'
          routes: ['sylius_admin_promotion_*']
    arobases_sylius_rights_management_plugin.group.user:
      rights:
        user:
          name: 'arobases_sylius_rights_management_plugin.rights.customer'
          routes: ['sylius_admin_customer_*', 'sylius_admin_impersonate_*']
          excludes: ['sylius_admin_customer_group_*']
        group:
          name: 'sylius.ui.customer_groups'
          routes: ['sylius_admin_customer_group_*',]

    arobases_sylius_rights_management_plugin.group.configuration:
      rights:
        channel:
          name: 'arobases_sylius_rights_management_plugin.rights.channel'
          routes: ['sylius_admin_channel_*']
        country:
          name: 'arobases_sylius_rights_management_plugin.rights.country'
          routes: ['sylius_admin_country_*']
        zone:
          name: 'arobases_sylius_rights_management_plugin.rights.zone'
          routes: ['sylius_admin_zone_*']
        currency:
          name: 'arobases_sylius_rights_management_plugin.rights.currency'
          routes: ['sylius_admin_currency_*']
        exchange_rate:
          name: 'arobases_sylius_rights_management_plugin.rights.exchange_rate'
          routes: ['sylius_admin_exchange_rate_*']
        locale:
          name: 'arobases_sylius_rights_management_plugin.rights.locale'
          routes: ['sylius_admin_locale_*']
        payment_method:
          name: 'arobases_sylius_rights_management_plugin.rights.payment_method'
          routes: ['sylius_admin_payment_method_*', 'sylius_admin_get_payment_gateways']
        shipping_method:
          name: 'arobases_sylius_rights_management_plugin.rights.shipping_method'
          routes: ['sylius_admin_shipping_method_*', 'webgriffe_admin_shipping_table_rate_*']
        shipping_category:
          name: 'arobases_sylius_rights_management_plugin.rights.shipping_category'
          routes: ['sylius_admin_shipping_category_*']
        tax_category:
          name: 'arobases_sylius_rights_management_plugin.rights.tax_category'
          routes: ['sylius_admin_tax_category_*']
        tax_rate:
          name: 'arobases_sylius_rights_management_plugin.rights.tax_rate'
          routes: ['sylius_admin_tax_rate_*']
    arobases_sylius_rights_management_plugin.group.administration:
      rights:
        admin_user:
          name: 'arobases_sylius_rights_management_plugin.rights.admin_user'
          routes: ['sylius_admin_admin_user_*']
        admin_role:
          name: 'arobases_sylius_rights_management_plugin.rights.admin_role'
          routes: ['arobases_sylius_rights_management_plugin_admin_role_*']

但是,您可以在您的文件 config/packages/arobases_sylius_rights_management_plugin.yaml 中修改或添加一些权限或权限组

#config/packages/arobases_sylius_rights_management_plugin.yaml

imports:
  - { resource: "@ArobasesSyliusRightsManagementPlugin/Resources/config/resources.yaml" }

arobases_sylius_rights_management:
  groups:
    arobases_sylius_rights_management_plugin.group.product:
      rights:
    #here you will update "arobases_sylius_rights_management_plugin.group.product"

    app.group.my_new_group:
      rights:
        all:
          name: 'app.rights.my_new_right'
          routes: ['app_my_custom_route_*']
    #here you will create a new group and a new right