Adding/removing user role on his login - based on non-Drupal tables
我最近将Flash / Perl纸牌游戏从使用phpBB 3作为后端转移到了Drupal 7,并且运行良好,但是我对(重新)启用该论坛感到犹豫-因为在我的旧站点上有一些用户在吓我一跳。
我想在我的网站上再次提供一个论坛,但仅针对在我的网站上玩了足够长的游戏并拥有良好信誉的用户。这两个信息(玩过多少游戏的声望)由我的Perl游戏维护,并保存在非Drupal表中(但与Drupal表位于同一数据库中)。我创建了受信任用户的Drupal用户角色:
1 2 3 4 5 6 7 | # 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中有一个更好的位置,我可以在他的登录名上更改用户角色吗?
即用户重新访问我的网站时,通过针对我的非Drupal表的2个快速选择查询来检查其声誉和游戏数,然后将其添加(或删除-如果其声誉降低)到受信任的用户角色并可以在论坛中撰写。
谢谢!
亚历克斯
根据用户数量,从性能angular考虑,最好是在他们执行某项操作时实际上给他们分配必要的角色,而不是在每次页面加载时都执行两个查询。
如果要执行此操作,可以使用hook_init()将角色添加到全局$ user对象中。
您是否检查过hook_user_login?您需要将其放在自定义模块中,但是当用户通过该钩子登录后,您应该可以将该角色添加到用户中。
用于控制点和更改用户角色的用户规则。还要在运行自定义查询的规则中启用PHP筛选器模块以执行自定义PHP代码。