在登录时添加/删除用户角色 - 基于非Drupal表

时间:2011-03-12 17:59:49

标签: drupal login drupal-7

我最近已将a Flash/Perl card game从使用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个点 - 计算游戏的位置和信誉的变化 - 然后调用'insert / delete from users_roles,其中uid =?',但也许在Drupal中有更好的位置,我可以在登录时更改用户角色

即。用户(重新)访问我的网站,他的信誉游戏数量通过针对我的非Drupal表的2个快速选择查询进行检查,然后添加(或删除 - 如果他的声誉已降低)到可信用户角色并且可以在论坛中写作。

谢谢! 亚历

3 个答案:

答案 0 :(得分:0)

用户Rules用于控制点和更改用户角色。还启用PHP过滤器模块,以在规则中执行自定义PHP代码以运行自定义查询。

答案 1 :(得分:0)

您检查了hook_user_login吗?您需要将它放在自定义模块中,但是您应该能够在通过该挂钩登录后将该角色添加到用户。

答案 2 :(得分:0)

根据用户数量的不同,在执行某些操作时实际为其提供必要的角色,而不是在每个页面加载时执行两个查询,这在性能方面可能更好。

如果您想这样做,可以使用hook_init()将角色添加到全局$ user对象。