UNPKG

@ema/js-base-library

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0.

146 lines 10.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Util } from '../utils/util'; import { HttpService } from '../http/http-service'; /** @type {?} */ const singleton = Symbol(); /** @type {?} */ const singletonEnforcer = Symbol(); export class PermissionsService { /** * @param {?} enforcer */ constructor(enforcer) { this._roles = { ANONYMOUS: [{ actions: 'read', subject: 'all' }] }; if (enforcer !== singletonEnforcer) { throw new Error('Cannot construct singleton'); } this._type = 'PermissionsService'; this._http = HttpService.instance; this._rules = this._roles.ANONYMOUS; } /** * @return {?} */ static get instance() { if (!this[singleton]) { this[singleton] = new PermissionsService(singletonEnforcer); } return this[singleton]; } /** * @param {?} url * @param {?=} replace * @param {?=} pluck * @return {?} */ loadRules(url, replace = true, pluck = undefined) { return tslib_1.__awaiter(this, void 0, void 0, function* () { /** @type {?} */ let data = yield this._http.get(url); if (pluck) { data = data[pluck]; } this.addRules(data, replace); }); } /** * @param {?} rules * @param {?=} replace * @return {?} */ addRules(rules, replace = false) { if (!replace) { this.rules = [...this.rules, ...rules]; } else { this.rules = rules; } if (Util.isBrowser()) { dispatchEvent(new CustomEvent('permissionsRulesChange', { detail: { rules: this.rules } })); } // this.registerPermissionComponents(); } /** * @param {?=} componentElements * @return {?} */ registerPermissionComponents(componentElements) { /** @type {?} */ let components = componentElements || Array.from(document.getElementsByTagName('ema-permission')); components.forEach((/** * @param {?} comp * @return {?} */ (comp) => { comp['setPermissionService'](this); // comp['setRules'](this.rules); })); } /** * @return {?} */ get rules() { return this._rules; } /** * @return {?} */ get roles() { return this._roles; } /** * @return {?} */ get user() { return this._user; } /** * @param {?} user * @return {?} */ set user(user) { this._user = user; } /** * @param {?} rules * @return {?} */ set rules(rules) { this._rules = rules; if (Util.isBrowser()) { dispatchEvent(new CustomEvent('permissionsRulesChange', { detail: { rules: this._rules } })); } } /** * @return {?} */ get type() { return this._type; } /** * @param {?} value * @return {?} */ set type(value) { this._type = value; } } if (false) { /** @type {?} */ PermissionsService.prototype._type; /** @type {?} */ PermissionsService.prototype._roles; /** @type {?} */ PermissionsService.prototype._rules; /** @type {?} */ PermissionsService.prototype._user; /** @type {?} */ PermissionsService.prototype._http; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BlbWEvanMtYmFzZS1saWJyYXJ5LyIsInNvdXJjZXMiOlsibGliL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7TUFFN0MsU0FBUyxHQUFHLE1BQU0sRUFBRTs7TUFDcEIsaUJBQWlCLEdBQUcsTUFBTSxFQUFFO0FBRWxDLE1BQU0sT0FBTyxrQkFBa0I7Ozs7SUFVM0IsWUFBWSxRQUFRO1FBUHBCLFdBQU0sR0FBRztZQUNMLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDbkQsQ0FBQztRQU1FLElBQUksUUFBUSxLQUFLLGlCQUFpQixFQUFFO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztTQUNqRDtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsb0JBQW9CLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFDeEMsQ0FBQzs7OztJQUVELE1BQU0sS0FBSyxRQUFRO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7Ozs7OztJQUVLLFNBQVMsQ0FBQyxHQUFXLEVBQUUsT0FBTyxHQUFHLElBQUksRUFBRSxRQUFnQixTQUFTOzs7Z0JBQzlELElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUNwQyxJQUFHLEtBQUssRUFBRTtnQkFDTixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO2FBQ3JCO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQztLQUFBOzs7Ozs7SUFFRCxRQUFRLENBQUMsS0FBWSxFQUFFLE9BQU8sR0FBRyxLQUFLO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUE7U0FDekM7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDbEIsYUFBYSxDQUFDLElBQUksV0FBVyxDQUFDLHdCQUF3QixFQUFDLEVBQUMsTUFBTSxFQUFDLEVBQUMsS0FBSyxFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQTtTQUN4RjtRQUNELHVDQUF1QztJQUMzQyxDQUFDOzs7OztJQUVELDRCQUE0QixDQUFDLGlCQUFrQjs7WUFDdkMsVUFBVSxHQUFHLGlCQUFpQixJQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEcsVUFBVSxDQUFDLE9BQU87Ozs7UUFBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLGdDQUFnQztRQUNwQyxDQUFDLEVBQUMsQ0FBQTtJQUNOLENBQUM7Ozs7SUFFRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQzs7OztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDOzs7O0lBRUQsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7Ozs7O0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBVTtRQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7Ozs7O0lBRUQsSUFBSSxLQUFLLENBQUMsS0FBWTtRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNqQixhQUFhLENBQUMsSUFBSSxXQUFXLENBQUMsd0JBQXdCLEVBQUMsRUFBQyxNQUFNLEVBQUMsRUFBQyxLQUFLLEVBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3pGO0lBQ0wsQ0FBQzs7OztJQUVELElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDOzs7OztJQUVELElBQUksSUFBSSxDQUFDLEtBQUs7UUFDVixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0NBRUo7OztJQW5GRyxtQ0FBYzs7SUFDZCxvQ0FFRTs7SUFDRixvQ0FBYzs7SUFDZCxtQ0FBWTs7SUFDWixtQ0FBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vdXNlcnMvdXNlcic7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uL2h0dHAvaHR0cC1zZXJ2aWNlJztcblxuY29uc3Qgc2luZ2xldG9uID0gU3ltYm9sKCk7XG5jb25zdCBzaW5nbGV0b25FbmZvcmNlciA9IFN5bWJvbCgpO1xuXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnNTZXJ2aWNlIHtcblxuICAgIF90eXBlOiBzdHJpbmc7XG4gICAgX3JvbGVzID0ge1xuICAgICAgICBBTk9OWU1PVVM6IFt7IGFjdGlvbnM6ICdyZWFkJywgc3ViamVjdDogJ2FsbCcgfV1cbiAgICB9O1xuICAgIF9ydWxlczogYW55W107XG4gICAgX3VzZXI6IFVzZXI7XG4gICAgX2h0dHA6IEh0dHBTZXJ2aWNlO1xuXG4gICAgY29uc3RydWN0b3IoZW5mb3JjZXIpIHtcbiAgICAgICAgaWYgKGVuZm9yY2VyICE9PSBzaW5nbGV0b25FbmZvcmNlcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29uc3RydWN0IHNpbmdsZXRvbicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnUGVybWlzc2lvbnNTZXJ2aWNlJztcbiAgICAgICAgdGhpcy5faHR0cCA9IEh0dHBTZXJ2aWNlLmluc3RhbmNlO1xuICAgICAgICB0aGlzLl9ydWxlcyA9IHRoaXMuX3JvbGVzLkFOT05ZTU9VUztcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGluc3RhbmNlKCkge1xuICAgICAgICBpZiAoIXRoaXNbc2luZ2xldG9uXSkge1xuICAgICAgICAgICAgdGhpc1tzaW5nbGV0b25dID0gbmV3IFBlcm1pc3Npb25zU2VydmljZShzaW5nbGV0b25FbmZvcmNlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXNbc2luZ2xldG9uXTtcbiAgICB9XG5cbiAgICBhc3luYyBsb2FkUnVsZXModXJsOiBzdHJpbmcsIHJlcGxhY2UgPSB0cnVlLCBwbHVjazogc3RyaW5nID0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBkYXRhID0gYXdhaXQgdGhpcy5faHR0cC5nZXQodXJsKTtcbiAgICAgICAgaWYocGx1Y2spIHtcbiAgICAgICAgICAgIGRhdGEgPSBkYXRhW3BsdWNrXVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkUnVsZXMoZGF0YSwgcmVwbGFjZSk7XG4gICAgfVxuXG4gICAgYWRkUnVsZXMocnVsZXM6IGFueVtdLCByZXBsYWNlID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKCFyZXBsYWNlKSB7XG4gICAgICAgICAgICB0aGlzLnJ1bGVzID0gWy4uLnRoaXMucnVsZXMsIC4uLnJ1bGVzXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ydWxlcyA9IHJ1bGVzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChVdGlsLmlzQnJvd3NlcigpKSB7XG4gICAgICAgICAgICBkaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgncGVybWlzc2lvbnNSdWxlc0NoYW5nZScse2RldGFpbDp7cnVsZXM6dGhpcy5ydWxlcyB9fSkpXG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhpcy5yZWdpc3RlclBlcm1pc3Npb25Db21wb25lbnRzKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJQZXJtaXNzaW9uQ29tcG9uZW50cyhjb21wb25lbnRFbGVtZW50cz8pIHtcbiAgICAgICAgbGV0IGNvbXBvbmVudHMgPSBjb21wb25lbnRFbGVtZW50cyB8fCAgQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZW1hLXBlcm1pc3Npb24nKSk7XG4gICAgICAgIGNvbXBvbmVudHMuZm9yRWFjaCgoY29tcCkgPT4ge1xuICAgICAgICAgICAgY29tcFsnc2V0UGVybWlzc2lvblNlcnZpY2UnXSh0aGlzKTtcbiAgICAgICAgICAgIC8vIGNvbXBbJ3NldFJ1bGVzJ10odGhpcy5ydWxlcyk7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0IHJ1bGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVsZXM7XG4gICAgfVxuXG4gICAgZ2V0IHJvbGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm9sZXM7XG4gICAgfVxuXG4gICAgZ2V0IHVzZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyO1xuICAgIH1cblxuICAgIHNldCB1c2VyKHVzZXI6IFVzZXIpIHtcbiAgICAgICAgdGhpcy5fdXNlciA9IHVzZXI7XG4gICAgfVxuXG4gICAgc2V0IHJ1bGVzKHJ1bGVzOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9ydWxlcyA9IHJ1bGVzO1xuICAgICAgICBpZihVdGlsLmlzQnJvd3NlcigpKSB7XG4gICAgICAgICAgICBkaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgncGVybWlzc2lvbnNSdWxlc0NoYW5nZScse2RldGFpbDp7cnVsZXM6dGhpcy5fcnVsZXMgfX0pKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlO1xuICAgIH1cblxuICAgIHNldCB0eXBlKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3R5cGUgPSB2YWx1ZTtcbiAgICB9XG5cbn1cbiJdfQ==