@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
JavaScript
/**
* @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==