Du ser en gammel version af denne side. Se den nuværende version.

Sammenlign med nuværende Vis sidehistorik

« Forrige Version 2 Næste »

https://scriptrunner.adaptavist.com/latest/confluence/rest-endpoints.html#_configuration

Gettting Userinfo

This works

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:

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)

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

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$
  • Ingen etiketter