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

Copy Individual Users Space Permissions from one Space to Another

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.internal.security.SpacePermissionManagerInternal
import com.atlassian.confluence.spaces.Space
import com.atlassian.confluence.security.SpacePermissionManager
import com.atlassian.sal.api.component.ComponentLocator
import com.atlassian.confluence.internal.security.SpacePermissionContext
import com.onresolve.scriptrunner.parameters.annotation.SpacePicker
import com.atlassian.confluence.security.SpacePermission

@SpacePicker(label = 'Source Space', description = 'Select the source space to copy Individual Users permissions from')
Space sourceSpace
assert sourceSpace

@SpacePicker(label = 'Target Space', description = 'Select the target space to copy Individual Users permissions to')
Space targetSpace
assert targetSpace

def spacePermissionManager = ComponentLocator.getComponent(SpacePermissionManager) as SpacePermissionManagerInternal
def spaceContext = SpacePermissionContext.createDefault()

def permissionsToCopy = [] as List<SpacePermission>

sourceSpace.permissions.each { permission ->
    if (permission.userSubject) {
        permissionsToCopy.add(permission)
    }
}

permissionsToCopy.each { permission ->
    def spacePermissionToSave = SpacePermission.createUserSpacePermission(permission.type, targetSpace, permission.userSubject)
    spacePermissionManager.savePermission(spacePermissionToSave, spaceContext)
}
Having an issue with this script?
Report it here