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

Не забыл. Только я pre-хуком прописал всю эту конструкцию:

init.php

fn_register_hooks(
‘user_init_pre’
);

func.php

use Tygh\Enum\UserTypes;
use Tygh\Enum\SiteArea;
function fn_my_changes_user_init_pre(&$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
)
);
}
}

у вас какая версия cs-cart? в своей я не нашел pre хука

В 4.11.5 нет такого хука

Ой, да. туплю. Давайте проверим. Версия у меня 4.11.5.
в файле
/app/functions/fn.init.php

есть хук

fn_set_hook(‘user_init’, Tygh::$app[‘session’][‘auth’], $user_info, $first_init);

Все остальные коды из моего предыдущего поста корректны, при условии замены user_init_pre в тексте на user_init

Работает на первый взгляд. Тестируем.

Ругается https://prnt.sc/vlfyef

Распечатайте user_info , а заодно и auth

Посмотрите, что там

так должен перестать ругаться

function fn_my_changes_user_init(&$auth, $user_info, $first_init)
{
  if (!empty(Tygh::$app['session']['auth']['user_id'])) {
  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 лайк

Так гораздо лучше. Не ругается.
Но есть проблема. Система не реагирует на суперадминистратора. Вероятно по тому, что в его настройках вообще нет вкладки “Группы”, и, стало быть, его нельзя идентифицировать по этому признаку.
Можно как-то добавить галку “Суперадминистратора”?

На сколько я понимаю отсутствие у “Суперадминистратора" групп пользователей дает ему не ограниченный доступ , если добавить ему “Суперадминистратора” в товар или категорию то прийдется добавить ему эту группу в $auth[‘usergroup_ids’] и тогда он перестанет быть суперадминистратором

В этом то и фокус. Если в категории, например, не стоят галки “все” или “зарегистрированные”, то суперадминистратор на витрине не видит этих категорий. Как буд-то он босяк с подворотни, а не суперадминистратор.

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

Кстати, если любого существующего покупателя перевести в разряд администратора (редактирование покупателя, “Тип учетной записи”), то в его настройках также будет отсутствовать вкладка “Группы”. Хотя он явно не суперадминистратор.

…что-то тут не чисто.