Lemonldap-NG-Manager
view release on metacpan or search on metacpan
site/htdocs/static/js/2ndfa.js view on Meta::CPAN
// Queries to do each type of display: each array item corresponds to the depth
// of opened nodes in the tree
schemes = {
_whatToTrace: [function (t, v) {
return `groupBy=substr(${t},1)`;
}, function (t, v) {
return `${t}=${v}*`;
}]
};
overScheme = {
_whatToTrace: function (t, v, level, over) {
console.debug('overSchema => level', level, 'over', over);
if (level === 1 && v.length > over) {
return `${t}=${v}*&groupBy=substr(${t},${level + over + 1})`;
} else {
return null;
}
}
};
hiddenAttributes = '_password';
// Attributes to group in session display
categories = {
dateTitle: ['_utime', '_startTime', '_updateTime'],
sfaTitle: ['_2fDevices']
};
// Menu entries
menu = {
home: []
};
llapp = angular.module('llngSessionsExplorer', ['ui.tree', 'ui.bootstrap', 'llApp']);
// Main controller
llapp.controller('SessionsExplorerCtrl', ['$scope', '$translator', '$location', '$q', '$http', function ($scope, $translator, $location, $q, $http) {
var autoId, c, pathEvent, sessionType;
$scope.links = links;
$scope.menulinks = menulinks;
$scope.staticPrefix = staticPrefix;
$scope.scriptname = scriptname;
$scope.formPrefix = formPrefix;
$scope.availableLanguages = availableLanguages;
$scope.waiting = true;
$scope.showM = false;
$scope.showT = true;
$scope.data = [];
$scope.currentScope = null;
$scope.currentSession = null;
$scope.menu = menu;
$scope.searchString = '';
$scope.sfatypes = {};
// Import translations functions
$scope.translateP = $translator.translateP;
$scope.translate = $translator.translate;
$scope.translateTitle = function (node) {
return $translator.translateField(node, 'title');
};
sessionType = 'persistent';
// Handle menu items
$scope.menuClick = function (button) {
if (button.popup) {
window.open(button.popup);
} else {
if (!button.action) {
button.action = button.title;
}
switch (typeof button.action) {
case 'function':
button.action($scope.currentNode, $scope);
$scope[button.action]();
break;
case 'string':
$scope[button.action]();
break;
default:
console.warn('Unknown action type', typeof button.action);
}
}
return $scope.showM = false;
};
//# SESSIONS MANAGEMENT
// Search 2FA sessions
$scope.search2FA = function (clear) {
if (clear) {
$scope.searchString = '';
}
$scope.currentSession = null;
$scope.data = [];
return $scope.updateTree2('', $scope.data, 0, 0);
};
// Delete 2FA device
$scope.delete2FA = function (type, epoch) {
var e, i, items, len;
items = document.querySelectorAll(`.data-${epoch}`);
for (i = 0, len = items.length; i < len; i++) {
e = items[i];
e.remove();
}
$scope.waiting = true;
$http['delete'](`${scriptname}sfa/${sessionType}/${$scope.currentSession.id}?type=${type}&epoch=${epoch}`).then(function (response) {
return $scope.waiting = false;
}, function (resp) {
return $scope.waiting = false;
});
return $scope.showT = false;
};
// Open node
$scope.stoggle = function (scope) {
var node;
node = scope.$modelValue;
if (node.nodes.length === 0) {
$scope.updateTree(node.value, node.nodes, node.level, node.over, node.query, node.count);
}
return scope.toggle();
};
// Display selected session
$scope.displaySession = function (scope) {
var sessionId, transformSession;
// Private functions
// Session preparation
( run in 0.945 second using v1.01-cache-2.11-cpan-364913b4093 )