Skip to main content
Example scripts
arrow icon
To homepage
Confluence
Data centre icon
Data Center

Copy Users from Space Permissions to a Local Group

Created 1 year ago, Updated 1 month(s) ago
App in script
ScriptRunner For Confluence
ScriptRunner For Confluence
by Adaptavist
Compatibility
compatibility bullet
Confluence (7.15 - 8.6)
compatibility bullet
ScriptRunner For Confluence (7.10.0)
Language |
groovy
import com.atlassian.confluence.security.SpacePermission
import com.atlassian.confluence.spaces.Space
import com.atlassian.sal.api.component.ComponentLocator
import com.atlassian.crowd.embedded.api.Group
import com.atlassian.user.GroupManager
import com.atlassian.user.User
import com.onresolve.scriptrunner.parameters.annotation.GroupPicker
import com.onresolve.scriptrunner.parameters.annotation.ShortTextInput
import com.onresolve.scriptrunner.parameters.annotation.SpacePicker

@GroupPicker(label = 'Group', description = 'Select the group to add users to')
Group selectedGroup
assert selectedGroup

@SpacePicker(label = 'Space', description = 'Pick a space')
Space sourceSpace
assert sourceSpace

@ShortTextInput(label = 'Permission Type', description = 'Add users with this permission to the group (eg. VIEWSPACE, COMMENT, EDITSPACE)')
String permissionType
assert permissionType

def groupManager = ComponentLocator.getComponent(GroupManager)
def group = groupManager.getGroup(selectedGroup.name)
//def spacePermissionManager = ComponentLocator.getComponent(DefaultSpacePermissionManager)
def spacePermissions = sourceSpace.getPermissions()

List<User> usersWithIndividualPermissions = []

// Get each user with individual permissions of a specific type
spacePermissions.each { permission ->
    if (permission.getUserSubject() && permission.getType() == permissionType) {
        usersWithIndividualPermissions.add(permission.getUserSubject())
    }
}

// Add each user to the specified group
usersWithIndividualPermissions.each { user ->
    groupManager.addMembership(group, user)
}

// Add the new group and permissions to the space
sourceSpace.addPermission(new SpacePermission(permissionType, sourceSpace, group.name))
Having an issue with this script?
Report it here