最重要 "An existing user is already attached to your gitlab account"

Mattermost "An existing user is already attached to your gitlab account"

我们使用 Mattermost,使用 'Production Docker' 设置,如 Mattermost 文档中所述。对于身份验证,我们使用 GitHub:Enterprise 联合。

为了设置我们的 Mattermost 团队,我导入了整个 Slack 历史记录。这导致了所有尚未通过 GitHub:Enterprise 登录 Mattermost 的人都无法登录的问题。 Mattermost 很有帮助地返回了错误消息

"An existing user is already attached to your gitlab account"

如何解决这个问题而不必设置新的 Mattermost 实例并强制每个人在导入 Slack 数据之前登录一次?

先决条件

为了使其正常工作,您需要

  • GitHub:Enterprise 管理员权限
  • 在 Mattermost 机器上,root 权限或允许控制 docker 的帐户,并且,如果未安装 psql,安装 psql command-line 工具的方法。

步骤

  1. ssh 进入 Mattermost vm/machine(其中 mattermost docker 容器是 运行)。

  2. 更改为具有 docker 权限的帐户(root;或您在 Mattermost 安装期间设置的帐户;或 ...)

  3. 使用docker ps并记下容器mattermostdocker_db的散列。我们假设它以 5c23.

  4. 开头
  5. 运行docker inspect 5c23 | grep IPAddress。记下容器的 IP 地址。我们假设它是 172.17.0.2.

  6. 确保在 mattermost/docker 为 运行 的机器上安装了 psql 命令行工具。

    • 在 debian 上:apt-get install postgresql-client
  7. 连接到 docker 容器内最重要的 postgresql 运行 数据库:

    • psql -h 172.17.0.2 -p 5432 -d mattermost -U postgres -W
    • (默认?)密码似乎是 postgres
  8. 验证是否存在具有正确电子邮件的用户帐户。假设有问题的帐户的电子邮件是 'john@example.com`

    • mattermost-# select email, authdata from users where email = 'john@example.com';
  9. 连接到 GitHub:Enterprise 并打开管理控制台。我们假设本地 github 企业实例位于 https://github.example.com.

  10. 点击所有用户,找到无法登录的用户。我们假设 github 用户名是 john,对应 https://github.example.com/john

  11. 访问该用户的 stafftools 用户安全页面。

  12. 点击'Audit logs'header下的'Search logs'link。这将打开一个带有查询字段的页面。在此页面上,您将找到该用户的内部 github 用户编号。记下这个数字。我们假设这个数字是 37。

  13. 返回 psql 控制台,用正确的数字更新用户条目:

    • update users set authservice = 'gitlab', authdata = '37' where email = 'john@example.com' ;
  14. 退出 psql 控制台 \q:

    • mattermost-# \q
  15. 完成。用户现在可以使用 GitHub:Enterprise 用户身份验证登录 Mattermost。

备注

  • 不要忘记用 ;
  • 完成 psql 中的每个语句
  • gitlab,不是github,即使你用GitHub:Enterprise
  • 使用 Mattermost 3.0 测试,GitHub:Enterprise 2.6.2