调用 GitLab API 永久删除用户

在GitLab后台删除用户默认只能是个软删除,软删除掉的用户会变成恶心的Ghost用户显示在用户列表上,这个Ghost用户在界面上还找不到删除的地方,所以只能调API去硬删除需要删除的用户了。

一、查看API的版本号

https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/api/api.rb

图1

从上图可以看出,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。

图2

生成access token之后我们需要复制保持一下,因为我们只有一次查看access token的机会,如果你忘了就只能重新生成了。

图3

四、查询要删除的用户的id

有了BASE_URLAccess_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

请求上面地址后,我们就得到了这个用户的信息:

图4

五、永久地删除指定id的用户

第四步查询到用户的id是4,所以我们可以调用删除用户的API去删掉它。

删除用户的API

图5

注意看hard_delete参数,虽然它是可选的,但是如果我们要永久删除某个用户,那就必须要带上这个参数,否则我们要删除的用户就会像以前一样变成Ghost用户。 所以,我们构造的API应该是:

DELETE {BASE_URL}/users/{id}?private_token={access_token}&hard_delete=true

执行Request Method为DELETE,然后调用API,返回状态码204即表示删除成功。然后我们再来重新查询一下用户列表,发现已经没有root这个用户了。