UNPKG

@okta/okta-angular

Version:
42 lines 6.36 kB
import { Directive, Input } from '@angular/core'; import { ReplaySubject, Subject } from 'rxjs'; import { filter, switchMap, takeUntil } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "./services/auth-state.service"; export class OktaHasAnyGroupDirective { constructor( // eslint-disable-next-line @typescript-eslint/no-explicit-any templateRef, viewContainer, authStateService) { this.templateRef = templateRef; this.viewContainer = viewContainer; this.authStateService = authStateService; this.groupsSub$ = new ReplaySubject(); this.destroySub$ = new Subject(); } ngOnInit() { this.groupsSub$.pipe(filter(groups => !!groups), switchMap(groups => this.authStateService.hasAnyGroups(groups)), takeUntil(this.destroySub$)).subscribe(isAuthorized => { this.viewContainer.clear(); if (isAuthorized) { this.viewContainer.createEmbeddedView(this.templateRef); } }); } ngOnChanges(changes) { if (changes['oktaHasAnyGroup'].currentValue !== changes['oktaHasAnyGroup'].previousValue) { this.groupsSub$.next(changes['oktaHasAnyGroup'].currentValue); } } ngOnDestroy() { this.destroySub$.next(); this.destroySub$.complete(); } } OktaHasAnyGroupDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: OktaHasAnyGroupDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.OktaAuthStateService }], target: i0.ɵɵFactoryTarget.Directive }); OktaHasAnyGroupDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: OktaHasAnyGroupDirective, selector: "[oktaHasAnyGroup]", inputs: { oktaHasAnyGroup: "oktaHasAnyGroup" }, usesOnChanges: true, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: OktaHasAnyGroupDirective, decorators: [{ type: Directive, args: [{ selector: '[oktaHasAnyGroup]' }] }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.OktaAuthStateService }]; }, propDecorators: { oktaHasAnyGroup: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLWFueS1ncm91cC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3JjL29rdGEvaGFzLWFueS1ncm91cC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQThFLE1BQU0sZUFBZSxDQUFDO0FBQzdILE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFJOUQsTUFBTSxPQUFPLHdCQUF3QjtJQUluQztJQUNFLDhEQUE4RDtJQUN0RCxXQUE2QixFQUM3QixhQUErQixFQUMvQixnQkFBc0M7UUFGdEMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBUHhDLGVBQVUsR0FBb0IsSUFBSSxhQUFhLEVBQVUsQ0FBQztRQUMxRCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFPdEMsQ0FBQztJQUlMLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDbEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUMxQixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQy9ELFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQzVCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3pEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLGFBQWEsRUFBRTtZQUN4RixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxZQUFzQixDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5QixDQUFDOztzSEFuQ1Usd0JBQXdCOzBHQUF4Qix3QkFBd0I7NEZBQXhCLHdCQUF3QjtrQkFEcEMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBQztvS0FZaEMsZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmLCBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2t0YUF1dGhTdGF0ZVNlcnZpY2UsIEdyb3VwcyB9IGZyb20gJy4vc2VydmljZXMvYXV0aC1zdGF0ZS5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW29rdGFIYXNBbnlHcm91cF0nfSlcbmV4cG9ydCBjbGFzcyBPa3RhSGFzQW55R3JvdXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBncm91cHNTdWIkOiBTdWJqZWN0PEdyb3Vwcz4gPSBuZXcgUmVwbGF5U3ViamVjdDxHcm91cHM+KCk7XG4gIHByaXZhdGUgZGVzdHJveVN1YiQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBhdXRoU3RhdGVTZXJ2aWNlOiBPa3RhQXV0aFN0YXRlU2VydmljZVxuICApIHsgfVxuXG4gIEBJbnB1dCgpIG9rdGFIYXNBbnlHcm91cCE6IEdyb3VwcztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdyb3Vwc1N1YiQucGlwZShcbiAgICAgIGZpbHRlcihncm91cHMgPT4gISFncm91cHMpLFxuICAgICAgc3dpdGNoTWFwKGdyb3VwcyA9PiB0aGlzLmF1dGhTdGF0ZVNlcnZpY2UuaGFzQW55R3JvdXBzKGdyb3VwcykpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveVN1YiQpXG4gICAgKS5zdWJzY3JpYmUoaXNBdXRob3JpemVkID0+IHtcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xuICAgICAgaWYgKGlzQXV0aG9yaXplZCkge1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydva3RhSGFzQW55R3JvdXAnXS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbJ29rdGFIYXNBbnlHcm91cCddLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgIHRoaXMuZ3JvdXBzU3ViJC5uZXh0KGNoYW5nZXNbJ29rdGFIYXNBbnlHcm91cCddLmN1cnJlbnRWYWx1ZSBhcyBHcm91cHMpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveVN1YiQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveVN1YiQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19