如何在自动注册时分配特定的用户角色 - 简单的 FB Connect - Drupal 7

Posted

技术标签:

【中文标题】如何在自动注册时分配特定的用户角色 - 简单的 FB Connect - Drupal 7【英文标题】:how to assign specific user roles upon automatic registration - simple FB Connect - Drupal 7 【发布时间】:2016-07-24 20:47:49 【问题描述】:

如何在使用 Simple FB Connect 自动注册时从 drupal core(D7) 分配特定角色?我目前正在使用自动角色分配并为 2 个角色进行自定义注册,一个是具有有限权限的基本角色,另一个是具有更多编辑/创建权限的高级角色。我的问题是简单的 FB 连接链接效果很好,但正在为错误的角色注册人员。如何根据 url 选择分配的角色?

也许 template.php 中的某些内容允许将以下 url 放置在我的 facebook 按钮上?

/user/simple-fb-connect?registration=1&role=my_custom_role

【问题讨论】:

【参考方案1】:

您可以使用 hook_user_insert 并检查 url 并分配所需的角色,

     function module_name_user_insert(&$edit, $account, $category)

         if($_SERVER['REQUEST_URI'] =="url")
        
        //add code to assign desired role;
        //assuming rid of custom role is 1
        $account->roles[1]='custom_role';
        

【讨论】:

在创建自定义模块并将其添加到其中时,这会引发错误。我将 uri 更新为 (example.com) 并删除为“3”,但它似乎在自定义注册页面上抛出错误,-“未定义索引” 我不知道为什么这不起作用,也许是因为简单的 fb 模块必须传递给 facebook 然后返回到站点,请求 url 将是 facebook.com 而不是 mydomain.com 或也许这只有在用户填写注册页面上的字段时才有效……很难说。但是是的,它不起作用。 如果它是从 facebook 或任何第三方 URL 重定向,那么用户也已注册到您的应用程序中。需要验证【参考方案2】:

我鼓励你看看规则模块:https://www.drupal.org/project/rules/

此模块允许您根据事件创建自动化任务。你想做的是:

下载并启用规则模块:https://www.drupal.org/project/rules/ 您还需要启用规则 UI 进入规则配置:example.com/admin/config/workflow/rules 创建新规则 规则事件应类似于:“用户注册连接到 Facebook 的新帐户” 规则操作应类似于:“将角色分配给用户”

界面应该非常简单。 这里有一些额外的资源:

规则手册 https://www.drupal.org/documentation/modules/rules

【讨论】:

是的,实际上我首先尝试过,但我还需要将一些条件传递给规则来定义它是“基本”用户还是“编辑器”用户登录。我能想到的唯一方法它是在 url 中传递一个字符串,由于简单的 fb connect 使我可以通过在字符串中传递它来自定义登录页面,我认为这可能有效,但在尝试向 fb 注册时,它会将我发送回此页面@987654324 @ 在我的规则条件下,我将路径别名设置为 'editor' 。没用 出于安全原因,您不应允许用户通过将其传递到 URL 中来“选择”他/她的角色。您不希望您的用户输入他们想要的角色。 您应该有规则在每次有人注册给他/她编辑角色时向您网站上的“版主”(管理员)发送一封电子邮件。

以上是关于如何在自动注册时分配特定的用户角色 - 简单的 FB Connect - Drupal 7的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 Learndash 课程中创建用于自动注册 WP 角色的功能吗?

分配/删除不和谐角色

仅在使用特定哈希/锚点调用页面时分配/激活 CSS 类

按用户角色设计注册编辑?

创建一个 MiniDump,不包括运行时分配的内存范围

如何使用 laravel 8 +jetstream + spatie 为注册用户分配角色