Добавление пользователя через 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 » 19.12.2018 18:19

Sheer писал(а):
19.12.2018 18:10
Правильно указать параметры и правильно создать роль.
Проблема в том что это очевидно и в этом проблем нету. Я выдаю две роли(14 и 25). Роль 14 это role_name ROLE_FORUM_FULL и role_type f_ Роль 25 созданная мной и название указал я у нее role_type m_

Отправлено спустя 6 минут 25 секунд:
Sheer писал(а):
19.12.2018 17:52
В вашем случае только SQL-запросом, например

DELETE FROM phpbb_acl_users WHERE user_id=50 AND auth_role_id=1
Удалял запросом в базе удалилось но на форуме права остались

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

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

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

Значит какие-то права, соответствующие этой роли в таблице phpbb_acl_users остались.
Тогда

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

DELETE FROM phpbb_acl_users WHERE user_id=50
удалит все права этого пользователя и сбросит их в Нет, а так же удалит все присвоенные ему роли.
И похоже у вас там каша уже в базе.
Изображение
Общие ошибки новичков (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 18:46

Sheer писал(а):
19.12.2018 18:39
И похоже у вас там каша уже в базе.

Какая каша может быть в базе если функция $auth_admin->acl_set удаляет старые права без всяких проблем. Если выдать права $auth_admin->acl_set все норм работает а вот если я напрямую их впишу в БД их не будет хоть и они будут везде в таблицах. Так вы можете мне обьяснить почему при выдачи двух ролей разного типа выдается лишь одна удаляя предыдущею?

Отправлено спустя 18 секунд:
Может нужна другая функция либо дополнительные параметры?

Отправлено спустя 5 минут 2 секунды:
Я уже писал выше о том что если через БД выдать права либо удалить права то ничего не меняется но если через профиль пользователя применить его права то будут права из БД.

Отправлено спустя 2 минуты 26 секунд:
Если удалить права через Бд после чего проверить маску прав пользователя то можно увидеть что прав остались. Однако если же применить его права в профиле то применяться права из БД иными словами их не будет

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

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

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

Я не стоял у вас за спиной и не знаю, что вы там творите.
zabe1 писал(а):
19.12.2018 18:47
Какая каша может быть в базе
Могут быть дубликаты прав доступа, могут быть потерянные права доступа, могут быть некорректные записи в таблице phpbb_moderator_cacheЭто можно проверить при помощи [3.1][3.2] [dev] STK for phpBB 3.2.x & 3.1.x
Установите форум на локальном компьютере, создайте пользователя и экспериментируйте на чистой БД.

Отправлено спустя 4 минуты 41 секунду:
+
Старая тема, но можете почитать https://www.phpbb.com/community/viewtopic.php?t=2102170

Отправлено спустя 14 минут 17 секунд:
И еще... в папке /cache создаются два файла помимо прочих data_acl_options.php и data_role_cache.php. Это ни о чем не говорит?
Изображение
Общие ошибки новичков (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 19:26

Sheer писал(а):
19.12.2018 19:15
И еще... в папке /cache создаются два файла помимо прочих data_acl_options.php и data_role_cache.php. Это ни о чем не говорит?
Их надо удалять?

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

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

Сообщение Sheer » 19.12.2018 19:40

Ну да. Данные кешируются. После изменения данных напрямую в БД нужно очищать кеш. Можно программно.

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

		global $auth, $cache;

		$cache->purge();

		// Clear permissions
		$auth->acl_clear_prefetch();
		cache_moderators();
Изображение
Общие ошибки новичков (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 19:40

Давайте так что было всем понятно я обьясню ситуацию а вы уже подскажите как ее решить. Есть игровой сервер форум которого собственно и создан. Стоит задача. Выдавать права определенному пользователю на определенный форум и так же удалять этим права в автоматическом режиме с помощью самого сервера. Сервер дает возможность отправлять как HTTP запросы так и SQL запросы. Как это лучше реализовать? Каково ваше мнение?

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

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

Сообщение Sheer » 19.12.2018 19:41

Подключать "родные" функции phpBB и пользоваться ими.
Изображение
Общие ошибки новичков (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 19:43

Sheer писал(а):
19.12.2018 19:41
Подключать "родные" функции phpBB и пользоваться ими.
Ну тогда откидаем вариант с SQL запросами. Как тогда мне это реализовать системно? Какие функциями?

Отправлено спустя 1 минуту 5 секунд:
Мне сервер с помощью HTTP дает ID пользователя ID роли и ID форума. Что дальше делать с информацией?

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

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

Сообщение Sheer » 19.12.2018 21:32

zabe1 писал(а):
19.12.2018 19:44
Ну тогда откидаем вариант с SQL запросами
Почему. Сам движек их вовсю использует. А иначе никак. Просто кешированные данные следует обновлять. Что тот же движек и делает.
zabe1 писал(а):
19.12.2018 19:44
Что дальше делать с информацией?
Сообщить их функции acl_set();
Изображение
Общие ошибки новичков (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 22:59

Sheer писал(а):
19.12.2018 21:32
Почему. Сам движек их вовсю использует. А иначе никак. Просто кешированные данные следует обновлять. Что тот же движек и делает.
Я имел введу отправлять их напрямую с сервера.

Отправлено спустя 1 минуту 47 секунд:
Sheer писал(а):
19.12.2018 21:32
Сообщить их функции acl_set();
Она удаляет старые роли и прописывает новые. По вашему совету тестировал на чистой БД та же проблема. Ставил сначала роль 14 ROLE_FORUM_FULL потом роль 10 ROLE_MOD_FULL в результате 10 выдалось а 14 нету. По отдельности все работает.

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

		$auth_admin->acl_set('user', 5, 2, array(), 14);
		$auth_admin->acl_set('user', 5, 2, array(), 10);
Отправлено спустя 1 час 26 минут 48 секунд:
может надо что то дописать в $auth вместо array()?

Аватара пользователя
Pazh
Former team member
Сообщения: 2194
Зарегистрирован: 09.11.2009 17:46
Благодарил (а): 41 раз
Поблагодарили: 454 раза

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

Сообщение Pazh » 20.12.2018 12:44

zabe1, ну и каша у Вас в голове...
Роль - это какой-то предустановленный админом набор прав. Соответственно одной группе/пользователю может быть назначена только ОДНА роль (точнее по одной в каждом типе прав - форумные, пользовательские, глобальные)

Если Вам нужно дать юзеру права, которые у Вас прописаны в роли1 или в роли2, то вам нужно в админке создать НОВУЮ роль3 и выставить для нее нужный набор прав, которые есть в роли1 или роли2, и давать юзеру соответственно роль3, а не последовательно роль1 и роль2 как вы пытались сделать сейчас

Другой вариант - отказаться от ролей и манипулировать только самим правами. Но тут возникнет другая проблема - если Вы заходите всем юзерам, у которых есть какое-то право изменить это - придется вручную их (юзеров) выискивать. Т.е., с Вашим уровнем понимания системы прав доступа, так делать не нужно.
форум ЖК Вестердам Помощь в ЛС/email только за WM или ЯД

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

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

Сообщение zabe1 » 20.12.2018 13:11

Pazh писал(а):
20.12.2018 12:44
Роль - это какой-то предустановленный админом набор прав. Соответственно одной группе/пользователю может быть назначена только ОДНА роль (точнее по одной в каждом типе прав - форумные, пользовательские, глобальные)
Есть пользовательские u_ форумные f_ модераторские m_ и администраторские a_ роли. В моем случае я выдаю форумную и модераторскую роль отдельному пользователю на отдельный форум.

Отправлено спустя 29 секунд:
Pazh писал(а):
20.12.2018 12:44
Если Вам нужно дать юзеру права, которые у Вас прописаны в роли1 или в роли2, то вам нужно в админке создать НОВУЮ роль3 и выставить для нее нужный набор прав, которые есть в роли1 или роли2, и давать юзеру соответственно роль3, а не последовательно роль1 и роль2 как вы пытались сделать сейчас
Если выдать эти роли вручную через адм панель всё выдается без проблем.

Аватара пользователя
Pazh
Former team member
Сообщения: 2194
Зарегистрирован: 09.11.2009 17:46
Благодарил (а): 41 раз
Поблагодарили: 454 раза

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

Сообщение Pazh » 20.12.2018 14:05

X
zabe1 писал(а):
20.12.2018 0:27
Ставил сначала роль 14 ROLE_FORUM_FULL потом роль 10 ROLE_MOD_FULL в результате 10 выдалось а 14 нету. По отдельности все работает.

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

		$auth_admin->acl_set('user', 5, 2, array(), 14);
		$auth_admin->acl_set('user', 5, 2, array(), 10);
function acl_set($ug_type, $forum_id, $ug_id, $auth, $role_id = 0, $clear_prefetch = true)

При назначении модераторской или пользовательской роли пользователю/группе в переменную $auth функции acl_set штатно передается массив фактических прав данной роли с префиксом m_ или u_ соответственно, т.е. заполнение массива прав даже при указании id роли обязательно
форум ЖК Вестердам Помощь в ЛС/email только за WM или ЯД

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

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

Сообщение zabe1 » 20.12.2018 14:20

Pazh писал(а):
20.12.2018 14:05
При назначении модераторской или пользовательской роли пользователю/группе в переменную $auth функции acl_set штатно передается массив фактических прав данной роли с префиксом m_ или u_ соответственно, т.е. заполнение массива прав даже при указании id роли обязательно

Выходит мне нужно указать все права роли в $auth при выдачи этой роли?

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