Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

scriptrunner: duplicate a group's permissions

Jeffrey Cocozziello
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
March 22, 2021

Hello!

Looking for a little help. I am creating a scriptrunner script to duplicate a group. I was able to create a new group and duplicate the users to it with the script below...

import com.atlassian.confluence.security.login.LoginManager
import com.atlassian.confluence.user.UserAccessor
import com.atlassian.sal.api.component.ComponentLocator
import com.atlassian.user.GroupManager

/* This script takes users from the group with oldGroupName and adds them to the group with newGroupName. If newGroupName doesn't exist
it is created.*/

def groupManager = ComponentLocator.getComponent(GroupManager)
def loginManager = ComponentLocator.getComponent(LoginManager)
def userAccessor = ComponentLocator.getComponent(UserAccessor)

// define the old group and new group USERS SHOULD MODIFY THESE VALUES!
def newGroupName = "group1"
def oldGroupName = "group2"

// Get the new group if it already exists. If it does not exist, create it.
def newGroup = groupManager.getGroup(newGroupName) ?: groupManager.createGroup(newGroupName)

// Get the group you will be copying the users from.
def oldGroup = groupManager.getGroup(oldGroupName)
def users = groupManager.getMemberNames(oldGroup)

users.each { userName ->
def user = userAccessor.getUserByName(userName)
if (user) {
log.info "Add user ${user.name} to the group: $newGroupName"
groupManager.addMembership(newGroup, user)
}
}

I am now trying to figure out how to duplicate the group's permissions. Found the following method that gets a list of all the permissions for a group.

https://docs.atlassian.com/atlassian-confluence/6.2.1/com/atlassian/confluence/security/SpacePermissionManager.html#getAllPermissionsForGroup-java.lang.String-

But I cannot for the life of me find out how to set these permissions for the new group. Does anyone have any suggestions?

 

Thanks!

1 answer

0 votes
PD Sheehan
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
March 27, 2021

Try something like this

import com.atlassian.sal.api.component.ComponentLocator
import
com.atlassian.confluence.security.SpacePermission
import com.atlassian.confluence.security.SpacePermissionManager
def spacePermissionManager = ComponentLocator.getComponent(SpacePermissionManager)
def oldGroupName = 'yourOldGroupName'
def newGroupName = 'yourNewGroupName'
spacePemrissionmanager.getAllPermissionForGroup(oldGroupName).each{oldPerm->
def newPerm =SpacePermission.createGroupSpacePermission(oldPermission.type, oldPerm.space, newGroupNamae)
spacePermissionmanager.savePermission(newPerm)
}

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events