BenLeong
(Ben Leong)
1
我有一个特定的使用场景,想知道是否有更简便的方法来实现。
- 并非所有通过我们 SSO 的用户都拥有活跃的论坛账户
- 我们定期需要将用户添加到某个论坛群组,以授予其访问私有论坛的权限
- 在尝试将用户添加到群组之前,无法确定他们是否拥有活跃的论坛账户
例如:
每月,工作人员会有一份包含 100 多个账户的名单,这些账户有资格访问私有论坛。这些账户拥有 SSO 用户名和电子邮件地址,但可能尚未注册论坛账户。
是否有一种简单的方法,可以为已有论坛账户的用户直接添加到群组,并为没有账户的用户发送邀请(自动将其加入群组)?
在“群组”页面,“添加成员”按钮允许粘贴逗号分隔的用户名列表。当用户名有效时,用户会被添加到群组;如果用户名无效(即尚未拥有论坛账户),操作会失败,用户也不会被添加。
除了手动检查成功添加到群组的用户列表,识别哪些用户名未能添加,然后向这些人发送论坛邀请(例如:https://meta.discourse.org/t/multiple-use-invite-links/154325)之外,是否有一种简单的方法可以将“邀请”和“添加到群组”结合起来,同时处理现有用户和潜在用户?
BenLeong
(Ben Leong)
2
理想情况下,我希望找到一种一步到位的方法。
一个可能的(但依然非常笨拙!)多步骤变通方案可能是:
- 在数据浏览器查询中输入名称列表,该查询将返回活跃和非活跃用户名的列表
- 对活跃用户名列表使用“添加到组”功能
- 向所有非活跃用户发送自定义邀请链接
如果有办法简化这一流程,我非常乐意听取建议 
simon
4
您是否研究过使用 SSO 参数 add_groups 和 remove_groups 将用户添加到 Discourse 群组?对于在您 SSO 提供商站点上已存在的用户,您可以为他们创建 Discourse 账号,并通过调用 sync_sso 路由的 API 将他们添加到 Discourse 群组。有关设置此功能的详细信息,请参阅:使用 sync_sso 路由同步 SSO 用户数据。如果这种方法对您可行,我们可以为您提供更详细的设置指导。
1 个赞
BenLeong
(Ben Leong)
5
谢谢 Simon,这看起来很有希望。
我们所有用户都存在于 SSO 站点上(他们是我们在市场中的卖家),但目前只有其中一部分会创建 Discourse 账户来使用我们的论坛。该 SSO 同时涵盖客户和卖家:我们不希望为所有客户自动创建 Discourse 账户(数量实在太多了!),但如果为所有卖家这样做,将大大简化流程。
在这种情况下,我们需要仅在特定卖家开始使用特定市场或服务时,才授予他们访问私有论坛组的权限。
例如:Marketplace 1 的卖家拥有一个 SSO 账户。他们可能会在此阶段通过登录论坛来创建 Discourse 账户。
之后,该卖家获得对 Marketplace 2 的访问权限,其 SSO 账户将记录这一变更。我们为该市场设置了自定义用户组(以及私有论坛分类)。
- 如果此时他们已有 Discourse 账户,我们需要更新其所属组别,以便他们能够访问私有论坛区域。
- 如果此时他们尚未拥有 Discourse 账户,我们希望为他们创建一个账户,并赋予相应的组别权限。
目前团队使用“添加到组”功能,并传入逗号分隔的用户名列表。如果用户已有 Discourse 账户,他们将获得该组的访问权限;如果尚未在论坛上注册,则此操作无效。
为了捕获自上次批量添加用户到组以来新创建 Discourse 账户的用户,团队通常会在更新组成员资格时包含过去 X 个月内所有符合条件的用户名,这是一个相当繁琐的流程。
simon
6
如果您向 sync_sso 路由发起 API 调用,并在其中包含 add_groups SSO 参数,现有用户将被添加到相应群组。如果用户尚未拥有 Discourse 账户,系统将为其创建账户并将其添加到该群组。您也可以类似地使用 remove_groups SSO 参数将用户从群组中移除。使用 sync_sso 路由的另一大优势是,无需用户退出并重新登录 Discourse,更改即可生效。
如果您的团队需要参考一些 PHP/WordPress 示例代码,可以查看此处实现:https://github.com/discourse/wp-discourse/blob/master/lib/utilities.php#L378。我链接的文件包含了一些实用函数,网站可使用这些函数来扩展 WP Discourse 插件。这也是它采用静态函数的原因。
4 个赞
system
(system)
关闭
8
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.