'Jenkins Overall/Read Permission via groovy script

I am trying groovy pipeline to provide Overall/Read permission to newly created user in Jenkins. Plugin which we are using for providing overall permissions to the user/group is "Project-based Matrix Authorization Strategy".

I have written the following groovy script to provide Overall read permission to the user but it's overwriting the existing configurations (Remove all the user's configurations of 'Project-based Matrix Authorization Strategy')

Any Help is appreciated. Thanks!!

Snippet referred from https://github.com/samrocketman/jenkins-bootstrap-shared/blob/main/scripts/configure-matrix-authorization-strategy.groovy

import jenkins.security.*
import hudson.security.*
import hudson.security.ProjectMatrixAuthorizationStrategy
import jenkins.model.Jenkins

def authz_strategy_config = [
           strategy: 'ProjectMatrixAuthorizationStrategy',
           user_permissions: [
               'test-user': ['View Create']
           ]
]
def authz_strategy = hudson.security.ProjectMatrixAuthorizationStrategy.newInstance()
Map<String, Permission> permissionIds = Permission.all.findAll { permission ->
    List<String> nonConfigurablePerms = ['RunScripts', 'UploadPlugins', 'ConfigureUpdateCenter']
    permission.enabled &&
        !permission.id.startsWith('hudson.security.Permission') &&
        !(true in nonConfigurablePerms.collect { permission.id.endsWith(it) })
}.collect { permission ->
    [ (shortName(permission)): permission ]
}.sum()

authz_strategy_config['user_permissions'].each { u, permissions ->
    permissions.each { p ->
        authz_strategy.append(permissionIds[p], u)
        println "    For user ${u} grant permission ${p}."
    }
} 

// configure global authorization
Jenkins.instance.authorizationStrategy = authz_strategy

// save settings to persist across restarts
Jenkins.instance.save()


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source