@okta/okta-angular
Version:
Angular support for Okta
42 lines • 6.36 kB
JavaScript
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