Snippets

Adaptavist Adding users to a permission scheme and role

Created by Kristian Walker
def projectCategory = get("/rest/api/3/projectCategory").asObject(List).body

def categoryId = projectCategory.find{it.name == "Permission Demo"}.id

def queryParameters = [
        startAt   : 0,         // The starting index of the results
        maxResults: 50,        // Maximum number of results to get per API call, maximum allowed value is 50
        categoryId: categoryId // The category ID to filter the projects by
]

def searchResult = get("/rest/api/3/project/search")
                .header('Content-Type', 'application/json')
                .queryString(queryParameters)
                .asObject(Map)
                .body
                
def projects = searchResult.values
def isLast = searchResult.isLast
                
def groupName = 'Testers'
def groupId = 'b977499b-1fb1-4ff2-b352-aeab89dee786'
def roleId = '10002'

projects.each { project ->

    def projectKey = project.key
    
    //get the permission scheme for the project
    
    def schemeResult = get("/rest/api/3/project/${projectKey}/permissionscheme")
                        .asObject(Map)
                        .body
                        
    def schemeId = schemeResult.id
    def schemeName = schemeResult.name
    
    
    def groupPermission = [
        holder: [
                type      : "group",
                parameter : groupName
        ],
        permission: "ADMINISTER_PROJECTS" // e.g. "ADMINISTER_PROJECTS" or "CREATE_ISSUES"
    ]
    
    def updatePermissionResult = post("/rest/api/3/permissionscheme/${schemeId}/permission")
                                    .header('Content-Type', 'application/json')
                                    .body(groupPermission)
                                    .asString()
                                    
    switch(updatePermissionResult.status){
        case 200:
            logger.info('User group given permission in Scheme ${schemeName} for Project ${projectKey}')
            break;
        default:
            logger.warn('Error giving User group permission in Scheme ${schemeName} for Project ${projectKey} - ${updatePermissionResult.body}')
            break;
    }
                                    
    def addGroupToRoleResult = post("/rest/api/3/project/${projectKey}/role/${roleId}")
                                    .header('Content-Type', 'application/json')
                                    .body(['groupId':[groupId]])
                                    .asString()
                                    
    switch(addGroupToRoleResult.status){
        case 200:
            logger.info("User group added to role ${roleId} for Project ${projectKey}")
            break;
        default:
            logger.warn("Error adding User group to role ${roleId} for Project ${projectKey} - ${addGroupToRoleResult.body}")
            break;
    }
}

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.