Добавление пользователя через HTTP

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
zabe1
phpBB 1.4.1
Сообщения: 45
Зарегистрирован: 08.11.2018 19:07

Re: Добавление пользователя через HTTP

Сообщение zabe1 » 18.12.2018 22:35

Если использовать ваш пример то какие инклуды надо подключить что бы он работал?

Отправлено спустя 1 минуту 28 секунд:
Sheer писал(а):
18.12.2018 22:35
Тогда составляйте SQL-запросы и вперед. Только не запутайтесь в таблицах
С помощью запросов выдал права и все добавилось но сразу же появилась проблема. Везде указано что права есть но по факту у пользователя их нет. Именно из за этого я и написал сюда

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11485
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2576 раз
Контактная информация:

Re: Добавление пользователя через HTTP

Сообщение Sheer » 18.12.2018 22:38

zabe1 писал(а):
18.12.2018 22:37
то какие инклуды надо подключить
rxu писал(а):
18.12.2018 21:43
includes\acp\acp_permissions.php
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

zabe1
phpBB 1.4.1
Сообщения: 45
Зарегистрирован: 08.11.2018 19:07

Re: Добавление пользователя через HTTP

Сообщение zabe1 » 18.12.2018 22:39

В таблицах полностью разобрался. Выдал все нужные роли пользователю. Через адм проверил его права и там все в норме но вот если зайти на аккаунт пользователя то прав нету. Из за этого решил на прямую HTTP запросом выдать права. Возможно как то решить проблему добавления через SQL запросы?

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11485
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2576 раз
Контактная информация:

Re: Добавление пользователя через HTTP

Сообщение Sheer » 18.12.2018 22:39

zabe1 писал(а):
18.12.2018 22:37
но сразу же появилась проблема
Я же сказал, в таблицах не запутайтесь. https://www.phpbbguru.net/database/tables/

Отправлено спустя 32 секунды:
zabe1 писал(а):
18.12.2018 22:39
В таблицах полностью разобрался
Значит не полностью.

Отправлено спустя 2 минуты 39 секунд:
zabe1 писал(а):
18.12.2018 22:39
но вот если зайти на аккаунт пользователя то прав нету
Что это значит? Вы авторизовываетесь как этот пользователь, или проверяете права из его профиля?
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

zabe1
phpBB 1.4.1
Сообщения: 45
Зарегистрирован: 08.11.2018 19:07

Re: Добавление пользователя через HTTP

Сообщение zabe1 » 18.12.2018 22:43

Sheer писал(а):
18.12.2018 22:39
Я же сказал, в таблицах не запутайтесь
Попробую по другому обьяснить. В таблицах полностью разобрался. Выдаю права пользователю. Везде права выдались. Если пробить по маскам либо посмотреть на форуме все выдалось. На форуме пишет что человек модератор и т.д. Через адм проверяю сами права и там все работает но если зайти на аккаунт пользователя то прав нету. В wiki читал что это связано с тем что выдача прав кэшируется и надо чистить кэш. Если у кого то есть информация по поводу того как это правильно сделать либо как это обойти другим способом буду благодарен

Отправлено спустя 3 минуты 6 секунд:
Что это значит? Вы авторизовываетесь как этот пользователь, или проверяете права из его профиля?
Авторизовался как этот пользователь и там прав нету. А если проверить права из его профиля то все в норме
Последний раз редактировалось zabe1 18.12.2018 22:47, всего редактировалось 1 раз.

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11485
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2576 раз
Контактная информация:

Re: Добавление пользователя через HTTP

Сообщение Sheer » 18.12.2018 22:46

zabe1 писал(а):
18.12.2018 22:43
но если зайти на аккаунт пользователя
Выражайтесь точнее. Что значит "зайти на аккаунт"? Вы авторизовываетесь как этот пользователь или переносите на себя его права, будучи администратором?
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

zabe1
phpBB 1.4.1
Сообщения: 45
Зарегистрирован: 08.11.2018 19:07

Re: Добавление пользователя через HTTP

Сообщение zabe1 » 18.12.2018 22:47

Sheer писал(а):
18.12.2018 22:46
Выражайтесь точнее. Что значит "зайти на аккаунт"? Вы авторизовываетесь как этот пользователь или переносите на себя его права, будучи администратором?
Авторизовался как этот пользователь

zabe1
phpBB 1.4.1
Сообщения: 45
Зарегистрирован: 08.11.2018 19:07

Re: Добавление пользователя через HTTP

Сообщение zabe1 » 19.12.2018 13:13

Sheer писал(а):
18.12.2018 21:59
$auth_admin->acl_set($ug_type, $forum_id, $ug_id, $auth_settings, $assigned_role);
Тест показал что такой способ работает но мне надо выдать пользователю две роли одна форумная вторая модераторская но при выдачи этим способом старая роль удаляется а новая записывается. Это можно как то исправить?

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11485
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2576 раз
Контактная информация:

