调用 GitLab API 永久删除用户
在 GitLab 后台删除用户默认只能是个软删除,软删除掉的用户会变成恶心的 Ghost 用户显示在用户列表上,这个 Ghost 用户在界面上还找不到删除的地方,所以只能调 API 去硬删除需要删除的用户了。
一、查看 API 的版本号
https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/api/api.rb
从上图可以看出,v3
已经不被支持了,所以版本号应该是v4
。
二、构造 API 的 BASE_URL
因为版本号是v4
,所以BASE_URL = https://git.xxx.com/api/v4
。
三、获取 AccessToken
得到BASE_URL
之后还得知道 AccessToken 是多少,所以得用 Admin 身份登录后台。登录之后,点击右上角的菜单,选择“Settings”,然后点击左侧导航菜单的“Access Tokens”,然后在右侧填写你访问这个 API 的应用程序的名称(可以随便填)和 API 的过期时间(尽量设置较短时间),然后在 Scopes 选择下面选择“api”表示我们生成的 access token 只用于调用 API,然后点击“Create personal access token”按钮创建 AccessToken。
生成 access token 之后我们需要复制保持一下,因为我们只有一次查看 access token 的机会,如果你忘了就只能重新生成了。
四、查询要删除的用户的 id
有了BASE_URL
和Access_Token
之后,就可以愉快地调用 API 了。例如我想删除那个叫“root”的家伙,但如果在管理后台里面删,它就会变成“Ghost”用户,到时候调 API 都删不掉,所以我们要直接调 API 删它,所以先要找到这个家伙的 id。
获取指定名称的用户的信息
GET /users?username={username}
于是,我们就可以就可以构造这样的请求:
GET {BASE_URL}/users?private_token={access_token}&username={username}
替换变量后就得到如下地址:
https://git.xxx.com/api/v4/users?private_token=abcdefg&username=ghost
请求上面地址后,我们就得到了这个用户的信息:
五、永久地删除指定 id 的用户
第四步查询到用户的 id 是 4,所以我们可以调用删除用户的 API 去删掉它。
删除用户的 API
注意看 hard_delete 参数,虽然它是可选的,但是如果我们要永久删除某个用户,那就必须要带上这个参数,否则我们要删除的用户就会像以前一样变成 Ghost 用户。 所以,我们构造的 API 应该是:
DELETE {BASE_URL}/users/{id}?private_token={access_token}&hard_delete=true
执行 Request Method 为DELETE
,然后调用 API,返回状态码 204 即表示删除成功。然后我们再来重新查询一下用户列表,发现已经没有 root 这个用户了。