UNPKG

baqend

Version:

Baqend JavaScript SDK

183 lines 10.2 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Permission = void 0; /** * An aggregation of access rules for given object metadata. */ var Permission = /** @class */ (function () { function Permission() { this.rules = {}; } /** * Returns a list of user and role references of all rules * @return a list of references */ Permission.prototype.allRules = function () { return Object.keys(this.rules); }; /** * Removes all rules from this permission object * @return */ Permission.prototype.clear = function () { this.rules = {}; }; /** * Copies permissions from another permission object * @param permission The permission to copy from * @return */ Permission.prototype.copy = function (permission) { this.rules = __assign({}, permission.rules); return this; }; /** * Gets whenever all users and roles have the permission to perform the operation * @return <code>true</code> If public access is allowed */ Permission.prototype.isPublicAllowed = function () { var _this = this; if ('*' in this.rules) { return false; } return !this.allRules().some(function (ref) { return _this.rules[ref] === 'allow'; }); }; /** * Sets whenever all users and roles should have the permission to perform the operation * * Note: All other allow rules will be removed. * * @return */ Permission.prototype.setPublicAllowed = function () { var _this = this; this.allRules().forEach(function (ref) { if (_this.rules[ref] === 'allow') { delete _this.rules[ref]; } }); }; /** * Returns the actual rule of the given user or role. * @param userOrRole The user or role to check for * @return The actual access rule or undefined if no rule was found */ Permission.prototype.getRule = function (userOrRole) { return this.rules[this.ref(userOrRole)]; }; /** * Checks whenever the user or role is explicit allowed to perform the operation. * * @param userOrRole The user or role to check for * @return <code>true</code> If the given user or role is allowed */ Permission.prototype.isAllowed = function (userOrRole) { return this.rules[this.ref(userOrRole)] === 'allow'; }; /** * Checks whenever the user or role is explicit denied to perform the operation. * * @param userOrRole The user or role to check for * @return <code>true</code> If the given user or role is denied */ Permission.prototype.isDenied = function (userOrRole) { return this.rules[this.ref(userOrRole)] === 'deny'; }; /** * Allows the given users or rules to perform the operation * @param userOrRole The users or roles to allow * @return this permission object */ Permission.prototype.allowAccess = function () { var userOrRole = []; for (var _i = 0; _i < arguments.length; _i++) { userOrRole[_i] = arguments[_i]; } for (var i = 0; i < userOrRole.length; i += 1) { this.rules[this.ref(userOrRole[i])] = 'allow'; } return this; }; /** * Denies the given users or rules to perform the operation * @param userOrRole The users or roles to deny * @return this permission object */ Permission.prototype.denyAccess = function () { var userOrRole = []; for (var _i = 0; _i < arguments.length; _i++) { userOrRole[_i] = arguments[_i]; } for (var i = 0; i < userOrRole.length; i += 1) { this.rules[this.ref(userOrRole[i])] = 'deny'; } return this; }; /** * Deletes any allow/deny rules for the given users or roles * @param userOrRole The users or roles to delete rules for * @return this permission object */ Permission.prototype.deleteAccess = function () { var userOrRole = []; for (var _i = 0; _i < arguments.length; _i++) { userOrRole[_i] = arguments[_i]; } for (var i = 0; i < userOrRole.length; i += 1) { delete this.rules[this.ref(userOrRole[i])]; } return this; }; /** * A Json representation of the set of rules * @return */ Permission.prototype.toJSON = function () { return __assign({}, this.rules); }; /** * Sets the permission rules from json * @param json The permission json representation * @return */ Permission.prototype.fromJSON = function (json) { this.rules = __assign({}, json); }; /** * Creates a permission from the given rules. * @param json The rules. * @return The permission. */ Permission.fromJSON = function (json) { var permission = new this(); permission.fromJSON(json); return permission; }; /** * Resolves user and role references and validate given references * @param userOrRole The user, role or reference * @return The resolved and validated reference */ Permission.prototype.ref = function (userOrRole) { var ref = typeof userOrRole === 'string' ? userOrRole : userOrRole.id; if (ref.indexOf('/db/User/') === 0 || ref.indexOf('/db/Role/') === 0) { return ref; } throw new TypeError('The given object isn\'t a user, role or a valid reference.'); }; Permission.BASE_PERMISSIONS = ['load', 'update', 'delete', 'query', 'insert']; return Permission; }()); exports.Permission = Permission; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVybWlzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9pbnRlcnNlY3Rpb24vUGVybWlzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQU1BOztHQUVHO0FBQ0g7SUFBQTtRQUdTLFVBQUssR0FBOEIsRUFBRSxDQUFDO0lBcUsvQyxDQUFDO0lBbktDOzs7T0FHRztJQUNILDZCQUFRLEdBQVI7UUFDRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSCwwQkFBSyxHQUFMO1FBQ0UsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx5QkFBSSxHQUFKLFVBQUssVUFBc0I7UUFDekIsSUFBSSxDQUFDLEtBQUssZ0JBQVEsVUFBVSxDQUFDLEtBQUssQ0FBRSxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILG9DQUFlLEdBQWY7UUFBQSxpQkFNQztRQUxDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDckIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQUMsR0FBRyxJQUFLLE9BQUEsS0FBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxPQUFPLEVBQTNCLENBQTJCLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gscUNBQWdCLEdBQWhCO1FBQUEsaUJBTUM7UUFMQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQUMsR0FBRztZQUMxQixJQUFJLEtBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssT0FBTyxFQUFFO2dCQUMvQixPQUFPLEtBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsNEJBQU8sR0FBUCxVQUFRLFVBQXlCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsOEJBQVMsR0FBVCxVQUFVLFVBQXlCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDZCQUFRLEdBQVIsVUFBUyxVQUF5QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdDQUFXLEdBQVg7UUFBWSxvQkFBOEI7YUFBOUIsVUFBOEIsRUFBOUIscUJBQThCLEVBQTlCLElBQThCO1lBQTlCLCtCQUE4Qjs7UUFDeEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM3QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7U0FDL0M7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsK0JBQVUsR0FBVjtRQUFXLG9CQUE4QjthQUE5QixVQUE4QixFQUE5QixxQkFBOEIsRUFBOUIsSUFBOEI7WUFBOUIsK0JBQThCOztRQUN2QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztTQUM5QztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQ0FBWSxHQUFaO1FBQWEsb0JBQThCO2FBQTlCLFVBQThCLEVBQTlCLHFCQUE4QixFQUE5QixJQUE4QjtZQUE5QiwrQkFBOEI7O1FBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM1QztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILDJCQUFNLEdBQU47UUFDRSxvQkFBWSxJQUFJLENBQUMsS0FBSyxFQUFHO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsNkJBQVEsR0FBUixVQUFTLElBQWE7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxhQUFLLElBQUksQ0FBK0IsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLG1CQUFRLEdBQWYsVUFBZ0IsSUFBYTtRQUMzQixJQUFNLFVBQVUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzlCLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyx3QkFBRyxHQUFYLFVBQVksVUFBeUI7UUFDbkMsSUFBTSxHQUFHLEdBQUcsT0FBTyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFHLENBQUM7UUFFekUsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwRSxPQUFPLEdBQUcsQ0FBQztTQUNaO1FBRUQsTUFBTSxJQUFJLFNBQVMsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUF0S2UsMkJBQWdCLEdBQW1CLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBdUtyRyxpQkFBQztDQUFBLEFBeEtELElBd0tDO0FBeEtZLGdDQUFVIn0=