Skip to main content
Example scripts
arrow icon
To homepage
Confluence
Cloud icon
Cloud

Restrict Page by User Group

Features
Listeners
Created 1 year ago, Updated 8 day(s) ago
App in script
ScriptRunner For Confluence
ScriptRunner For Confluence
by Adaptavist
Compatibility
compatibility bullet
Confluence
Language |
groovy
def id = page.id
def accountId = page.creatorAccountId
def operations = ['read', 'update']
def groupName = 'confluence-users'

def getGroupIds = get("/wiki/rest/api/group")
        .asObject(Map)
        .body
        .results

def groupNameId = getGroupIds.find { group -> group.name == groupName }?.id

def getMemberships =  get("/wiki/rest/api/user/memberof?accountId=${accountId}")
        .asObject(Map)
        .body
        .results
        .name

getMemberships.each { group ->
    if ( group == groupName ) {
        operations.each { operation ->
            put("/wiki/rest/api/content/${id}/restriction/byOperation/${operation}/user?accountId=${accountId}")
            .asObject(Map)
            .body

            logger.info "'${accountId}' is added inside '$operation' operation inside '$page.title'"

            put("/wiki/rest/api/content/${id}/restriction/byOperation/${operation}/byGroupId/${groupNameId}")
            .queryString("expand", "restrictions.user,restrictions.group")
            .asObject(Map)
            .body

            logger.info "'${groupName}' is added inside '$operation' operation inside '$page.title'"
        }
    }
}
Having an issue with this script?
Report it here