调用 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这个用户了。