【问题标题】:Gitlab: change role of user in multiple projects at a timeGitlab:一次更改多个项目中的用户角色
【发布时间】:2017-06-19 11:58:28
【问题描述】:

我可以一次在多个项目中更改特定用户的角色吗?如果是,如何?

我有一个用户,他在超过 75 个项目中的角色是“记者”。我想在所有项目中将角色更改为“开发人员”。我可以用最少的努力实现吗?

【问题讨论】:

    标签: gitlab gitlab-8


    【解决方案1】:

    您可以使用以下 Gitlab API 编辑项目现有成员的访问权限:

    PUT /projects/:id/members/:user_id?access_level=XX

    我在User API 中没有找到任何 API 来为特定用户请求项目。但是您可以请求所有项目的列表,提取 id 并调用edit member API

    你可以做的是:

    • 请求用户 API 以获取目标用户名的用户 ID:

      https://gitlab.com/api/v4/users?private_token=YOUR_TOKEN&username=someuser
      
    • 请求项目列表并提取列表中的ID:

      https://gitlab.com/api/v4/projects?private_token=YOUR_TOKEN&page=1&per_page=1000
      
    • 使用您选择的访问级别为每个项目调用编辑成员 API:

      https://gitlab.com/api/v4/projects/<project_id>/members/<user_id>?private_token=YOUR_TOKEN&access_level=10
      

    access_level 字段可以是 these 中的任何一个:

    10 => Guest access
    20 => Reporter access
    30 => Developer access
    40 => Master access
    50 => Owner access # Only valid for groups
    

    这是一个 Bash 脚本,它将使用username johndoe 更新用户,其访问级别为 30(开发人员访问),用于他是成员的所有项目,此脚本还使用 jq json 解析器:

    #!/bin/bash
    
    GITLAB_DOMAIN=gitlab.com
    GITLAB_PORT=443
    GITLAB_BASE_URL=https://$GITLAB_DOMAIN:$GITLAB_PORT
    PER_PAGE=1000
    
    PRIVATE_TOKEN=YOUR_TOKEN
    ACCESS_LEVEL=30
    USERNAME=johndoe
    
    user_id=$(curl -s  "$GITLAB_BASE_URL/api/v4/users?private_token=$PRIVATE_TOKEN&username=$USERNAME" | jq '.[].id')
    
    echo "user_id : $user_id"
    
    projects=$(curl -s  "$GITLAB_BASE_URL/api/v4/projects?private_token=$PRIVATE_TOKEN&page=1&per_page=$PER_PAGE" | jq '.[].id')
    
    while read -r project; do
    
        status=$(curl --write-out '%{http_code}' -s -o /dev/null -X PUT "$GITLAB_BASE_URL/api/v4/projects/$project/members/$user_id?private_token=$PRIVATE_TOKEN&access_level=$ACCESS_LEVEL")
    
        if [ "$status" == "200" ]; then
            echo "right change to $ACCESS_LEVEL for project : $project"
        fi  
    done <<< "$projects"
    

    请注意,包括指定用户不是成员的项目的每个请求都会导致404

    【讨论】:

      猜你喜欢
      • 2020-10-28
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 1970-01-01
      • 2020-09-06
      相关资源
      最近更新 更多