가이드 제목은 [도구명] [내용]-하기 형태(ex Bitbucket Cloud 저장소 생성하기)로 입력한다.

이 문서에 대한 요약 /개요를 입력한다. (구글에서 검색되었을때 표시되는 문장)

이 문서는 Confluence - Scriptrunner 이용하여 공간 권한 제거하기 가이드를 공유하기 위해 작성되었다.


가이드에 사용되는 도구 정보를 입력한다.

도구명Scriptrunner, Confluence
버전6.10(Scriptrunner)
비고추가할 내용 있을 경우 기입





첨부한  이미지 너비는 800px 을 넘기지 않는다.

Confluence - Scriptrunner 이용하여 공간 권한 제거하기

Scriptrunner Console 들어가기


import com.atlassian.confluence.security.SpacePermissionManager
import com.atlassian.confluence.spaces.SpaceManager
import com.atlassian.sal.api.component.ComponentLocator
import com.atlassian.confluence.internal.security.SpacePermissionContext
import com.onresolve.scriptrunner.parameters.annotation.*
import com.onresolve.scriptrunner.parameters.annotation.meta.*
import com.onresolve.scriptrunner.parameters.*

@Select(
    label = "권한",
    description = "삭제 할 권한을 선택하세요",
    options = [
        @Option(label = "보기", value = "VIEWSPACE"),
        @Option(label = "본인의 콘텐츠 삭제", value = "REMOVEOWNCONTENT"),
        @Option(label = "페이지 추가", value = "EDITSPACE"),
        @Option(label = "페이지 삭제", value = "REMOVEPAGE"),
        @Option(label = "블로그 추가", value = "EDITBLOG"),
        @Option(label = "블로그 삭제", value = "REMOVEBLOG"),
        @Option(label = "첨부파일 추가", value = "CREATEATTACHMENT"),
        @Option(label = "첨부파일 삭제", value = "REMOVEATTACHMENT"),
        @Option(label = "댓글 추가", value = "COMMENT"),
        @Option(label = "댓글 삭제", value = "REMOVECOMMENT"),
        @Option(label = "제한 추가/삭제", value = "SETPAGEPERMISSIONS"),
        @Option(label = "메일 삭제", value = "REMOVEMAIL"),
        @Option(label = "내보내기", value = "EXPORTSPACE"),
        @Option(label = "공간 관리", value = "SETSPACEPERMISSIONS"),
    ]
)
String deletePermission

@Checkbox(label = "확인", description = "체크 후 Run 시 해당 권한이 제거")
Boolean checkDelete

def spacePermissionManager = ComponentLocator.getComponent(SpacePermissionManager)
def spaceManager = ComponentLocator.getComponent(SpaceManager)
SpacePermissionContext spaceContext = SpacePermissionContext.createDefault()

def spacePermissions = []
def spaces = spaceManager.getAllSpaces()
def permissionsToRemove = []

spaces.each{ space ->
    //log.warn(space.getName())
    //log.warn(space.getPermissions())
    spacePermissions = space.getPermissions()
    spacePermissions.each{ permission ->
         if (permission.getType() == deletePermission){
            //log.warn(permission.toString())
            permissionsToRemove.addAll(permission)
         } 
    }
}

if(checkDelete){
    log.warn("check " + deletePermission)
    permissionsToRemove.each { permission ->
        spacePermissionManager.removePermission(permission, spaceContext)
    }
}
List<String> result = []
for(int i = 0; i < permissionsToRemove.size();i++){
    ArrayList permissons = (permissionsToRemove[i].toString()).replaceAll("\\[","").replaceAll("]","").split(",")
    assert permissons.class == ArrayList
    String spaceid = permissons[1]
    String spaceName = spaceManager.getSpace(spaceid as Long).getName()
    log.warn("공간명: " + spaceName)
    log.warn("삭제되는 권한: " + deletePermission)
    String temp = ""
    temp += "공간명: " + spaceName + " 삭제되는 권한: " + deletePermission
    for(int j = 2; j < permissons.size();j++){
        if(permissons[j] != "null"){
        	log.warn("유저: " + permissons[j].toString()) 
            temp += " 유저: " + permissons[j].toString()
        }
    }
    result.add(temp)
    log.warn("=================================")
}
result






참조링크