sws-frontend
Version:
sws frontend project
38 lines • 2.2 kB
JavaScript
;
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