OAuth2 + 邮箱登录,无需注册表单

我正在构建一个社区门户,将使用 OAuth2 来链接提供商和 Discourse。我希望仅当邮箱被邀请加入社区时才允许通过邮箱登录(因此不应显示注册按钮),但希望允许所有 OAuth2 登录。

我似乎无法在 OAuth2/登录设置中实现这一点。这可行吗?本质上,我希望覆盖 OAuth2 的注册设置。

我认为你只需开启“仅邀请注册”选项。你已经这样做了但效果不符合预期吗?

那么,直接启用它们即可?

你具体做了哪些操作?哪些结果与你的预期不符?

问得好。这是我尝试的第一件事。以下是发生的情况(这是在 OAuth 流程之后):

下一步是取消勾选“启用新注册”:

我无法上传图片(因为我是新用户),但提示显示“目前不允许新账户注册。”

我不确定还有哪些其他选项可以解决这个问题。我尝试了各种各样的组合(这里无法一一列举),但至今尚未找到有效的解决方案。

我觉得我的意图没有被准确理解。我的 OAuth2 登录流程运行正常,但我希望在保持其启用的同时禁用新注册。OAuth2 和邮箱注册的设置似乎绑定在一起,因此我无法在禁用邮箱注册的情况下“直接启用”OAuth2。

如果未收到邀请的人尝试登录,你希望发生什么?

哦!你的意思是,如果有人尝试点击邀请链接,他们会看到这样的内容吗?

你只想允许被邀请的人加入。你希望这些人必须使用 Clove 登录。对吗?从你的示例来看,似乎正是如此。

我认为,启用“仅限邀请”模式,并禁用除 Clove 以外的所有登录方式,就能达到你想要的效果。没有 Discourse 账户的人会看到你显示的“仅限邀请”对话框。而已收到邀请的人应该能够通过 Clove OAuth 登录。

补充说明可能有助于阐明目标:

我正在搭建一个半私密社区,其中包含三类用户:工作人员(通过邮箱登录)、应用用户(通过 OAuth2 提供的单点登录 SSO)以及特殊访客(通过邮箱登录,但不是应用用户)。我希望特殊访客需要邀请才能登录(允许他们通过邮箱登录),但希望将 OAuth2 用户视为“可信”用户,无需邀请。原因是,能够成功完成 OAuth2 操作本身就意味着该用户是可信的。

我已经正确设置了基于邮箱的邀请登录功能,但这却影响了 OAuth2 登录,因为 OAuth2 用户也被要求提供邀请。我不希望他们需要或看到邀请——他们凭借拥有 SSO 账户这一事实已具备可信度。

这样是否更好地解释了问题?

这正是我遗漏的部分!

我想(但不完全确定),external auth skip create confirm 可能就是你要找的配置。该描述仅提到了 SSO,但我认为它现在也适用于 OAuth。我曾帮助他人设置了一个站点,使其在 OAuth2 配置中跳过创建对话框,我认为这就是关键所在。

我会尝试其他各种选项。结果如下:

仅邀请 + 外部跳过:

仅邀请、外部跳过、禁用邮箱登录:

看起来这些选项行不通。

啊,是的,真糟糕。我猜你接下来需要 fork oauth2 插件,并让它覆盖“仅限邀请”的设置。

感谢 @pfaffman,这似乎就是我不得不接受的情况。对于托管版 Discourse,这应该是不可能的吧?如果不是的话,我可能需要为它想别的办法了。