Попытался создать роль пользователя, которая может редактировать только информацию о пользователе, но моя тестовая учетная запись не может увидеть панель управления. Что я упустил?

Вопрос или проблема

Один из наших сайтов включает в себя интернет-магазин, который наряду с продажей по телефону является одним из двух способов, с помощью которых клиенты могут приобретать наши продукты. Вся информация о наших клиентах хранится в программе под названием Orderwise, которая присваивает каждому клиенту уникальный номер. Теперь мы настроили возможность добавления номера Orderwise к пользовательской информации на сайте, поэтому я пытался создать роль, которая позволит отделу продаж получить доступ к панели управления, но только для редактирования информации о пользователях и добавления номеров Orderwise вручную, а также для просмотра информации WooCommerce, такой как заказы. Поэтому я создал роль со следующими возможностями через плагин;

edit_users

list_users

read

read_private_pages

read_private_posts

read_private_products

read_private_shop_coupons

read_private_shop_orders

read_private_shop_webhooks

read_product

read_shop_coupon

read_shop_order

read_shop_webhook

view_woocommerce_reports

Затем я назначил эту роль тестовому аккаунту и попытался войти в систему через /wp-admin. Это позволило мне войти как пользователь публичного сайта, как это могут делать наши клиенты, но не дало доступа к панели управления и редактирования информации о пользователях.

Каких возможностей у меня не хватает в роли? Могут ли они конфликтовать друг с другом?

Я нашёл решение! Я дублировал уже существующую роль и убрал всё ненужное, что, на мой взгляд, не понадобится моей роли отдела продаж. В итоге я получил;

 assign_product_terms
 assign_shop_coupon_terms
 assign_shop_order_terms
 assign_shop_webhook_terms
 connections_view_public
 delete_others_products
 delete_others_shop_coupons
 delete_others_shop_orders
 delete_others_shop_webhooks
 delete_private_products
 delete_private_shop_coupons
 delete_private_shop_orders
 delete_private_shop_webhooks
 delete_product
 delete_product_terms
 delete_products
 delete_published_products
 delete_published_shop_coupons
 delete_published_shop_orders
 delete_published_shop_webhooks
 delete_shop_coupon
 delete_shop_coupon_terms
 delete_shop_coupons
 delete_shop_order
 delete_shop_order_terms
 delete_shop_orders
 delete_shop_webhook
 delete_shop_webhook_terms
 delete_shop_webhooks
 edit_others_products
 edit_others_shop_coupons
 edit_others_shop_orders
 edit_others_shop_webhooks
 edit_private_products
 edit_private_shop_coupons
 edit_private_shop_orders
 edit_private_shop_webhooks
 edit_product
 edit_product_terms
 edit_products
 edit_published_products
 edit_published_shop_coupons
 edit_published_shop_orders
 edit_published_shop_webhooks
 edit_shop_coupon
 edit_shop_coupon_terms
 edit_shop_coupons
 edit_shop_order
 edit_shop_order_terms
 edit_shop_orders
 edit_shop_webhook
 edit_shop_webhook_terms
 edit_shop_webhooks
 edit_users
 list_users
 manage_links
 manage_product_terms
 manage_shop_coupon_terms
 manage_shop_order_terms
 manage_shop_webhook_terms
 manage_woocommerce
 publish_products
 publish_shop_coupons
 publish_shop_orders
 publish_shop_webhooks
 read
 read_private_pages
 read_private_posts
 read_private_products
 read_private_shop_coupons
 read_private_shop_orders
 read_private_shop_webhooks
 read_product
 read_shop_coupon
 read_shop_order
 read_shop_webhook
 unfiltered_html
 view_woocommerce_reports

И как по волшебству, эта новая версия роли отдела продаж теперь может получить доступ к панели управления, имея доступ только к разделам WooCommerce, Продукты и Пользователи.

