이 문서는 Confluence - Scriptrunner 이용하여 공간 권한 제거하기 가이드를 공유하기 위해 작성되었다.
| 도구명 | Scriptrunner, Confluence |
|---|---|
| 버전 | 6.10(Scriptrunner) |
| 비고 |
Confluence - Scriptrunner 이용하여 공간 권한 제거하기
Scriptrunner Console 들어가기
- 톱니바퀴 → 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
- 제거 할 권한과 확인 체크박스 체크 시 해당 스크립트 실행
단순 확인 할 경우 체크박스 해제

