Context Library
Contents
This library contains functions to access and use the current context. It comes bundled with the XP runtime, so it should always use the same version as XP.
Usage
Add the following to your build.gradle
file:
dependencies {
include "com.enonic.xp:lib-context:${xpVersion}"
}
In your JavaScript controller, add a require statement:
const contextLib = require('/lib/xp/context');
You are now ready to use the library functionality.
Functions
get
Returns the current context
Parameters
None
Returns
Example
const context = contextLib.get();
{
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 within 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
// Define the callback to be executed.
function callback() {
return 'Hello from context';
}
// Executes function within a custom context.
const result = contextLib.run(context, callback);
"Hello from context"
Objects
GetContext
The context object is always available within the scope of a request
{
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/idprovider 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
{
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 |