Добавление / удаление роли пользователя при входе в систему - на основе таблиц, не относящихся к Drupal - PullRequest
0 голосов
/ 12 марта 2011

Я недавно перевел карточную игру Flash / Perl из использования phpBB 3 в качестве бэкэнда в Drupal 7, и это сработало хорошо, но я не решаюсь (повторно) включить форум - потому что некоторые пользователи на моем старом сайте меня это бесило.

Я бы хотел снова предложить форум на моем сайте, но только тем пользователям, которые достаточно долго играют на моем сайте и имеют достаточно хорошую репутацию. Обе данные (сколько игр сыграно + репутация) поддерживаются моей Perl-игрой и хранятся в таблицах не на Drupal (но в той же базе данных, что и таблицы на Drupal). И я создал роль пользователя Drupal доверенный пользователь :

# select * from drupal_role;
 rid |        name        | weight
-----+--------------------+--------
   1 | anonymous user     |      0
   2 | authenticated user |      1
   3 | trusted user       |      2
(3 rows)

Я мог бы изменить 2 места в моей игре - где подсчитываются игры и где меняется репутация - и затем вызвать «вставить / удалить из users_roles, где uid =?», Но, возможно, в Drupal есть лучшее место, где Я мог бы изменить роль пользователя при его входе в систему ?

т.е. пользователь (повторно) посещает мой сайт, его репутация и количество игр проверяются с помощью 2 запросов быстрого выбора к моим таблицам, не относящимся к Drupal, и затем он добавляется (или удаляется), если его репутация снизилась) до роли доверенного пользователя и может писать на форуме.

Спасибо! Alex

Ответы [ 3 ]

0 голосов
/ 13 марта 2011

Вы проверили hook_user_login ?Вам нужно будет поместить его в пользовательский модуль, но затем вы сможете добавить роль пользователю после того, как он войдет в систему с помощью этого хука.

0 голосов
/ 13 марта 2011

В зависимости от количества пользователей, было бы лучше, если бы они выполняли какие-то роли, когда они что-то делали, вместо того, чтобы выполнять два запроса при каждой загрузке страницы.

Если вы хотитедля этого вы можете использовать hook_init () для добавления ролей в глобальный объект $ user.

0 голосов
/ 13 марта 2011

Пользователь Правила для управления точками и изменения ролей пользователей. Также включите модуль PHP Filter для выполнения пользовательского кода PHP в Правилах для выполнения пользовательских запросов.

...