I'd like to record permission changes on pages. I already found this https://jira.atlassian.com/browse/CONFSERVER-19721 but figured I might be able to implement something myself with the help of the Scriptrunner Addon.
I created a custom Event which listens to the ContentPermissionEvent being fired. Generally speaking it would be enough to log something to console stating how a permission was changed. I also found out that the confluence database keeps the set of page permissions, whereas no entry means "full permissions and EDIT/VIEW are written according to what I configured.
The following shows the script that I got so far.
import com.atlassian.confluence.event.events.security.ContentPermissionEvent
import com.atlassian.confluence.core.ContentEntityObject
import org.apache.log4j.Logger
import org.apache.log4j.Level
import com.atlassian.user.User
// create Loglistener
def log = Logger.getLogger("com.company.CustomContentPermissionEventListener")
log.setLevel(Level.INFO)
def event = event as ContentPermissionEvent
def contentid = event.content.idAsString
def contentPermission = event.contentPermission
def permissionString
//group our user
if(contentPermission.groupPermission){
permissionString = "Group: " + contentPermission.groupName
}else{
permissionString = "User: " + contentPermission.userName
}
//type
permissionString = permissionString + ", Type: " + contentPermission.type
// Log data from Event
log.info("PermissionEvent registered for PageId " + contentid + ", details: " + permissionString)
Apparently the event seems to be not smart enough to tell adding and removing permissions apart. In both cases the log entry is the same. Is there a way to tell them apart?
Thanks allot for any pointers.