@okta/okta-angular
Version:
Angular support for Okta
47 lines • 6.62 kB
JavaScript
import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
import { ReplaySubject, Subject } from 'rxjs';
import { filter, switchMap, takeUntil } from 'rxjs/operators';
import { OktaAuthStateService } from './services/auth-state.service';
import * as i0 from "@angular/core";
import * as i1 from "./services/auth-state.service";
export class OktaHasAnyGroupDirective {
templateRef;
viewContainer;
authStateService;
groupsSub$ = new ReplaySubject();
destroySub$ = new Subject();
constructor(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
templateRef, viewContainer, authStateService) {
this.templateRef = templateRef;
this.viewContainer = viewContainer;
this.authStateService = authStateService;
}
oktaHasAnyGroup;
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();
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OktaHasAnyGroupDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.OktaAuthStateService }], target: i0.ɵɵFactoryTarget.Directive });
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: OktaHasAnyGroupDirective, selector: "[oktaHasAnyGroup]", inputs: { oktaHasAnyGroup: "oktaHasAnyGroup" }, usesOnChanges: true, ngImport: i0 });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLWFueS1ncm91cC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3JjL29rdGEvaGFzLWFueS1ncm91cC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQVUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBRzdFLE1BQU0sT0FBTyx3QkFBd0I7SUFNekI7SUFDQTtJQUNBO0lBUEYsVUFBVSxHQUFvQixJQUFJLGFBQWEsRUFBVSxDQUFDO0lBQzFELFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRTFDO0lBQ0UsOERBQThEO0lBQ3RELFdBQTZCLEVBQzdCLGFBQStCLEVBQy9CLGdCQUFzQztRQUZ0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7SUFDNUMsQ0FBQztJQUVJLGVBQWUsQ0FBVTtJQUVsQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ2xCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFDMUIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUMvRCxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUM1QixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksWUFBWSxFQUFFO2dCQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN6RDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFlBQVksS0FBSyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxhQUFhLEVBQUU7WUFDeEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsWUFBc0IsQ0FBQyxDQUFDO1NBQ3pFO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUIsQ0FBQzt3R0FuQ1Usd0JBQXdCOzRGQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRHBDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUM7b0tBWWhDLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9rdGFBdXRoU3RhdGVTZXJ2aWNlLCBHcm91cHMgfSBmcm9tICcuL3NlcnZpY2VzL2F1dGgtc3RhdGUuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tva3RhSGFzQW55R3JvdXBdJ30pXG5leHBvcnQgY2xhc3MgT2t0YUhhc0FueUdyb3VwRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgZ3JvdXBzU3ViJDogU3ViamVjdDxHcm91cHM+ID0gbmV3IFJlcGxheVN1YmplY3Q8R3JvdXBzPigpO1xuICBwcml2YXRlIGRlc3Ryb3lTdWIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgYXV0aFN0YXRlU2VydmljZTogT2t0YUF1dGhTdGF0ZVNlcnZpY2VcbiAgKSB7IH1cblxuICBASW5wdXQoKSBva3RhSGFzQW55R3JvdXAhOiBHcm91cHM7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5ncm91cHNTdWIkLnBpcGUoXG4gICAgICBmaWx0ZXIoZ3JvdXBzID0+ICEhZ3JvdXBzKSxcbiAgICAgIHN3aXRjaE1hcChncm91cHMgPT4gdGhpcy5hdXRoU3RhdGVTZXJ2aWNlLmhhc0FueUdyb3Vwcyhncm91cHMpKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lTdWIkKVxuICAgICkuc3Vic2NyaWJlKGlzQXV0aG9yaXplZCA9PiB7XG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgIGlmIChpc0F1dGhvcml6ZWQpIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snb2t0YUhhc0FueUdyb3VwJ10uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzWydva3RhSGFzQW55R3JvdXAnXS5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLmdyb3Vwc1N1YiQubmV4dChjaGFuZ2VzWydva3RhSGFzQW55R3JvdXAnXS5jdXJyZW50VmFsdWUgYXMgR3JvdXBzKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3lTdWIkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3lTdWIkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==