Re: Добавление пользователя через HTTP

Сообщение Sheer » 19.12.2018 16:10

В приведенном примере вообще никакой роли не назначается, ибо $assigned_role = 0;. И не должно - это стандартное поведение и требование. Если набор выдаваемых прав отличается от набора прав, которые назначены ролью, то роль становится неназначенной, и запись из таблицы phpbb_acl_users удаляется, вместо нее заносятся записи о каждом выданном праве доступа, отличном от Нет
zabe1 писал(а):
19.12.2018 13:13
мне надо выдать пользователю две роли
Ну и выдавайте. Только параметры нужно правильно указать. Например, если $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;
zabe1 писал(а):
19.12.2018 13:13
одна форумная вторая модераторская
То есть локальные права и глобальные. Если локальные, нужно заполнить массив $forum_id, например

Код: Выделить всё

$forum_id = array(4,6,9,12);
или

Код: Выделить всё

$forum_id = array(7);
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

zabe1
phpBB 1.4.1
Сообщения: 45
Зарегистрирован: 08.11.2018 19:07

Re: Добавление пользователя через HTTP

Сообщение zabe1 » 19.12.2018 16:17

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); и она тоже выдается но старая удаляется.

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11485
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2576 раз
Контактная информация:

Re: Добавление пользователя через HTTP

Сообщение Sheer » 19.12.2018 17:28

Форумная роль одинакового типа (например модераторская) может быть выдана только одна.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

zabe1
phpBB 1.4.1
Сообщения: 45
Зарегистрирован: 08.11.2018 19:07

Re: Добавление пользователя через HTTP

Сообщение zabe1 » 19.12.2018 17:34

Sheer писал(а):
19.12.2018 17:28
Форумная роль одинакового типа (например модераторская) может быть выдана только одна.
Так я и спрашиваю как выдать одному пользователю две роли на один и тот же форум? Все что мне нужно так это пример кода в котором выдается пользователю форумная роль и модераторская роль на определенный форум. Так же хотелось бы понять как их удалять.

Отправлено спустя 5 минут 40 секунд:
У меня есть ид пользователя ид форума к которому надо дать права и ид ролей которые нужно дать пользователю. Задача системно выдать пользователю модераторскую роль на данный форум и форумную роль после чего так же системно снять эти роли с пользователя. Все что мне надо это пример кода а дальше я уже разберусь.

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11485
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2576 раз
Контактная информация:

Re: Добавление пользователя через HTTP

Сообщение Sheer » 19.12.2018 17:50

zabe1 писал(а):
19.12.2018 17:40
Так я и спрашиваю как выдать одному пользователю две роли на один и тот же форум?
Роли должны быть разного типа. См. таблицу phpbb_acl_rolesНельзя выдать две роли, тип которых role_type, например m_ одинаков.

Отправлено спустя 2 минуты 46 секунд:
zabe1 писал(а):
19.12.2018 17:40
Так же хотелось бы понять как их удалять.
В вашем случае только SQL-запросом, например

Код: Выделить всё

DELETE FROM phpbb_acl_users WHERE user_id=50 AND auth_role_id=1
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

zabe1
phpBB 1.4.1
Сообщения: 45
Зарегистрирован: 08.11.2018 19:07

Re: Добавление пользователя через HTTP

Сообщение zabe1 » 19.12.2018 17:54

Sheer писал(а):
19.12.2018 17:50
Роли должны быть разного типа. См. таблицу phpbb_acl_rolesНельзя выдать две роли, тип которых role_type, например m_ одинаков.
Я это понимаю но как мне это системно сделать? $auth_admin->acl_set Куда мне там вписать role_type вот что я не понимаю.

Отправлено спустя 1 минуту 25 секунд:
Можете две строчки написать примера того как выдается одна роль системно и как другая? А я там уже все сам додумаю

Отправлено спустя 54 секунды:
Или может нужна другая функция? Вот в чем я не разбираюсь. Мне просто нужен пример кода

Отправлено спустя 11 минут 20 секунд:
Sheer писал(а):
19.12.2018 17:52
В вашем случае только SQL-запросом, например
В ходе тестирования было выявлено что если удалить права на прямую из таблицы то они все равно остаются

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11485
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2576 раз
Контактная информация:

Re: Добавление пользователя через HTTP

Сообщение Sheer » 19.12.2018 18:10

zabe1 писал(а):
19.12.2018 17:56
как мне это системно сделать?
Правильно указать параметры и правильно создать роль.
Например

Код: Выделить всё

		$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);
где ID пользователя 50, ID форума 3 сработает, ибо две разные роли разных типов.
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);
добавит только одну роль 12 - ROLE_MOD_SIMPLE
zabe1 писал(а):
19.12.2018 17:56
Куда мне там вписать role_type
никуда.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

Ответить

Вернуться в «Для авторов»