Авторизованный доступ к категории

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


это есть в ядре, и в товарах тоже

1 лайк

ОПРЕДЕЛЁННЫХ ПОЛЬЗОВАТЕЛЕЙ!
Иванова Ивана Ивановича под логином таким-то.

Объем каков? Создается группа покупателей, которая присваивается этим пользователям, и ей открывается доступ только для этой группы. Что не так?

1 лайк

Понял!
Основная проблема, что в этом списке доступа не видны административные группы.
Заглавный вопрос меняется:
Необходимо, чтобы и администраторы со стороны витрины могли участвовать в этом функционале.

Администратора невозможно включить в покупательскую группу “Для внутреннего пользования”, соответственно он не увидит на витрине закрытую категорию.

У меня есть такая же проблемка по отсутствию в группах администраторов, администраторов вендоров в категориях, на страницах, формах, опросах.

Может, возможно как-то расширить стандартную схему групп пользователей использующуюся на всех таких страницах?

По идее администратор должен увидеть всё. А вот покупатели, так как группа никому не назначена - эту категорию не увидят. Вы попробовали?

Пробовал. Не работает.
Категорию видно только с /?action=preview
Товары в ней не видны.

если вы знаете как вносить изменения через модуль my_changes
то подключение такого php хука get_usergroups_pre, добавит в товарах и категориях группы для админов и вендоров

use Tygh\Registry;
function fn_my_changes_get_usergroups_pre(&$params, $lang_code)
{
if(in_array(Registry::get('runtime.controller'),['products','categories'])&& 
   Registry::get('runtime.mode')=='update' && isset($params['type']))
{
	$params['type']=['C','A','V'];
}
}
2 лайка

Не прокатило. Группы администраторов в списке доступа появились, однако функционал не работает. При установке галок категория всё ровно не доступна администраторам (404)

Я просто администратору такому создал покупателя. Гораздо проще, чем этот геморрой с правками.

1 лайк

На отдельный адрес почты?

Да, конечно

В этом и неудобство. Администратору постоянно придётся перелогиниваться. Он не сможет оперативно посмотреть данные из заказа и техническую информацию с закрытой фронт-страницы.
Всё же подскажите, умельцы, как реализовать предложение от @leonidov ?

два разных браузера? Или второе окно того же хрома открыть в режиме инкогнито?

1 лайк

Ну на костылях-то понятно.

попробуйте добавить этот хук user_init, он добавит авторизованным на витрине админам список их групп пользователей из админ панели , и тогда от добавления в товар/категорию этих групп появится смысл .

use Tygh\Enum\UserTypes;
use Tygh\Enum\SiteArea;
function fn_my_changes_user_init(&$auth, $user_info, $first_init)
{

   if ($user_info['user_type']==UserTypes::ADMIN && AREA == SiteArea::STOREFRONT) { 
   $auth['usergroup_ids']=isset($auth['usergroup_ids'])?$auth['usergroup_ids']:[];
   $auth['usergroup_ids'] = array_merge($auth['usergroup_ids'],fn_define_usergroups(
    array(
    'user_id' => Tygh::$app['session']['auth']['user_id'],
    'user_type' => $user_info['user_type']
  ),
  SiteArea::ADMIN_PANEL
  )
);
}
}
1 лайк

Добавил. Безрезультатно.

может не сразу сработать, так как хук срабатывает только при генерации сессии, попробуйте сессию пользователя убить в базе и залогиниться снова

В init.php fn_register_hooks(‘user_init’) не забыли?