Session

Session

Contains information about the logged in user. Server recreate this object each time endpoint handler are executed

Implements EventEmitter and will emit login event each time user logged in or loginFailed event whith 2 parameters(userID, isLocked) when user UB authentification failed by wrong password

Mixes In:

Members

id: Number static readonly

Current session identifier. === 0 if session not started, ===1 in case authentication not used, >1 in case user authorized

userID: Number static readonly

Logged-in user identifier (from uba_user.ID). Undefined if Session.id is 0 or 1 (no authentication running)

userRoles: String static readonly

Logged-in user role IDs in CSV format. ==="" if no authentication running

userRoleNames: String static readonly

Logged-in user role names in CSV format. ==="" if no authentication running

userLang: String static readonly

Logged-in user language. ==="" if no authentication running

uData: Object static readonly

Custom properties, defined in Session.on('login') handlers for logged-in user.

Starting from UB 1.9.13 this is a JavaScript object (before is {TubList} ).

If modified inside Session.on('login'), value of this object is persisted into global server Sessions (via JSON.stringify) and restored for each call (via JSON.parse).

Never override it using Session.uData = {...}, in this case you delete uData properties, defined in other application models. Instead define or remove properties using Session.uData.myProperty = ... or delete Session.uData.myProperty;

We strongly recommend to not modify value of uData outside the Session.on('login') handler. Such modification is not persisted between calls.

callerIP: String static readonly

IP address of a user. May differ from IP address current user login from. May be empty if request come from localhost.

Methods

setUser(userID, secretopt)String static

Create new session for userID
Arguments:
  1. userID (Number)  ID of user
  2. [secret] (String)  secret word. If defined then session secretWord is JSON.parse(returns).result+secret
Deprecated:
  • use runAsUser instead this

runAsAdmin(call) → * static

Call function as admin. Built-in "always alive"(newer expired) admin session is always created when the application starts, so this is very cheap method - it will not trigger Session.login event every time context is switched (Session.setUser and Session.runAsUser does) Can be used in scheduled tasks, not-authorized methods, etc. to obtain a admin Session context
Arguments:
  1. call (function)  Function to be called in admin context

runAsUser(userID, call) → * static

Call function as custom user. New session will be created. Will fire login event.
Arguments:
  1. userID   ID of user
  2. call   Function to be called in user's session.