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

Restrict Page by User Group

Features
Listeners
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.event.events.content.page.PageCreateEvent
import com.atlassian.confluence.pages.Page
import com.atlassian.confluence.security.ContentPermission
import com.atlassian.confluence.user.AuthenticatedUserThreadLocal
import com.atlassian.sal.api.component.ComponentLocator
import com.atlassian.confluence.core.ContentPermissionManager
import com.atlassian.user.GroupManager

import static com.atlassian.confluence.security.ContentPermission.EDIT_PERMISSION
import static com.atlassian.confluence.security.ContentPermission.VIEW_PERMISSION
import static com.atlassian.confluence.security.ContentPermission.createGroupPermission

void addEditPermission( Page page, String group ) {
    addPermission(page, group, EDIT_PERMISSION)
}

void addViewPermission( Page page, String group ) {
    addPermission(page, group, VIEW_PERMISSION)
}

void addPermission( Page page, String group, String permissionType ) {
    def contentPermissionManager = ComponentLocator.getComponent(ContentPermissionManager)
    Collection<ContentPermission> permissions = []
    permissions.add(createGroupPermission(permissionType, group))
    contentPermissionManager.setContentPermissions(permissions, page, permissionType)
}

def createEvent = event as PageCreateEvent
def currentUser = AuthenticatedUserThreadLocal.get()
def groupManager = ComponentLocator.getComponent(GroupManager)
def groups = groupManager.getGroups(currentUser)
def page = createEvent.page
def groupName = 'confluence-staffs'

groups.each { group ->
    if ( group.toString() == groupName ) {
        addEditPermission(page, group.toString())
        addViewPermission(page, group.toString())
    }
}
Having an issue with this script?
Report it here