Context API
Contents
This API provides functions to access and use the current context.
Usage
Add the following to your build.gradle
file:
dependencies {
include "com.enonic.xp:lib-context:${xpVersion}"
}
Add the import
statement to your controller:
import contextLib from '/lib/xp/context';
You are now ready to use the API.
Functions
get
Returns the current context
Parameters
None
Returns
Example
Getting the current context
const context = contextLib.get();
Sample response
{
branch: "draft",
repository: "com.enonic.cms.default",
authInfo: {
user: { (1)
type: "user",
key: "user.system.abc",
displayName: "A.B.C.",
disabled: false,
email: "abc@enonic.com",
login: "abc",
idProvider: "system"
}
principals: [
"user:system:abc",
"role:system.admin",
"role:system.admin.login",
"role:system.authenticated",
"role:system.everyone"
]
},
attributes: {
optionalAttributes: "of any kind"
}
}
1 | The user node will not be returned unless there is a logged-in user. |
run
Runs a function inside a custom context, for instance the one returned by the get()
function call. Commonly used when accessing repositories, or to override current users permissions.
Parameters
Name | Kind | Details |
---|---|---|
context |
object |
RunContext to be used for the scope of the callback function |
callback |
function |
Function to execute |
Returns
string : The result of the execution.
Example
Run a simple function in a different context
// Define the callback to be executed.
function callback() {
return 'Hello from context';
}
// Executes function within a custom context.
const result = contextLib.run(context, callback);
Sample response
"Hello from context"
Objects
GetContext
The context object is always available within the scope of a request
Sample context object
{
repository: "some.repo.name", (1)
branch: "master", (2)
authInfo: {
user: { (3)
login: "mylogin",
idProvider: "idprovidername"
},
principals: ["role:system.admin"] (4)
},
attributes: { (5)
optionalAttributes: "of any kind"
}
}
1 | repository (string) Repository context. |
2 | branch (string) Branch context. |
3 | user (object) Specify a valid user/ID provider combination |
4 | principals (object) Roles or group principals applicable for current user |
5 | attributes (object) custom attributes |
RunContext
The context object is always available within the scope of a request
Sample context object
{
repository: "some.repo.name", (1)
branch: "master", (2)
user: { (3)
login: "mylogin",
idProvider: "idprovidername"
},
principals: ["role:system.admin"], (4)
attributes: { (5)
optionalAttributes: "of any kind"
}
}
1 | repository (string) Repository context. |
2 | branch (string) Branch context. |
3 | user (object) Specify a valid user/idprovider combination |
4 | principals (object) Roles or group principals applicable for current user |
5 | attributes (object) custom attributes |