新用户无批准按钮

我漏掉了什么?刚刚有一个用户首次通过 WordPress SSO 登录。我配置了需要审批,那这个选项不应该出现在这里吗?我完全不知道如何审批该用户 :frowning:

我的管理菜单中确实有通知,提示有一位用户等待审批。

如果我同时启用 SSO 和“必须审批用户”站点设置,我可以复现此问题。要审批用户,请点击审查项中的用户名:

这将带您进入用户的管理页面:

在用户管理页面的“权限”部分,如果用户尚未激活,请点击“激活账户”按钮:

然后点击“审批”按钮:

这应该可以审批该用户,并从您的审查队列中清除该通知。

好的,问题已解决,感谢!那么这是按设计如此吗?我不太理解“激活”这一概念在这里是如何运作的。我是否每次都需要同时执行激活和批准操作?

我认为同时启用 SSO 和“必须批准用户”属于一种边缘情况。我不确定预期的工作方式是什么。理想情况下,启用 SSO 后,应在 SSO 提供商站点(WordPress)上处理用户审批。不幸的是,这需要一些自定义代码。有关设置详情,请参阅 https://meta.discourse.org/t/how-to-prevent-some-wp-users-from-being-able-to-login-to-discourse/93234。

我将研究在同时启用“必须批准用户”和 SSO 时,用户审批的预期工作方式。如果我发现任何值得注意的内容,会在此处汇报。

感谢你的精彩回复,@simon。我此前没有提到这一点,因为这只是基于我的记忆(而我的记忆向来不可靠)。但……

我刚刚有一位新用户登录,我立刻就能看到审批选项,也就是说无需先经过激活阶段。

这让我仍然感到非常困惑。我并没有进行任何配置更改,无法解释为何最近两位新用户的流程会有所不同。真是让人一头雾水……

如果我发现更多情况,会及时告知你。

再次感谢。

我以为这是不允许的。SSO 主机负责管理用户。我的理解是,如果你需要某些在 SSO 上有账户的用户无法访问 Discourse,你需要通过群组进行管理,或以某种方式拒绝他们登录 Discourse。

虽然我们遇到了一些奇怪的情况,即用户尝试登录后,必须同时激活并批准部分用户,但整体来看系统似乎运行正常。根据我们当前的设置,管理员需要在每位用户首次尝试登录时批准其请求。这尚可接受(某种程度上——详见下文),因此这两个设置(使用 SSO 和批准用户)看起来是可行的。

不过,无法在用户首次尝试登录之前预先批准一批用户,这一点令人遗憾,也构成了相当大的问题。这意味着即使用户身份我们(管理员)早已知晓,他们仍需在登录前等待批准。

我怀疑 @simon 说得对,从 Discourse 的角度来看,这确实是一个边缘案例。然而,对于 WooCommerce 网站而言,同时销售普通商品和会员资格的情况其实非常普遍。我目前就处于这种情境中,这也是一个相当常见的场景。因此,我的用户被分为两个(且存在重叠)逻辑集合:客户和会员。我希望能够预先批准会员列表,这样他们就不必等待批准。我可能会在稍后考虑自动化处理这一问题,但那必须等到 9 月 1 日论坛正式上线之后,这实在令人遗憾。

啊哈!您希望配置 WooCommerce 来在 Discourse 中管理这些用户组,而不是手动在 Discourse 中处理这些用户。关于如何实现这一点有一些相关讨论。这需要一些自定义代码,并且有一些示例可供参考。作为参考,我通常对此类服务收费 1000 至 1500 美元。

感谢 @pfaffman。我大概可以花些时间自己完成,并且一直在进行研究。在发布时,我会设定一个预期:需要审批,并尽量快速处理这些审批。发布后,我会看看能否以某种方式实现自动化。

关于我对完全自动化方案的期望,有一点需要澄清。

我希望避免这样的方案:非成员实际上可以登录,但随后被阻止执行任何操作(可能是因为他们不属于某个与成员相关的群组)。相反,如果用户不是成员,我希望他们的登录直接失败,最好能够重定向到一个页面,在那里我可以解释原因。

换句话说,如果非成员则阻止登录,优于允许登录但随后阻止访问资源。

再次感谢。

@simon 我花了几分钟时间研究了解决这个挑战的可能方案,结果在这个页面上偶然发现了您 :slight_smile: WP Discourse – WordPress plugin | WordPress.org

我的业务围绕 WordPress 和 WooCommerce 展开,我所有的集成都倾向于尽可能使用标签来管理用户。WP Fusion 是将这一切整合在一起的纽带,但归根结底,所有用户(无论是客户、会员等)都带有标签。

基于上述背景,我非常希望能编写一个自己的 WordPress 函数,实现某些逻辑(在我的情况下,仅仅是检查用户是否带有特定标签),如果不符合该条件则拒绝登录。

您是否知道有任何钩子(hook)可以利用,让我能够实现这一逻辑?这将是一个完美的解决方案,同时让登录过程仍然完全由 WordPress 掌控。

谢谢。

是的,这个主题介绍了如何实现您想要的内容:https://meta.discourse.org/t/how-to-prevent-some-wp-users-from-being-able-to-login-to-discourse/93234。该主题的第二条回复中包含两个示例函数,您可以直接使用。您需要提供代码,替换掉代码示例中 /* 某些条件,如果用户不满足会员要求则返回 true */ 这一注释部分。

太棒了!我想我之前浏览这个话题时误解了它,但现在看来它正是我需要的。在等待实施和测试(这可是经典的“豪言壮语”!)之后,我觉得我已经准备好了!

谢谢。

我猜也是……而且……

早就告诉过你啦!:wink:

很高兴看到你已经在顺利解决此事了。

确实如此。很抱歉我漏掉了这一点,@pfaffman,感谢您的帮助。我这就去设置一个镜像的 Discourse VPS,让它与我的镜像网站对接。一切顺利的话,希望能很快上线运行。