如果徽章可以可选地同步组成员资格会怎样?

我今天在查看这个主题:

在思考问题时,我发现 Discourse 在定义“动态”用户组方面略显薄弱。

给我一个注册超过 1 个月的用户组

给我一个至少发布过 10 次帖子的用户组

等等。

另一方面,一旦启用了高级 SQL,徽章系统对这种“动态”特性提供了非常丰富的支持。

在徽章上增加一个额外的复选框,将徽章与用户组关联起来,将大大增强功能。目前我们无法为徽章持有者分配权限,因为没有对应的用户组作为支撑。只有信任等级徽章具有这种特殊行为(我们可以将此功能移植到新系统中)。

因此,我的提议如下:

[ ] 将徽章成员镜像到用户组

一旦为特定徽章勾选此选项,系统将自动创建或根据名称查找对应的“用户组”,并在徽章成员发生变化时保持组成员同步。

大家怎么看?

20 个赞

Because the group membership management UI is so rich these days, changes should at least attempt to flow in the opposite direction as well (e.g. approving a Request to Join turns into a badge grant from the group manager; which wouldn’t normally happen as they aren’t staff).

6 个赞

I feel like this has massive overlap with trust levels; it’s building a parallel system for… well, I’m not sure why. In the quote you posted, that is literally the reason we have trust levels in the first place. So tying content unlock to

  • trust level 1 (a tiny bit of reading)
  • trust level 2 (a fair bit more reading)

should cover this scenario.

There are many many things I’d rather we work on than this.

I definitely do not see this as an urgent change, we lock out badge sql anyway out-of-the-box. However I do see this as something I would like to get to eventually.

It is a simple generalization of the “automatic group” system that now exists.

This does simplify workflows as well, you can grant a badge to a user and then you do not need to go to the group and also grant membership. For example: “Customer champion” badge that grants access to “champions” group and “champion discussion” category on the site. Having the bridge also means you only need to remove membership in 1 spot to have both badge and group change.

Nothing urgent to change here, its just that there are tons of parallels between groups and badges so having a bridge helps get automatic feature parity on both sides.

9 个赞

Prior requests:

I know that just tying this up to the a badge re-uses a bunch of code, and simplifies a lot, but ideally this would be an option in the Groups UI, to have an option query that returns the user_id of members.

When you tie this to SSO and custom user fields, you get a very powerful system, where you can manage groups using queries on those custom fields + all the info Discourse already have.

10 个赞

I have a client who wants just this. He wants to encourage people to fill in custom user fields after sign up and give them flair if they do it.

It’s easy enough to enable badge sql to find them a badge but we need to assign them to a group for flair.

How hard is a plugin to assign a user to a group of they have earned a badge?

5 个赞

Did you manage to solve this, @pfaffman? I’m exploring a similar scenario myself.

1 个赞

I did not, but I think that I now know how to develop such a plugin. Ping me with your budget and I’ll see what I can do for you.

1 个赞

I have no budget for this one, I think it can also (less elegantly) be achieved with an Integromat or Zapier script.

Well, maybe I could get you enough coffee code that you could tweak it yourself. I’m pretty busy right now, but I’ll see what I can do.

EDIT: Well, it’s not going to work how I thought it would. It’ll take me some time to figure out how to go about doing it.

2 个赞

我对这个话题很感兴趣。我想问一下是否有人开发了相应的插件?如果没有,我将开发一个。

最简单的实现方式是使用 Discourse 自动化,一个特殊的“同步徽章到群组”自定义脚本,应该相对容易构建。

或者通过 Discourse Data Explorer 的报告将用户添加到群组?
如果能做到这一点,那就太棒了。

现在使用 Automation 插件即可实现此功能::tada:

2 个赞