arobases-sylius-public/sylius-rights-management-plugin

此包已被 废弃 且不再维护。作者建议使用 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