UNPKG

angular-sidebar-menu

Version:

The sources for this package are in the [Angular Sidebar Menu](https://github.com/mledour/angular-sidebar-menu) repo. Please file issues and pull requests against that repo.

40 lines 6.29 kB
import { Injectable } from '@angular/core'; import { BehaviorSubject, combineLatest } from 'rxjs'; import { map } from 'rxjs/operators'; export class RoleService { constructor() { this.role$ = new BehaviorSubject(undefined); this.unAuthorizedVisibility$ = new BehaviorSubject('hidden'); } set role(role) { this.role$.next(role); } set unAuthorizedVisibility(visibility) { this.unAuthorizedVisibility$.next(visibility); } showItem$(roles) { return this.itemVisibilityBase$(roles).pipe(map((values) => values.isAuthorized || (!values.isAuthorized && values.unAuthorizedVisibility !== 'hidden'))); } disableItem$(roles) { return this.itemVisibilityBase$(roles).pipe(map((values) => !values.isAuthorized && values.unAuthorizedVisibility === 'disabled')); } itemVisibilityBase$(roles) { return combineLatest([ this.role$.pipe(map((role) => this.isAuthorized(role, roles))), this.unAuthorizedVisibility$, ]).pipe(map((value) => ({ isAuthorized: value[0], unAuthorizedVisibility: value[1] }))); } isRole(role) { return typeof role === 'string' || typeof role === 'number'; } isAuthorized(userRole, itemRoles) { if (!this.isRole(userRole) || !itemRoles || itemRoles.length === 0) { return true; } return itemRoles.includes(userRole); } } RoleService.decorators = [ { type: Injectable } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zcmMvbGliL2ludGVybmFsL3JvbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU9yQyxNQUFNLE9BQU8sV0FBVztJQUR4QjtRQUVVLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBbUIsU0FBUyxDQUFDLENBQUM7UUFDekQsNEJBQXVCLEdBQUcsSUFBSSxlQUFlLENBQXlCLFFBQVEsQ0FBQyxDQUFDO0lBMEMxRixDQUFDO0lBeENDLElBQUksSUFBSSxDQUFDLElBQXNCO1FBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLHNCQUFzQixDQUFDLFVBQWtDO1FBQzNELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFjO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDekMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLE1BQU0sQ0FBQyxzQkFBc0IsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUM3RyxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFjO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDekMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksTUFBTSxDQUFDLHNCQUFzQixLQUFLLFVBQVUsQ0FBQyxDQUN0RixDQUFDO0lBQ0osQ0FBQztJQUVPLG1CQUFtQixDQUN6QixLQUFjO1FBRWQsT0FBTyxhQUFhLENBQUM7WUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyx1QkFBdUI7U0FDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFTyxNQUFNLENBQUMsSUFBVztRQUN4QixPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLENBQUM7SUFDOUQsQ0FBQztJQUVPLFlBQVksQ0FBQyxRQUFlLEVBQUUsU0FBa0I7UUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbEUsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQVEsU0FBb0IsQ0FBQyxRQUFRLENBQUMsUUFBZ0IsQ0FBQyxDQUFDO0lBQzFELENBQUM7OztZQTVDRixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVW5BdXRob3JpemVkVmlzaWJpbGl0eSB9IGZyb20gJy4uL3NpZGViYXItbWVudS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgdHlwZSBSb2xlID0gc3RyaW5nIHwgbnVtYmVyO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUm9sZVNlcnZpY2Uge1xuICBwcml2YXRlIHJvbGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSb2xlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHVuQXV0aG9yaXplZFZpc2liaWxpdHkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVbkF1dGhvcml6ZWRWaXNpYmlsaXR5PignaGlkZGVuJyk7XG5cbiAgc2V0IHJvbGUocm9sZTogUm9sZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucm9sZSQubmV4dChyb2xlKTtcbiAgfVxuXG4gIHNldCB1bkF1dGhvcml6ZWRWaXNpYmlsaXR5KHZpc2liaWxpdHk6IFVuQXV0aG9yaXplZFZpc2liaWxpdHkpIHtcbiAgICB0aGlzLnVuQXV0aG9yaXplZFZpc2liaWxpdHkkLm5leHQodmlzaWJpbGl0eSk7XG4gIH1cblxuICBzaG93SXRlbSQocm9sZXM/OiBSb2xlW10pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pdGVtVmlzaWJpbGl0eUJhc2UkKHJvbGVzKS5waXBlKFxuICAgICAgbWFwKCh2YWx1ZXMpID0+IHZhbHVlcy5pc0F1dGhvcml6ZWQgfHwgKCF2YWx1ZXMuaXNBdXRob3JpemVkICYmIHZhbHVlcy51bkF1dGhvcml6ZWRWaXNpYmlsaXR5ICE9PSAnaGlkZGVuJykpXG4gICAgKTtcbiAgfVxuXG4gIGRpc2FibGVJdGVtJChyb2xlcz86IFJvbGVbXSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLml0ZW1WaXNpYmlsaXR5QmFzZSQocm9sZXMpLnBpcGUoXG4gICAgICBtYXAoKHZhbHVlcykgPT4gIXZhbHVlcy5pc0F1dGhvcml6ZWQgJiYgdmFsdWVzLnVuQXV0aG9yaXplZFZpc2liaWxpdHkgPT09ICdkaXNhYmxlZCcpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXRlbVZpc2liaWxpdHlCYXNlJChcbiAgICByb2xlcz86IFJvbGVbXVxuICApOiBPYnNlcnZhYmxlPHsgaXNBdXRob3JpemVkOiBib29sZWFuOyB1bkF1dGhvcml6ZWRWaXNpYmlsaXR5OiBVbkF1dGhvcml6ZWRWaXNpYmlsaXR5IH0+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnJvbGUkLnBpcGUobWFwKChyb2xlKSA9PiB0aGlzLmlzQXV0aG9yaXplZChyb2xlLCByb2xlcykpKSxcbiAgICAgIHRoaXMudW5BdXRob3JpemVkVmlzaWJpbGl0eSQsXG4gICAgXSkucGlwZShtYXAoKHZhbHVlKSA9PiAoeyBpc0F1dGhvcml6ZWQ6IHZhbHVlWzBdLCB1bkF1dGhvcml6ZWRWaXNpYmlsaXR5OiB2YWx1ZVsxXSB9KSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1JvbGUocm9sZT86IFJvbGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHJvbGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiByb2xlID09PSAnbnVtYmVyJztcbiAgfVxuXG4gIHByaXZhdGUgaXNBdXRob3JpemVkKHVzZXJSb2xlPzogUm9sZSwgaXRlbVJvbGVzPzogUm9sZVtdKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmlzUm9sZSh1c2VyUm9sZSkgfHwgIWl0ZW1Sb2xlcyB8fCBpdGVtUm9sZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gKGl0ZW1Sb2xlcyBhcyBSb2xlW10pLmluY2x1ZGVzKHVzZXJSb2xlIGFzIFJvbGUpO1xuICB9XG59XG4iXX0=