Name
sn_mab_api.SessionService
Description
This service will provide user, session and environment info
Script
var validVersions = ["utah", "tokyo", "sandiego"];
var fallBackVersion = "utah";
var familyVersionMap = {
'utah': 23,
'tokyo': 22,
'sandiego': 21
};
/**
* Removes spacial characters, changes toLowerCase and trims trailing and leading whitespace
* @param {string} familyVersion
*/
function scrubFamilyVersion(familyVersion) {
var specialCharactersRemoved = familyVersion.replace(/[^\w\s]/gi, "");
return specialCharactersRemoved.trim().toLowerCase();
}
/**
* Tries to match the scrubbed family version against our list of validVersions.
* If there is no match then it defaults to our fallBackVersion.
* @param {string} familyVersion
* @returns {string} validFamilyVersion
*/
function determineFamilyVersion(familyVersion) {
var scrubbedFamilyVersion = scrubFamilyVersion(familyVersion);
for (var i = 0; i < validVersions.length; i++) {
var validVersion = validVersions[i];
if (scrubbedFamilyVersion.includes(validVersion)) return validVersion;
}
return fallBackVersion;
}
var SessionService = Class.create();
SessionService.prototype = {
initialize: function () {},
type: "SessionService",
mabApiPropertyNamePrefix: "sn_mab_api.",
mabApiAllowedPropertyNames: [
"glide.appcreator.company.code",
"glide.appcreator.company.friendly_name",
"instance_name",
"glide.sg.image_recognition.search.enable",
"glide.ui.polaris.experience",
],
getFamilyVersion: function () {
var rawFamilyVersion = gs.getProperty('glide.buildname');
return determineFamilyVersion(rawFamilyVersion);
},
getSessionInfo: function (requestedData) {
var propertyKeys = requestedData.propertyKeys;
var preferenceNames = requestedData.preferenceNames;
var buildNameKey = "glide.buildname";
var familyVersionNumberKey = "glide.familyVersionNumber";
var sessionInfo = {};
sessionInfo.userId = gs.getUserID();
sessionInfo.firstName = gs.getUser().getFirstName();
sessionInfo.lastName = gs.getUser().getLastName();
sessionInfo.fullName = gs.getUser().getDisplayName();
sessionInfo.roles = gs.getUser().getRoles();
if (propertyKeys && propertyKeys.length > 0)
sessionInfo.propertyValues = this._getPropertyValues(propertyKeys);
else sessionInfo.propertyValues = {};
if (preferenceNames && preferenceNames.length > 0)
sessionInfo.preferenceValues =
this._getUserPreferenceValues(preferenceNames);
var rawFamilyVersion = gs.getProperty(buildNameKey);
var familyVersion = determineFamilyVersion(rawFamilyVersion);
sessionInfo.propertyValues[buildNameKey] = familyVersion;
sessionInfo.propertyValues[familyVersionNumberKey] = familyVersionMap[familyVersion];
return sessionInfo;
},
_getPropertyValues: function (propertyKeys) {
var propertyValues = {};
propertyKeys.forEach(function (key) {
if (
key &&
(key.startsWith(this.mabApiPropertyNamePrefix) ||
this.mabApiAllowedPropertyNames.indexOf(key) != -1)
) {
var propertyValue = gs.getProperty(key);
if (propertyValue) propertyValues[key] = propertyValue;
} else gs.warn(gs.getMessage("{0} property is not accessible through the MAB API", key));
}, this);
return propertyValues;
},
_getUserPreferenceValues: function (preferenceNames) {
var preferenceValues = {};
preferenceNames.forEach(function (name) {
var preferenceValue = gs.getUser().getPreference(name);
if (preferenceValue) preferenceValues[name] = preferenceValue;
}, this);
return preferenceValues;
},
};
module.exports = {
scrubFamilyVersion: scrubFamilyVersion,
determineFamilyVersion: determineFamilyVersion,
fallBackVersion: fallBackVersion,
};
Sys ID
66453a26c724301066492f3bf4c260e0