Sidehistorik
https://scriptrunner.adaptavist.com/latest/confluence/rest-endpoints.html#_configuration
Gettting Userinfo
This works
Kodeblok |
---|
import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate import groovy.json.JsonBuilder import groovy.transform.BaseScript import javax.ws.rs.core.MultivaluedMap import javax.ws.rs.core.Response import com.atlassian.sal.api.component.ComponentLocator import bucket.user.UserAccessor @BaseScript CustomEndpointDelegate delegate def userAccessor = ComponentLocator.getComponent(UserAccessor) user( httpMethod: "GET", groups: ["confluence-administrators"] ) { // validate we have username as a url parameter // extraPath is already available to use def extraPath = extraPath as String assert extraPath =~ "^/[a-zA-Z]+" def username = extraPath.split("/").last() def user = userAccessor.getUser(username) // user must exist in Confluence if (!user) { return Response.serverError().entity([error: "User $username does not exist"]).build() } def userResponse = [ username: user.name, fullname: user.fullName, email: user.email ] return Response.ok(new JsonBuilder(userResponse).toString()).build() } |
...
Output:
Kodeblok |
---|
jarvis:bin npn$ curl -X GET -u admin:Welcome1 http://localhost:8090/rest/scriptrunner/latest/custom/user/admin
{"username":"admin","fullname":"admin","email":"npn@netic.dk"}jarvis:bin npn$
jarvis:bin npn$ |
Including getting rights to a Page (hardcoded id)
Kodeblok |
---|
import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate
import groovy.json.JsonBuilder
import groovy.transform.BaseScript
import javax.ws.rs.core.MultivaluedMap
import javax.ws.rs.core.Response
import com.atlassian.sal.api.component.ComponentLocator
import bucket.user.UserAccessor
import com.atlassian.confluence.pages.PageManager
import com.atlassian.confluence.security.PermissionManager
import com.atlassian.confluence.security.Permission
@BaseScript CustomEndpointDelegate delegate
def userAccessor = ComponentLocator.getComponent(UserAccessor)
user(
httpMethod: "GET", groups: ["confluence-administrators"]
) {
// validate we have username as a url parameter
// extraPath is already available to use
def extraPath = extraPath as String
assert extraPath =~ "^/[a-zA-Z]+"
def username = extraPath.split("/").last()
def user = userAccessor.getUser(username)
// user must exist in Confluence
if (!user) {
return Response.serverError().entity([error: "User $username does not exist"]).build()
}
def pageManager = ComponentLocator.getComponent(PageManager)
def page = pageManager.getPage(1540098)
def permissionManager = ComponentLocator.getComponent(PermissionManager)
// Permissions - https://developer.atlassian.com/confdev/development-resources/confluence-developer-faq/how-do-i-tell-if-a-user-has-permission-to
boolean canEdit = permissionManager.hasPermission(user, Permission.EDIT, page);
def userResponse = [
username: user.name,
fullname: user.fullName,
email: user.email,
edit: canEdit
]
return Response.ok(new JsonBuilder(userResponse).toString()).build()
} |
Output:
Notice that bnp=false, but admin=true
Kodeblok |
---|
curl -X GET -u admin:Welcome1 http://localhost:8090/rest/scriptrunner/latest/custom/user/bnp
{"username":"bnp","fullname":"Normann","email":"bnp@mos-eisley.dk","edit":false}
jarvis:bin npn$
curl -X GET -u admin:Welcome1 http://localhost:8090/rest/scriptrunner/latest/custom/user/admin
{"username":"admin","fullname":"admin","email":"npn@netic.dk","edit":true}
jarvis:bin npn$ |