UNPKG

sws-frontend

Version:

sws frontend project

38 lines 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var action_1 = require("./action"); var helpers_1 = require("../commons/helpers"); var login = function (u) { exports.userlogged = u; return u; }; var logged = function () { return exports.userlogged; }; var name = function (u) { return u && helpers_1.normalise(u.details && u.details.firstname) + ' ' + helpers_1.normalise(u.details && u.details.lastname); }; var fingerprintOf = function (u) { return u.username + u.details.firstname + u.details.lastname + u.details.placement + u.details.post; }; var actionsOf = function (u) { return action_1.api.map(u.permissions); }; var allActionsOf = function (u) { var actions = actionsOf(u); (u.roles || []).forEach(function (r) { return actions = actions.concat(actionsOf(r)); }); //dedup return actions.filter(function (item, pos, self) { return self.indexOf(item) == pos; }); }; var isLoaded = function (u) { return !u.permissions || u.permissions.length == 0; }; /* TODO: not exactly iron-clad. */ var canUser = function (u, a) { return u && ((u.permissions && u.permissions.find(function (p) { return action_1.api.isImpliedBy(a, p); }) != undefined) || (u.roles && u.roles.find(function (r) { return canUser(r, a); }) != undefined)); }; // invoked recursively on roles, if they exist. var canOver = function (a, resource) { return can(action_1.api.specialise(a, resource)); }; var can = function (a) { return canUser(logged(), a); }; var cannot = function (a) { return !can(a); }; var canAny = function () { var as = []; for (var _i = 0; _i < arguments.length; _i++) { as[_i] = arguments[_i]; } return as.filter(function (a) { return can(a); }).length > 0; }; var cannotAny = function () { var as = []; for (var _i = 0; _i < arguments.length; _i++) { as[_i] = arguments[_i]; } return !canAny(as); }; exports.api = { login: login, logged: logged, name: name, fingerprintOf: fingerprintOf, actionsOf: actionsOf, allActionsOf: allActionsOf, can: can, canOver: canOver, canUser: canUser, canAny: canAny, cannotAny: cannotAny, isLoaded: isLoaded }; exports.default = exports.api; //# sourceMappingURL=user.js.map