Если кого-то это интересует, я использовал вдохновляюще названный User Role Editor плагин для создания и редактирования пользовательских ролей.

Вашим сотрудникам отдела продаж, вероятно, не нужна возможность unfiltered_html.

Согласно https://codex.wordpress.org/Roles_and_Capabilities#unfiltered_html,

Позволяет пользователю размещать HTML-разметку или даже JavaScript-код на страницах, в записях, комментариях и виджетах.

Примечание: Включение этой опции для ненадёжных пользователей может привести к их размещению злонамеренного или плохо отформатированного кода.

Вам не нужно предоставлять доступ к WooCommerce, чтобы предоставить доступ к панели управления. Это просто так, как это хочет WooCommerce. Вы можете использовать эти функции, чтобы переопределить это:

function _wc_disable_admin_bar($prevent_admin_access) {
    if (!current_user_can('customer') and !current_user_can('shop_manager')) {
        return $prevent_admin_access;
    }
    return false;
};
add_filter('woocommerce_disable_admin_bar', '_wc_disable_admin_bar', 10, 1);
function _wc_prevent_admin_access($prevent_admin_access) {
    if (!current_user_can('customer') and !current_user_can('shop_manager')) {
        return $prevent_admin_access;
    }
    return false;
};
add_filter('woocommerce_prevent_admin_access', '_wc_prevent_admin_access', 10, 1);

Ответ или решение

Чтобы решить проблему с доступом тестового аккаунта к панели управления WordPress, вам необходимо убедиться, что вы правильно настроили роли и разрешения. Из вашего описания видно, что вы уже предпринимали шаги для создания роли, но столкнулись с трудностями при попытке войти в панель управления.

Причины проблемы

На первом этапе вы создали новую роль с набором возможностей, однако некоторые из них могут быть недостаточными для доступа к полной панели управления. WooCommerce имеет свои собственные условия для доступа к админ-панели, и просто наличие необходимых прав на просмотр и редактирование пользователей может не быть достаточным.

Возможные решения

  1. Убедитесь, что роль имеет необходимые разрешения:

    • Вы включили следующие возможности, которые должны разрешать доступ к админ-панели и управлению пользователями:
      • edit_users
      • list_users
      • read
      • Чтобы разрешить доступ к WooCommerce, добавьте:
        • manage_woocommerce
        • view_woocommerce_reports
  2. Соберите более полное разрешение:

    • Ваша финальная конфигурация, кажется, правильная. Однако вам может не понадобиться право unfiltered_html, если ваши пользователи не должны иметь возможность вставлять HTML или JavaScript код. Это может быть соображение безопасности.
  3. Изменения в WooCommerce:

    • WooCommerce может ограничивать доступ к админке, даже если у пользователя есть необходимые разрешения. Вы можете использовать следующий код, чтобы обойти данные ограничения:
    function _wc_disable_admin_bar($prevent_admin_access) {
        if (!current_user_can('customer') && !current_user_can('shop_manager')) {
            return $prevent_admin_access;
        }
        return false;
    }
    add_filter('woocommerce_disable_admin_bar', '_wc_disable_admin_bar', 10, 1);
    
    function _wc_prevent_admin_access($prevent_admin_access) {
        if (!current_user_can('customer') && !current_user_can('shop_manager')) {
            return $prevent_admin_access;
        }
        return false;
    }
    add_filter('woocommerce_prevent_admin_access', '_wc_prevent_admin_access', 10, 1);

    Этот код позволит пользователям с установленной ролью обойти ограничения WooCommerce и получить доступ к панели управления.

Заключение

Исходя из вышесказанного, убедитесь, что вы предоставили все необходимые разрешения, и добавьте предложенные фильтры WooCommerce, чтобы получить доступ к админ-панели. Если у вас все еще возникают проблемы, рекомендуется проверить, не конфликтуют ли плагины, которые могут ограничить доступ пользователей.

Оцените материал
Добавить комментарий

Капча загружается...