我正在搭建一个面向持证专业人士的 Discourse 论坛。每位用户都将经过验证,并可以自定义用户名,但我们希望其个人资料中的全名与其资质信息保持一致。是否有办法要求修改全名字段时必须经过版主审批?
你好,
目前这还无法实现。
谢谢。是否可以在用户资料中引入一个自定义字段,并设置该字段禁止修改?
编辑:没关系,我看到这可以在“设置”>“自定义”>“用户字段”中实现。
是否可以为工作人员设置一个日志记录或通知系统,以便在用户修改其姓名时进行通知?
您可以配置用户事件 webhook,将其指向 Discourse 外部的某个服务,当用户在其个人资料页面进行任何更改时,该服务会向您发送通知。像 Zapier 这样的服务可用于处理 webhook:https://meta.discourse.org/t/discourse-webhooks-and-zapier/56753。
采用 webhook 方法时,若要确定用户的 name 属性是否被更改,需要做一些额外工作:您需要将 webhook 的负载与您保存到外部数据库中的用户数据进行比较。但如果您只需要知道用户的个人资料已更新,那么处理 webhook 将非常直接。
非常感谢您的建议。目前,管理外部数据库并编写工具将其与 Webhook 负载进行比较,超出了我的技能范围!但我希望您的建议对任何希望实现类似功能且具备相应技能的人有所帮助。
@simon,好吧,我没忍住,把你的建议当作学习新事物的挑战。
我在 Integromat 上设置了一个 webhook 接收器和数据存储。该数据存储包含 webhook 传递的相关用户信息(由于这个 Discourse 站点尚未上线,因此我不需要导入现有用户)。
webhook 的头部会检查 user_destroyed、user_created 和 user_updated 事件。被删除和创建的用户会相应地在数据存储中被删除或创建。
对于更新的用户,系统会在数据存储中查找其姓名,然后更新其记录。如果之前的姓名与更新后的姓名不同,Integromat 会向一个仅限工作人员查看的主题发布一条帖子,格式如下:
“Foo Bar(用户名:foobar)已将全名更改为 Boo Far”
感谢你的建议!
