Отправлено спустя 1 минуту 28 секунд:
С помощью запросов выдал права и все добавилось но сразу же появилась проблема. Везде указано что права есть но по факту у пользователя их нет. Именно из за этого я и написал сюда
С помощью запросов выдал права и все добавилось но сразу же появилась проблема. Везде указано что права есть но по факту у пользователя их нет. Именно из за этого я и написал сюда
Я же сказал, в таблицах не запутайтесь. https://www.phpbbguru.net/database/tables/
Значит не полностью.
Что это значит? Вы авторизовываетесь как этот пользователь, или проверяете права из его профиля?
Попробую по другому обьяснить. В таблицах полностью разобрался. Выдаю права пользователю. Везде права выдались. Если пробить по маскам либо посмотреть на форуме все выдалось. На форуме пишет что человек модератор и т.д. Через адм проверяю сами права и там все работает но если зайти на аккаунт пользователя то прав нету. В wiki читал что это связано с тем что выдача прав кэшируется и надо чистить кэш. Если у кого то есть информация по поводу того как это правильно сделать либо как это обойти другим способом буду благодарен
Авторизовался как этот пользователь и там прав нету. А если проверить права из его профиля то все в нормеЧто это значит? Вы авторизовываетесь как этот пользователь, или проверяете права из его профиля?
Выражайтесь точнее. Что значит "зайти на аккаунт"? Вы авторизовываетесь как этот пользователь или переносите на себя его права, будучи администратором?
Тест показал что такой способ работает но мне надо выдать пользователю две роли одна форумная вторая модераторская но при выдачи этим способом старая роль удаляется а новая записывается. Это можно как то исправить?
$assigned_role = 0;
. И не должно - это стандартное поведение и требование. Если набор выдаваемых прав отличается от набора прав, которые назначены ролью, то роль становится неназначенной, и запись из таблицы phpbb_acl_users
удаляется, вместо нее заносятся записи о каждом выданном праве доступа, отличном от Нет
Ну и выдавайте. Только параметры нужно правильно указать. Например, если
$assigned_role = 5
, что соответствует роли ROLE_USER_FULL
, то и набор прав (массив $auth_settings
) должен соответствовать этой роли или быть пустым, чтобы в таблице phpbb_acl_users
не было каши. В этом случае для пользователя с ID=2 поля таблицы должны иметь значения forum_id = 0; auth_option_id = 0; auth_role_id = 5; auth_setting = 0;
То есть локальные права и глобальные. Если локальные, нужно заполнить массив
$forum_id
, например
Код: Выделить всё
$forum_id = array(4,6,9,12);
Код: Выделить всё
$forum_id = array(7);
Вот такой вызов функцииSheer писал(а): ↑19.12.2018 16:10 Ну и выдавайте. Только параметры нужно правильно указать. Например, если $assigned_role = 5, что соответствует роли ROLE_USER_FULL, то и набор прав (массив $auth_settings) должен соответствовать этой роли или быть пустым, чтобы в таблице phpbb_acl_users не было каши
$auth_admin->acl_set('user', 5, 6422, array(), 25);
выдает пользователю 6422
полный доступ который указан в роли 25
на форум ID 5
. Все выдается без проблем но после этого я выдаю вторую роль $auth_admin->acl_set('user', 5, 6422, array(), 14);
и она тоже выдается но старая удаляется.Так я и спрашиваю как выдать одному пользователю две роли на один и тот же форум? Все что мне нужно так это пример кода в котором выдается пользователю форумная роль и модераторская роль на определенный форум. Так же хотелось бы понять как их удалять.
Роли должны быть разного типа. См. таблицу
phpbb_acl_roles
Нельзя выдать две роли, тип которых role_type
, например m_
одинаков.В вашем случае только SQL-запросом, например
Код: Выделить всё
DELETE FROM phpbb_acl_users WHERE user_id=50 AND auth_role_id=1
Я это понимаю но как мне это системно сделать?
$auth_admin->acl_set
Куда мне там вписать role_type
вот что я не понимаю.В ходе тестирования было выявлено что если удалить права на прямую из таблицы то они все равно остаются
Правильно указать параметры и правильно создать роль.
Код: Выделить всё
$auth_admin->acl_set($ug_type, $forum_id, $ug_id, $auth_settings, 13);
$auth_admin->acl_set($ug_type, $forum_id, $ug_id, $auth_settings, 14);
13 ROLE_MOD_QUEUE
14 ROLE_FORUM_FULL
Код: Выделить всё
$auth_admin->acl_set($ug_type, $forum_id, $ug_id, $auth_settings, 11);
$auth_admin->acl_set($ug_type, $forum_id, $ug_id, $auth_settings, 12);
ROLE_MOD_SIMPLE
никуда.