@igo2/auth 18.0.1-next.2 → 18.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/environment/environment.interface.mjs +2 -0
- package/esm2022/environment/igo2-auth-environment.mjs +5 -0
- package/esm2022/environment/public_api.mjs +2 -0
- package/esm2022/facebook/auth-facebook/auth-facebook.component.mjs +65 -0
- package/esm2022/facebook/igo2-auth-facebook.mjs +5 -0
- package/esm2022/facebook/public_api.mjs +3 -0
- package/esm2022/facebook/shared/auth-facebook.interface.mjs +2 -0
- package/esm2022/facebook/shared/index.mjs +2 -0
- package/esm2022/form/auth-form/auth-form.component.mjs +166 -0
- package/esm2022/form/auth-form.module.mjs +73 -0
- package/esm2022/form/igo2-auth-form.mjs +5 -0
- package/esm2022/form/public_api.mjs +7 -0
- package/esm2022/form/shared/auth-form.interface.mjs +2 -0
- package/esm2022/form/shared/index.mjs +2 -0
- package/esm2022/google/auth-google/auth-google.component.mjs +108 -0
- package/esm2022/google/igo2-auth-google.mjs +5 -0
- package/esm2022/google/public_api.mjs +3 -0
- package/esm2022/google/shared/auth-google.interface.mjs +2 -0
- package/esm2022/google/shared/index.mjs +2 -0
- package/esm2022/igo2-auth.mjs +5 -0
- package/esm2022/internal/auth-intern/auth-intern.component.mjs +84 -0
- package/esm2022/internal/igo2-auth-internal.mjs +5 -0
- package/esm2022/internal/public_api.mjs +2 -0
- package/esm2022/lib/auth.provider.mjs +22 -0
- package/esm2022/lib/shared/admin.guard.mjs +38 -0
- package/esm2022/lib/shared/auth-storage.interface.mjs +2 -0
- package/esm2022/lib/shared/auth-storage.service.mjs +100 -0
- package/esm2022/lib/shared/auth.guard.mjs +38 -0
- package/esm2022/lib/shared/auth.interceptor.mjs +159 -0
- package/esm2022/lib/shared/auth.interface.mjs +5 -0
- package/esm2022/lib/shared/auth.service.mjs +175 -0
- package/esm2022/lib/shared/index.mjs +12 -0
- package/esm2022/lib/shared/logged.guard.mjs +38 -0
- package/esm2022/lib/shared/profils.guard.mjs +43 -0
- package/esm2022/lib/shared/token.interface.mjs +2 -0
- package/esm2022/lib/shared/token.service.mjs +48 -0
- package/esm2022/microsoft/auth-microsoft/auth-microsoft.component.mjs +100 -0
- package/esm2022/microsoft/auth-microsoft.provider.mjs +104 -0
- package/esm2022/microsoft/auth-microsoftb2c/auth-microsoftb2c.component.mjs +98 -0
- package/esm2022/microsoft/auth-microsoftb2c/auth-msalBroadcastServiceb2c.service.mjs +47 -0
- package/esm2022/microsoft/auth-microsoftb2c/auth-msalServiceb2c.service.mjs +85 -0
- package/esm2022/microsoft/igo2-auth-microsoft.mjs +5 -0
- package/esm2022/microsoft/public_api.mjs +5 -0
- package/esm2022/microsoft/shared/auth-microsoft.interface.mjs +2 -0
- package/esm2022/microsoft/shared/index.mjs +2 -0
- package/esm2022/monitoring/auth-monitoring/auth-monitoring.provider.mjs +24 -0
- package/esm2022/monitoring/auth-monitoring/auth-monitoring.service.mjs +54 -0
- package/esm2022/monitoring/igo2-auth-monitoring.mjs +5 -0
- package/esm2022/monitoring/public_api.mjs +3 -0
- package/esm2022/public_api.mjs +6 -0
- package/fesm2022/igo2-auth-facebook.mjs +3 -3
- package/fesm2022/igo2-auth-facebook.mjs.map +1 -1
- package/fesm2022/igo2-auth-form.mjs +8 -8
- package/fesm2022/igo2-auth-form.mjs.map +1 -1
- package/fesm2022/igo2-auth-google.mjs +3 -3
- package/fesm2022/igo2-auth-google.mjs.map +1 -1
- package/fesm2022/igo2-auth-internal.mjs +4 -4
- package/fesm2022/igo2-auth-internal.mjs.map +1 -1
- package/fesm2022/igo2-auth-microsoft.mjs +14 -14
- package/fesm2022/igo2-auth-microsoft.mjs.map +1 -1
- package/fesm2022/igo2-auth-monitoring.mjs +10 -8
- package/fesm2022/igo2-auth-monitoring.mjs.map +1 -1
- package/fesm2022/igo2-auth.mjs +24 -24
- package/fesm2022/igo2-auth.mjs.map +1 -1
- package/form/src/auth-form/auth-intern.theme.scss +2 -3
- package/monitoring/auth-monitoring/auth-monitoring.provider.d.ts +2 -2
- package/package.json +26 -10
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { NgIf } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { FormsModule, ReactiveFormsModule, UntypedFormBuilder, Validators } from '@angular/forms';
|
|
4
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
|
+
import { MatInputModule } from '@angular/material/input';
|
|
7
|
+
import { MatProgressSpinner } from '@angular/material/progress-spinner';
|
|
8
|
+
import { AuthService } from '@igo2/auth';
|
|
9
|
+
import { LanguageService } from '@igo2/core/language';
|
|
10
|
+
import { IgoLanguageModule } from '@igo2/core/language';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@igo2/auth";
|
|
13
|
+
import * as i2 from "@igo2/core/language";
|
|
14
|
+
import * as i3 from "@angular/forms";
|
|
15
|
+
import * as i4 from "@angular/material/form-field";
|
|
16
|
+
import * as i5 from "@angular/material/input";
|
|
17
|
+
import * as i6 from "@angular/material/button";
|
|
18
|
+
import * as i7 from "@ngx-translate/core";
|
|
19
|
+
export class AuthInternComponent {
|
|
20
|
+
auth;
|
|
21
|
+
languageService;
|
|
22
|
+
get allowAnonymous() {
|
|
23
|
+
return this._allowAnonymous;
|
|
24
|
+
}
|
|
25
|
+
set allowAnonymous(value) {
|
|
26
|
+
this._allowAnonymous = value;
|
|
27
|
+
}
|
|
28
|
+
_allowAnonymous = true;
|
|
29
|
+
error = '';
|
|
30
|
+
form;
|
|
31
|
+
loading = false;
|
|
32
|
+
login = new EventEmitter();
|
|
33
|
+
constructor(auth, languageService, fb) {
|
|
34
|
+
this.auth = auth;
|
|
35
|
+
this.languageService = languageService;
|
|
36
|
+
this.form = fb.group({
|
|
37
|
+
username: ['', Validators.required],
|
|
38
|
+
password: ['', Validators.required]
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
loginUser(values) {
|
|
42
|
+
this.loading = true;
|
|
43
|
+
this.auth.login(values.username, values.password).subscribe(() => {
|
|
44
|
+
this.login.emit(true);
|
|
45
|
+
this.loading = false;
|
|
46
|
+
}, (error) => {
|
|
47
|
+
try {
|
|
48
|
+
this.languageService.translate
|
|
49
|
+
.get('igo.auth.error.' + error.error.message)
|
|
50
|
+
.subscribe((errorMsg) => (this.error = errorMsg));
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
this.error = error.error.message;
|
|
54
|
+
}
|
|
55
|
+
this.loading = false;
|
|
56
|
+
});
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
loginAnonymous() {
|
|
60
|
+
this.auth.loginAnonymous().subscribe(() => {
|
|
61
|
+
this.login.emit(true);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthInternComponent, deps: [{ token: i1.AuthService }, { token: i2.LanguageService }, { token: i3.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
65
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AuthInternComponent, isStandalone: true, selector: "igo-auth-intern", inputs: { allowAnonymous: "allowAnonymous" }, outputs: { login: "login" }, ngImport: i0, template: "<form [formGroup]=\"form\" role=\"form\" (ngSubmit)=\"loginUser(form.value)\">\n <div>\n <mat-form-field class=\"full-width\">\n <mat-label>{{ 'igo.auth.user' | translate }}</mat-label>\n <input\n matInput\n required\n placeholder=\"{{ 'igo.auth.user' | translate }}\"\n formControlName=\"username\"\n />\n </mat-form-field>\n </div>\n\n <div>\n <mat-form-field class=\"full-width\">\n <mat-label>{{ 'igo.auth.password' | translate }}</mat-label>\n <input\n matInput\n required\n type=\"password\"\n placeholder=\"{{ 'igo.auth.password' | translate }}\"\n formControlName=\"password\"\n />\n </mat-form-field>\n </div>\n\n <button mat-raised-button type=\"submit\">\n {{ 'igo.auth.login' | translate }}\n </button>\n <button\n *ngIf=\"allowAnonymous\"\n mat-raised-button\n class=\"anonymous\"\n type=\"button\"\n (click)=\"loginAnonymous()\"\n >\n {{ 'igo.auth.accessAnonymous' | translate }}\n </button>\n <div *ngIf=\"error\">\n <br />\n <font size=\"3\" color=\"red\">{{ error }}</font>\n </div>\n</form>\n\n<div *ngIf=\"loading\" class=\"loading-container\">\n <mat-spinner [diameter]=\"40\"></mat-spinner>\n</div>\n", styles: [".full-width{width:100%}.anonymous{margin-left:10px}.loading-container{position:absolute;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1000;top:0;left:0;padding:24px;box-sizing:border-box}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
66
|
+
}
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthInternComponent, decorators: [{
|
|
68
|
+
type: Component,
|
|
69
|
+
args: [{ selector: 'igo-auth-intern', changeDetection: ChangeDetectionStrategy.Default, standalone: true, imports: [
|
|
70
|
+
FormsModule,
|
|
71
|
+
ReactiveFormsModule,
|
|
72
|
+
MatFormFieldModule,
|
|
73
|
+
MatInputModule,
|
|
74
|
+
MatButtonModule,
|
|
75
|
+
MatProgressSpinner,
|
|
76
|
+
NgIf,
|
|
77
|
+
IgoLanguageModule
|
|
78
|
+
], template: "<form [formGroup]=\"form\" role=\"form\" (ngSubmit)=\"loginUser(form.value)\">\n <div>\n <mat-form-field class=\"full-width\">\n <mat-label>{{ 'igo.auth.user' | translate }}</mat-label>\n <input\n matInput\n required\n placeholder=\"{{ 'igo.auth.user' | translate }}\"\n formControlName=\"username\"\n />\n </mat-form-field>\n </div>\n\n <div>\n <mat-form-field class=\"full-width\">\n <mat-label>{{ 'igo.auth.password' | translate }}</mat-label>\n <input\n matInput\n required\n type=\"password\"\n placeholder=\"{{ 'igo.auth.password' | translate }}\"\n formControlName=\"password\"\n />\n </mat-form-field>\n </div>\n\n <button mat-raised-button type=\"submit\">\n {{ 'igo.auth.login' | translate }}\n </button>\n <button\n *ngIf=\"allowAnonymous\"\n mat-raised-button\n class=\"anonymous\"\n type=\"button\"\n (click)=\"loginAnonymous()\"\n >\n {{ 'igo.auth.accessAnonymous' | translate }}\n </button>\n <div *ngIf=\"error\">\n <br />\n <font size=\"3\" color=\"red\">{{ error }}</font>\n </div>\n</form>\n\n<div *ngIf=\"loading\" class=\"loading-container\">\n <mat-spinner [diameter]=\"40\"></mat-spinner>\n</div>\n", styles: [".full-width{width:100%}.anonymous{margin-left:10px}.loading-container{position:absolute;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1000;top:0;left:0;padding:24px;box-sizing:border-box}\n"] }]
|
|
79
|
+
}], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.LanguageService }, { type: i3.UntypedFormBuilder }], propDecorators: { allowAnonymous: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], login: [{
|
|
82
|
+
type: Output
|
|
83
|
+
}] } });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcm4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9pbnRlcm5hbC9zcmMvYXV0aC1pbnRlcm4vYXV0aC1pbnRlcm4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9pbnRlcm5hbC9zcmMvYXV0aC1pbnRlcm4vYXV0aC1pbnRlcm4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUVsQixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFtQnhELE1BQU0sT0FBTyxtQkFBbUI7SUFpQnJCO0lBQ0M7SUFqQlYsSUFDSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBQ0QsSUFBSSxjQUFjLENBQUMsS0FBYztRQUMvQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBQ08sZUFBZSxHQUFHLElBQUksQ0FBQztJQUV4QixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsSUFBSSxDQUFtQjtJQUN2QixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBRWIsS0FBSyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO0lBRXJFLFlBQ1MsSUFBaUIsRUFDaEIsZUFBZ0MsRUFDeEMsRUFBc0I7UUFGZixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2hCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUd4QyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbkIsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbkMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDcEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFXO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FDekQsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxFQUNELENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDYixJQUFJLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTO3FCQUMzQixHQUFHLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7cUJBQzVDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDdEQsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ25DLENBQUM7WUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDLENBQ0YsQ0FBQztRQUNGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQXBEVSxtQkFBbUI7NEZBQW5CLG1CQUFtQixzSkN6Q2hDLG12Q0ErQ0EsOFJEaEJJLFdBQVcsdzNCQUNYLG1CQUFtQiwrVUFDbkIsa0JBQWtCLDBTQUNsQixjQUFjLDBXQUNkLGVBQWUsNE5BQ2Ysa0JBQWtCLCtLQUNsQixJQUFJLDRGQUNKLGlCQUFpQjs7NEZBR1IsbUJBQW1CO2tCQWpCL0IsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsT0FBTyxjQUNwQyxJQUFJLFdBQ1A7d0JBQ1AsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsSUFBSTt3QkFDSixpQkFBaUI7cUJBQ2xCOytJQUlHLGNBQWM7c0JBRGpCLEtBQUs7Z0JBYUksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGb3Jtc01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVW50eXBlZEZvcm1CdWlsZGVyLFxuICBVbnR5cGVkRm9ybUdyb3VwLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvYXV0aCc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1hdXRoLWludGVybicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRoLWludGVybi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dGgtaW50ZXJuLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXIsXG4gICAgTmdJZixcbiAgICBJZ29MYW5ndWFnZU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhJbnRlcm5Db21wb25lbnQge1xuICBASW5wdXQoKVxuICBnZXQgYWxsb3dBbm9ueW1vdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FsbG93QW5vbnltb3VzO1xuICB9XG4gIHNldCBhbGxvd0Fub255bW91cyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2FsbG93QW5vbnltb3VzID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfYWxsb3dBbm9ueW1vdXMgPSB0cnVlO1xuXG4gIHB1YmxpYyBlcnJvciA9ICcnO1xuICBwdWJsaWMgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgbG9naW46IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYXV0aDogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBmYjogVW50eXBlZEZvcm1CdWlsZGVyXG4gICkge1xuICAgIHRoaXMuZm9ybSA9IGZiLmdyb3VwKHtcbiAgICAgIHVzZXJuYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcGFzc3dvcmQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICB9KTtcbiAgfVxuXG4gIGxvZ2luVXNlcih2YWx1ZXM6IGFueSkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5hdXRoLmxvZ2luKHZhbHVlcy51c2VybmFtZSwgdmFsdWVzLnBhc3N3b3JkKS5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMubG9naW4uZW1pdCh0cnVlKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGVcbiAgICAgICAgICAgIC5nZXQoJ2lnby5hdXRoLmVycm9yLicgKyBlcnJvci5lcnJvci5tZXNzYWdlKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXJyb3JNc2cpID0+ICh0aGlzLmVycm9yID0gZXJyb3JNc2cpKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yLmVycm9yLm1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBsb2dpbkFub255bW91cygpIHtcbiAgICB0aGlzLmF1dGgubG9naW5Bbm9ueW1vdXMoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5sb2dpbi5lbWl0KHRydWUpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiByb2xlPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJsb2dpblVzZXIoZm9ybS52YWx1ZSlcIj5cbiAgPGRpdj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XG4gICAgICA8bWF0LWxhYmVsPnt7ICdpZ28uYXV0aC51c2VyJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2lnby5hdXRoLnVzZXInIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidXNlcm5hbWVcIlxuICAgICAgLz5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8ZGl2PlxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cbiAgICAgIDxtYXQtbGFiZWw+e3sgJ2lnby5hdXRoLnBhc3N3b3JkJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2lnby5hdXRoLnBhc3N3b3JkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCJcbiAgICAgIC8+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwic3VibWl0XCI+XG4gICAge3sgJ2lnby5hdXRoLmxvZ2luJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwiYWxsb3dBbm9ueW1vdXNcIlxuICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgY2xhc3M9XCJhbm9ueW1vdXNcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJsb2dpbkFub255bW91cygpXCJcbiAgPlxuICAgIHt7ICdpZ28uYXV0aC5hY2Nlc3NBbm9ueW1vdXMnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuICA8ZGl2ICpuZ0lmPVwiZXJyb3JcIj5cbiAgICA8YnIgLz5cbiAgICA8Zm9udCBzaXplPVwiM1wiIGNvbG9yPVwicmVkXCI+e3sgZXJyb3IgfX08L2ZvbnQ+XG4gIDwvZGl2PlxuPC9mb3JtPlxuXG48ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIj5cbiAgPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCI0MFwiPjwvbWF0LXNwaW5uZXI+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public_api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdvMi1hdXRoLWludGVybmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9pbnRlcm5hbC9zcmMvaWdvMi1hdXRoLWludGVybmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './auth-intern/auth-intern.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvaW50ZXJuYWwvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQ0FBcUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXV0aC1pbnRlcm4vYXV0aC1pbnRlcm4uY29tcG9uZW50JztcbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
2
|
+
import { makeEnvironmentProviders } from '@angular/core';
|
|
3
|
+
import { StorageService } from '@igo2/core/storage';
|
|
4
|
+
import { AuthInterceptor, AuthStorageService } from './shared';
|
|
5
|
+
export function provideAuthentification(...features) {
|
|
6
|
+
const providers = [
|
|
7
|
+
{
|
|
8
|
+
provide: HTTP_INTERCEPTORS,
|
|
9
|
+
useClass: AuthInterceptor,
|
|
10
|
+
multi: true
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
provide: StorageService,
|
|
14
|
+
useClass: AuthStorageService
|
|
15
|
+
}
|
|
16
|
+
];
|
|
17
|
+
for (const feature of features) {
|
|
18
|
+
providers.push(...feature.providers);
|
|
19
|
+
}
|
|
20
|
+
return makeEnvironmentProviders(providers);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9hdXRoLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFHTCx3QkFBd0IsRUFDekIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFHTCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ25CLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsR0FBRyxRQUF3QztJQUUzQyxNQUFNLFNBQVMsR0FBZTtRQUM1QjtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsUUFBUSxFQUFFLGVBQWU7WUFDekIsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNEO1lBQ0UsT0FBTyxFQUFFLGNBQWM7WUFDdkIsUUFBUSxFQUFFLGtCQUFrQjtTQUM3QjtLQUNGLENBQUM7SUFFRixLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE9BQU8sd0JBQXdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gIFByb3ZpZGVyLFxuICBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9zdG9yYWdlJztcblxuaW1wb3J0IHtcbiAgQXV0aEZlYXR1cmUsXG4gIEF1dGhGZWF0dXJlS2luZCxcbiAgQXV0aEludGVyY2VwdG9yLFxuICBBdXRoU3RvcmFnZVNlcnZpY2Vcbn0gZnJvbSAnLi9zaGFyZWQnO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUF1dGhlbnRpZmljYXRpb24oXG4gIC4uLmZlYXR1cmVzOiBBdXRoRmVhdHVyZTxBdXRoRmVhdHVyZUtpbmQ+W11cbik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgY29uc3QgcHJvdmlkZXJzOiBQcm92aWRlcltdID0gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxuICAgICAgdXNlQ2xhc3M6IEF1dGhJbnRlcmNlcHRvcixcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBTdG9yYWdlU2VydmljZSxcbiAgICAgIHVzZUNsYXNzOiBBdXRoU3RvcmFnZVNlcnZpY2VcbiAgICB9XG4gIF07XG5cbiAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzKSB7XG4gICAgcHJvdmlkZXJzLnB1c2goLi4uZmVhdHVyZS5wcm92aWRlcnMpO1xuICB9XG5cbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhwcm92aWRlcnMpO1xufVxuIl19
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { ConfigService } from '@igo2/core/config';
|
|
4
|
+
import { AuthService } from './auth.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./auth.service";
|
|
7
|
+
import * as i2 from "@igo2/core/config";
|
|
8
|
+
import * as i3 from "@angular/router";
|
|
9
|
+
export class AdminGuard {
|
|
10
|
+
authService;
|
|
11
|
+
config;
|
|
12
|
+
router;
|
|
13
|
+
constructor(authService, config, router) {
|
|
14
|
+
this.authService = authService;
|
|
15
|
+
this.config = config;
|
|
16
|
+
this.router = router;
|
|
17
|
+
}
|
|
18
|
+
canActivate(route, state) {
|
|
19
|
+
if (this.authService.isAdmin) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
this.authService.redirectUrl = state.url;
|
|
23
|
+
const authConfig = this.config.getConfig('auth');
|
|
24
|
+
if (authConfig?.loginRoute) {
|
|
25
|
+
this.router.navigateByUrl(authConfig.loginRoute);
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AdminGuard, deps: [{ token: i1.AuthService }, { token: i2.ConfigService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
30
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AdminGuard, providedIn: 'root' });
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AdminGuard, decorators: [{
|
|
33
|
+
type: Injectable,
|
|
34
|
+
args: [{
|
|
35
|
+
providedIn: 'root'
|
|
36
|
+
}]
|
|
37
|
+
}], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i3.Router }] });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4uZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvc2hhcmVkL2FkbWluLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLE1BQU0sRUFFUCxNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBSzdDLE1BQU0sT0FBTyxVQUFVO0lBRVg7SUFDQTtJQUNBO0lBSFYsWUFDVSxXQUF3QixFQUN4QixNQUFxQixFQUNyQixNQUFjO1FBRmQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ3JCLENBQUM7SUFFSixXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUNuRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUV6QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQWdCLENBQUM7UUFDaEUsSUFBSSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7d0dBcEJVLFVBQVU7NEdBQVYsVUFBVSxjQUZULE1BQU07OzRGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgUm91dGVyLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90XG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2NvbmZpZyc7XG5cbmltcG9ydCB7IEF1dGhPcHRpb25zIH0gZnJvbSAnLi9hdXRoLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQWRtaW5HdWFyZCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkge1xuICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmlzQWRtaW4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuYXV0aFNlcnZpY2UucmVkaXJlY3RVcmwgPSBzdGF0ZS51cmw7XG5cbiAgICBjb25zdCBhdXRoQ29uZmlnID0gdGhpcy5jb25maWcuZ2V0Q29uZmlnKCdhdXRoJykgYXMgQXV0aE9wdGlvbnM7XG4gICAgaWYgKGF1dGhDb25maWc/LmxvZ2luUm91dGUpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYXV0aENvbmZpZy5sb2dpblJvdXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1zdG9yYWdlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9zaGFyZWQvYXV0aC1zdG9yYWdlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RvcmFnZU9wdGlvbnMgfSBmcm9tICdAaWdvMi9jb3JlL3N0b3JhZ2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhTdG9yYWdlT3B0aW9ucyBleHRlbmRzIFN0b3JhZ2VPcHRpb25zIHtcbiAgdXJsOiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { ConfigService } from '@igo2/core/config';
|
|
4
|
+
import { BaseStorage, StorageScope } from '@igo2/core/storage';
|
|
5
|
+
import { AuthService } from './auth.service';
|
|
6
|
+
import { TokenService } from './token.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@igo2/core/config";
|
|
9
|
+
import * as i2 from "@angular/common/http";
|
|
10
|
+
import * as i3 from "./auth.service";
|
|
11
|
+
import * as i4 from "./token.service";
|
|
12
|
+
export class AuthStorageService extends BaseStorage {
|
|
13
|
+
http;
|
|
14
|
+
authService;
|
|
15
|
+
tokenService;
|
|
16
|
+
constructor(config, http, authService, tokenService) {
|
|
17
|
+
super(config);
|
|
18
|
+
this.http = http;
|
|
19
|
+
this.authService = authService;
|
|
20
|
+
this.tokenService = tokenService;
|
|
21
|
+
this.authService.authenticate$.subscribe((isAuthenticated) => {
|
|
22
|
+
if (isAuthenticated && this.options.url) {
|
|
23
|
+
this.http
|
|
24
|
+
.get(this.options.url)
|
|
25
|
+
.subscribe((userIgo) => {
|
|
26
|
+
if (userIgo && userIgo.preference) {
|
|
27
|
+
for (const key of Object.keys(userIgo.preference)) {
|
|
28
|
+
const value = userIgo.preference[key];
|
|
29
|
+
super.set(key, value);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
set(key, value, scope = StorageScope.LOCAL) {
|
|
37
|
+
if (scope === StorageScope.LOCAL &&
|
|
38
|
+
this.authService.authenticated &&
|
|
39
|
+
this.options.url) {
|
|
40
|
+
const preference = {};
|
|
41
|
+
preference[key] = value;
|
|
42
|
+
this.http.patch(this.options.url, { preference }).subscribe();
|
|
43
|
+
}
|
|
44
|
+
super.set(key, value, scope);
|
|
45
|
+
}
|
|
46
|
+
remove(key, scope = StorageScope.LOCAL) {
|
|
47
|
+
if (scope === StorageScope.LOCAL &&
|
|
48
|
+
this.authService.authenticated &&
|
|
49
|
+
this.options.url) {
|
|
50
|
+
const preference = {};
|
|
51
|
+
preference[key] = undefined;
|
|
52
|
+
this.http.patch(this.options.url, { preference }).subscribe();
|
|
53
|
+
}
|
|
54
|
+
super.remove(key, scope);
|
|
55
|
+
}
|
|
56
|
+
clear(scope = StorageScope.LOCAL) {
|
|
57
|
+
if (scope === StorageScope.LOCAL &&
|
|
58
|
+
this.authService.authenticated &&
|
|
59
|
+
this.options.url) {
|
|
60
|
+
this.http
|
|
61
|
+
.patch(this.options.url, { preference: {} }, {
|
|
62
|
+
params: {
|
|
63
|
+
mergePreference: 'false'
|
|
64
|
+
}
|
|
65
|
+
})
|
|
66
|
+
.subscribe();
|
|
67
|
+
}
|
|
68
|
+
let token;
|
|
69
|
+
if (scope === StorageScope.LOCAL) {
|
|
70
|
+
token = this.tokenService.get();
|
|
71
|
+
}
|
|
72
|
+
super.clear(scope);
|
|
73
|
+
if (token) {
|
|
74
|
+
this.tokenService.set(token);
|
|
75
|
+
}
|
|
76
|
+
if (scope === StorageScope.LOCAL &&
|
|
77
|
+
this.authService.authenticated &&
|
|
78
|
+
this.options.url) {
|
|
79
|
+
this.http
|
|
80
|
+
.get(this.options.url)
|
|
81
|
+
.subscribe((userIgo) => {
|
|
82
|
+
if (userIgo && userIgo.preference) {
|
|
83
|
+
for (const key of Object.keys(userIgo.preference)) {
|
|
84
|
+
const value = userIgo.preference[key];
|
|
85
|
+
super.set(key, value);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthStorageService, deps: [{ token: i1.ConfigService }, { token: i2.HttpClient }, { token: i3.AuthService }, { token: i4.TokenService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
92
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthStorageService, providedIn: 'root' });
|
|
93
|
+
}
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthStorageService, decorators: [{
|
|
95
|
+
type: Injectable,
|
|
96
|
+
args: [{
|
|
97
|
+
providedIn: 'root'
|
|
98
|
+
}]
|
|
99
|
+
}], ctorParameters: () => [{ type: i1.ConfigService }, { type: i2.HttpClient }, { type: i3.AuthService }, { type: i4.TokenService }] });
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvc2hhcmVkL2F1dGgtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQUsvQyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsV0FBK0I7SUFHM0Q7SUFDQTtJQUNBO0lBSlYsWUFDRSxNQUFxQixFQUNiLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3hCLFlBQTBCO1FBRWxDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUpOLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFJbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDM0QsSUFBSSxlQUFlLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLElBQUk7cUJBQ04sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO3FCQUNyQixTQUFTLENBQUMsQ0FBQyxPQUErQixFQUFFLEVBQUU7b0JBQzdDLElBQUksT0FBTyxJQUFJLE9B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QUFHLEVBQ2hCLENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSTtpQkFDTixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7aUJBQ3JCLFNBQVMsQ0FBQyxDQUFDLE9BQStCLEVBQUUsRUFBRTtnQkFDN0MsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNsQyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7d0JBQ2xELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ3RDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUN4QixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDO3dHQXJHVSxrQkFBa0I7NEdBQWxCLGtCQUFrQixjQUZqQixNQUFNOzs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IEJhc2VTdG9yYWdlLCBTdG9yYWdlU2NvcGUgfSBmcm9tICdAaWdvMi9jb3JlL3N0b3JhZ2UnO1xuXG5pbXBvcnQgeyBBdXRoU3RvcmFnZU9wdGlvbnMgfSBmcm9tICcuL2F1dGgtc3RvcmFnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBUb2tlblNlcnZpY2UgfSBmcm9tICcuL3Rva2VuLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoU3RvcmFnZVNlcnZpY2UgZXh0ZW5kcyBCYXNlU3RvcmFnZTxBdXRoU3RvcmFnZU9wdGlvbnM+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIHRva2VuU2VydmljZTogVG9rZW5TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGNvbmZpZyk7XG5cbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZSQuc3Vic2NyaWJlKChpc0F1dGhlbnRpY2F0ZWQpID0+IHtcbiAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQgJiYgdGhpcy5vcHRpb25zLnVybCkge1xuICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAuZ2V0KHRoaXMub3B0aW9ucy51cmwpXG4gICAgICAgICAgLnN1YnNjcmliZSgodXNlcklnbzogeyBwcmVmZXJlbmNlOiBvYmplY3QgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKHVzZXJJZ28gJiYgdXNlcklnby5wcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHVzZXJJZ28ucHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHVzZXJJZ28ucHJlZmVyZW5jZVtrZXldO1xuICAgICAgICAgICAgICAgIHN1cGVyLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2V0KFxuICAgIGtleTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBvYmplY3QgfCBib29sZWFuIHwgbnVtYmVyLFxuICAgIHNjb3BlOiBTdG9yYWdlU2NvcGUgPSBTdG9yYWdlU2NvcGUuTE9DQUxcbiAgKSB7XG4gICAgaWYgKFxuICAgICAgc2NvcGUgPT09IFN0b3JhZ2VTY29wZS5MT0NBTCAmJlxuICAgICAgdGhpcy5hdXRoU2VydmljZS5hdXRoZW50aWNhdGVkICYmXG4gICAgICB0aGlzLm9wdGlvbnMudXJsXG4gICAgKSB7XG4gICAgICBjb25zdCBwcmVmZXJlbmNlID0ge307XG4gICAgICBwcmVmZXJlbmNlW2tleV0gPSB2YWx1ZTtcbiAgICAgIHRoaXMuaHR0cC5wYXRjaCh0aGlzLm9wdGlvbnMudXJsLCB7IHByZWZlcmVuY2UgfSkuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHN1cGVyLnNldChrZXksIHZhbHVlLCBzY29wZSk7XG4gIH1cblxuICByZW1vdmUoa2V5OiBzdHJpbmcsIHNjb3BlOiBTdG9yYWdlU2NvcGUgPSBTdG9yYWdlU2NvcGUuTE9DQUwpIHtcbiAgICBpZiAoXG4gICAgICBzY29wZSA9PT0gU3RvcmFnZVNjb3BlLkxPQ0FMICYmXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQgJiZcbiAgICAgIHRoaXMub3B0aW9ucy51cmxcbiAgICApIHtcbiAgICAgIGNvbnN0IHByZWZlcmVuY2UgPSB7fTtcbiAgICAgIHByZWZlcmVuY2Vba2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuaHR0cC5wYXRjaCh0aGlzLm9wdGlvbnMudXJsLCB7IHByZWZlcmVuY2UgfSkuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHN1cGVyLnJlbW92ZShrZXksIHNjb3BlKTtcbiAgfVxuXG4gIGNsZWFyKHNjb3BlOiBTdG9yYWdlU2NvcGUgPSBTdG9yYWdlU2NvcGUuTE9DQUwpIHtcbiAgICBpZiAoXG4gICAgICBzY29wZSA9PT0gU3RvcmFnZVNjb3BlLkxPQ0FMICYmXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQgJiZcbiAgICAgIHRoaXMub3B0aW9ucy51cmxcbiAgICApIHtcbiAgICAgIHRoaXMuaHR0cFxuICAgICAgICAucGF0Y2goXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnVybCxcbiAgICAgICAgICB7IHByZWZlcmVuY2U6IHt9IH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgIG1lcmdlUHJlZmVyZW5jZTogJ2ZhbHNlJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgbGV0IHRva2VuOiBzdHJpbmc7XG4gICAgaWYgKHNjb3BlID09PSBTdG9yYWdlU2NvcGUuTE9DQUwpIHtcbiAgICAgIHRva2VuID0gdGhpcy50b2tlblNlcnZpY2UuZ2V0KCk7XG4gICAgfVxuXG4gICAgc3VwZXIuY2xlYXIoc2NvcGUpO1xuXG4gICAgaWYgKHRva2VuKSB7XG4gICAgICB0aGlzLnRva2VuU2VydmljZS5zZXQodG9rZW4pO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHNjb3BlID09PSBTdG9yYWdlU2NvcGUuTE9DQUwgJiZcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuYXV0aGVudGljYXRlZCAmJlxuICAgICAgdGhpcy5vcHRpb25zLnVybFxuICAgICkge1xuICAgICAgdGhpcy5odHRwXG4gICAgICAgIC5nZXQodGhpcy5vcHRpb25zLnVybClcbiAgICAgICAgLnN1YnNjcmliZSgodXNlcklnbzogeyBwcmVmZXJlbmNlOiBvYmplY3QgfSkgPT4ge1xuICAgICAgICAgIGlmICh1c2VySWdvICYmIHVzZXJJZ28ucHJlZmVyZW5jZSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModXNlcklnby5wcmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHVzZXJJZ28ucHJlZmVyZW5jZVtrZXldO1xuICAgICAgICAgICAgICBzdXBlci5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { ConfigService } from '@igo2/core/config';
|
|
4
|
+
import { AuthService } from './auth.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./auth.service";
|
|
7
|
+
import * as i2 from "@igo2/core/config";
|
|
8
|
+
import * as i3 from "@angular/router";
|
|
9
|
+
export class AuthGuard {
|
|
10
|
+
authService;
|
|
11
|
+
config;
|
|
12
|
+
router;
|
|
13
|
+
constructor(authService, config, router) {
|
|
14
|
+
this.authService = authService;
|
|
15
|
+
this.config = config;
|
|
16
|
+
this.router = router;
|
|
17
|
+
}
|
|
18
|
+
canActivate(route, state) {
|
|
19
|
+
if (this.authService.authenticated) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
this.authService.redirectUrl = state.url;
|
|
23
|
+
const authConfig = this.config.getConfig('auth');
|
|
24
|
+
if (authConfig?.loginRoute) {
|
|
25
|
+
this.router.navigateByUrl(authConfig.loginRoute);
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthGuard, deps: [{ token: i1.AuthService }, { token: i2.ConfigService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
30
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthGuard, providedIn: 'root' });
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthGuard, decorators: [{
|
|
33
|
+
type: Injectable,
|
|
34
|
+
args: [{
|
|
35
|
+
providedIn: 'root'
|
|
36
|
+
}]
|
|
37
|
+
}], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i3.Router }] });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9zaGFyZWQvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFFTCxNQUFNLEVBRVAsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQUs3QyxNQUFNLE9BQU8sU0FBUztJQUVWO0lBQ0E7SUFDQTtJQUhWLFlBQ1UsV0FBd0IsRUFDeEIsTUFBcUIsRUFDckIsTUFBYztRQUZkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUosV0FBVyxDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFDbkUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFFekMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFnQixDQUFDO1FBQ2hFLElBQUksVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3dHQXBCVSxTQUFTOzRHQUFULFNBQVMsY0FGUixNQUFNOzs0RkFFUCxTQUFTO2tCQUhyQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xuXG5pbXBvcnQgeyBBdXRoT3B0aW9ucyB9IGZyb20gJy4vYXV0aC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkge1xuICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuYXV0aFNlcnZpY2UucmVkaXJlY3RVcmwgPSBzdGF0ZS51cmw7XG5cbiAgICBjb25zdCBhdXRoQ29uZmlnID0gdGhpcy5jb25maWcuZ2V0Q29uZmlnKCdhdXRoJykgYXMgQXV0aE9wdGlvbnM7XG4gICAgaWYgKGF1dGhDb25maWc/LmxvZ2luUm91dGUpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYXV0aENvbmZpZy5sb2dpblJvdXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { ConfigService } from '@igo2/core/config';
|
|
4
|
+
import { Md5 } from 'ts-md5';
|
|
5
|
+
import { TokenService } from './token.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@igo2/core/config";
|
|
8
|
+
import * as i2 from "./token.service";
|
|
9
|
+
import * as i3 from "@angular/common/http";
|
|
10
|
+
export class AuthInterceptor {
|
|
11
|
+
config;
|
|
12
|
+
tokenService;
|
|
13
|
+
http;
|
|
14
|
+
authOptions;
|
|
15
|
+
refreshInProgress = false;
|
|
16
|
+
trustHosts;
|
|
17
|
+
hostsWithCredentials;
|
|
18
|
+
hostsWithAuthByKey;
|
|
19
|
+
constructor(config, tokenService, http) {
|
|
20
|
+
this.config = config;
|
|
21
|
+
this.tokenService = tokenService;
|
|
22
|
+
this.http = http;
|
|
23
|
+
this.authOptions = this.config.getConfig('auth');
|
|
24
|
+
this.trustHosts = this.authOptions?.trustHosts || [];
|
|
25
|
+
this.trustHosts.push(window.location.hostname);
|
|
26
|
+
this.hostsWithCredentials = this.authOptions?.hostsWithCredentials || [];
|
|
27
|
+
this.hostsWithAuthByKey = this.authOptions?.hostsByKey || [];
|
|
28
|
+
}
|
|
29
|
+
intercept(originalReq, next) {
|
|
30
|
+
const withCredentials = this.handleHostsWithCredentials(originalReq.url);
|
|
31
|
+
let req = originalReq.clone();
|
|
32
|
+
const hostWithKey = this.handleHostsAuthByKey(originalReq.url);
|
|
33
|
+
if (hostWithKey) {
|
|
34
|
+
req = req.clone({
|
|
35
|
+
params: req.params.set(hostWithKey.key, hostWithKey.value)
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
if (withCredentials) {
|
|
39
|
+
req = originalReq.clone({
|
|
40
|
+
withCredentials
|
|
41
|
+
});
|
|
42
|
+
return next.handle(req);
|
|
43
|
+
}
|
|
44
|
+
this.refreshToken();
|
|
45
|
+
const token = this.tokenService.get();
|
|
46
|
+
const element = document.createElement('a');
|
|
47
|
+
element.href = req.url;
|
|
48
|
+
if (!token || this.trustHosts.indexOf(element.hostname) === -1) {
|
|
49
|
+
return next.handle(req);
|
|
50
|
+
}
|
|
51
|
+
const authHeader = `Bearer ${token}`;
|
|
52
|
+
let authReq = req.clone({
|
|
53
|
+
headers: req.headers.set('Authorization', authHeader)
|
|
54
|
+
});
|
|
55
|
+
const tokenDecoded = this.tokenService.decode();
|
|
56
|
+
if (authReq.params.get('_i') === 'true' && tokenDecoded?.user?.sourceId) {
|
|
57
|
+
const hashUser = Md5.hashStr(tokenDecoded.user.sourceId);
|
|
58
|
+
authReq = authReq.clone({
|
|
59
|
+
params: authReq.params.set('_i', hashUser)
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
else if (authReq.params.get('_i') === 'true') {
|
|
63
|
+
authReq = authReq.clone({
|
|
64
|
+
params: authReq.params.delete('_i')
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return next.handle(authReq);
|
|
68
|
+
}
|
|
69
|
+
interceptXhr(xhr, url) {
|
|
70
|
+
const withCredentials = this.handleHostsWithCredentials(url);
|
|
71
|
+
if (withCredentials) {
|
|
72
|
+
xhr.withCredentials = withCredentials;
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
this.refreshToken();
|
|
76
|
+
const element = document.createElement('a');
|
|
77
|
+
element.href = url;
|
|
78
|
+
const token = this.tokenService.get();
|
|
79
|
+
if (!token || this.trustHosts.indexOf(element.hostname) === -1) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
alterUrlWithKeyAuth(url) {
|
|
86
|
+
const hostWithKey = this.handleHostsAuthByKey(url);
|
|
87
|
+
const interceptedUrl = url;
|
|
88
|
+
if (hostWithKey) {
|
|
89
|
+
const urlDecomposed = interceptedUrl.split(/[?&]/);
|
|
90
|
+
let urlWithKeyAdded = urlDecomposed.shift();
|
|
91
|
+
const paramsToKeep = urlDecomposed.filter((p) => p.length !== 0);
|
|
92
|
+
paramsToKeep.push(`${hostWithKey.key}=${hostWithKey.value}`);
|
|
93
|
+
if (paramsToKeep.length) {
|
|
94
|
+
urlWithKeyAdded += '?' + paramsToKeep.join('&');
|
|
95
|
+
}
|
|
96
|
+
return urlWithKeyAdded;
|
|
97
|
+
}
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
handleHostsWithCredentials(reqUrl) {
|
|
101
|
+
let withCredentials = false;
|
|
102
|
+
for (const hostWithCredentials of this.hostsWithCredentials) {
|
|
103
|
+
const domainRegex = new RegExp(hostWithCredentials.domainRegFilters);
|
|
104
|
+
if (domainRegex.test(reqUrl)) {
|
|
105
|
+
withCredentials =
|
|
106
|
+
hostWithCredentials.withCredentials !== undefined
|
|
107
|
+
? hostWithCredentials.withCredentials
|
|
108
|
+
: undefined;
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return withCredentials;
|
|
113
|
+
}
|
|
114
|
+
handleHostsAuthByKey(reqUrl) {
|
|
115
|
+
let hostWithKey;
|
|
116
|
+
for (const hostWithAuthByKey of this.hostsWithAuthByKey) {
|
|
117
|
+
const domainRegex = new RegExp(hostWithAuthByKey.domainRegFilters);
|
|
118
|
+
if (domainRegex.test(reqUrl)) {
|
|
119
|
+
const replace = `${hostWithAuthByKey.keyProperty}=${hostWithAuthByKey.keyValue}`;
|
|
120
|
+
const keyAdded = new RegExp(replace, 'gm');
|
|
121
|
+
if (!keyAdded.test(reqUrl)) {
|
|
122
|
+
hostWithKey = {
|
|
123
|
+
key: hostWithAuthByKey.keyProperty,
|
|
124
|
+
value: hostWithAuthByKey.keyValue
|
|
125
|
+
};
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return hostWithKey;
|
|
131
|
+
}
|
|
132
|
+
refreshToken() {
|
|
133
|
+
const jwt = this.tokenService.decode();
|
|
134
|
+
const currentTime = new Date().getTime() / 1000;
|
|
135
|
+
if (!this.refreshInProgress &&
|
|
136
|
+
jwt &&
|
|
137
|
+
currentTime < jwt.exp &&
|
|
138
|
+
currentTime > jwt.exp - 1800) {
|
|
139
|
+
this.refreshInProgress = true;
|
|
140
|
+
const url = this.authOptions?.url;
|
|
141
|
+
return this.http.post(`${url}/refresh`, {}).subscribe((data) => {
|
|
142
|
+
this.tokenService.set(data.token);
|
|
143
|
+
this.refreshInProgress = false;
|
|
144
|
+
}, (err) => {
|
|
145
|
+
err.error.caught = true;
|
|
146
|
+
return err;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthInterceptor, deps: [{ token: i1.ConfigService }, { token: i2.TokenService }, { token: i3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
151
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthInterceptor, providedIn: 'root' });
|
|
152
|
+
}
|
|
153
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthInterceptor, decorators: [{
|
|
154
|
+
type: Injectable,
|
|
155
|
+
args: [{
|
|
156
|
+
providedIn: 'root'
|
|
157
|
+
}]
|
|
158
|
+
}], ctorParameters: () => [{ type: i1.ConfigService }, { type: i2.TokenService }, { type: i3.HttpClient }] });
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9zaGFyZWQvYXV0aC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFPbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQU83QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBSy9DLE1BQU0sT0FBTyxlQUFlO0lBUWhCO0lBQ0E7SUFDQTtJQVRGLFdBQVcsQ0FBYztJQUN6QixpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDMUIsVUFBVSxDQUFXO0lBQ3JCLG9CQUFvQixDQUEyQjtJQUMvQyxrQkFBa0IsQ0FBcUI7SUFFL0MsWUFDVSxNQUFxQixFQUNyQixZQUEwQixFQUMxQixJQUFnQjtRQUZoQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFNBQUksR0FBSixJQUFJLENBQVk7UUFFeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQWdCLENBQUM7UUFFaEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxvQkFBb0IsSUFBSSxFQUFF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QUFDO2dCQUN4QixPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7d0dBaktVLGVBQWU7NEdBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIEh0dHBFdmVudCxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cFJlcXVlc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZDUgfSBmcm9tICd0cy1tZDUnO1xuXG5pbXBvcnQge1xuICBBdXRoQnlLZXlPcHRpb25zLFxuICBBdXRoT3B0aW9ucyxcbiAgV2l0aENyZWRlbnRpYWxzT3B0aW9uc1xufSBmcm9tICcuL2F1dGguaW50ZXJmYWNlJztcbmltcG9ydCB7IFRva2VuU2VydmljZSB9IGZyb20gJy4vdG9rZW4uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIHByaXZhdGUgYXV0aE9wdGlvbnM6IEF1dGhPcHRpb25zO1xuICBwcml2YXRlIHJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG4gIHByaXZhdGUgdHJ1c3RIb3N0czogc3RyaW5nW107XG4gIHByaXZhdGUgaG9zdHNXaXRoQ3JlZGVudGlhbHM6IFdpdGhDcmVkZW50aWFsc09wdGlvbnNbXTtcbiAgcHJpdmF0ZSBob3N0c1dpdGhBdXRoQnlLZXk6IEF1dGhCeUtleU9wdGlvbnNbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHRva2VuU2VydmljZTogVG9rZW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxuICApIHtcbiAgICB0aGlzLmF1dGhPcHRpb25zID0gdGhpcy5jb25maWcuZ2V0Q29uZmlnKCdhdXRoJykgYXMgQXV0aE9wdGlvbnM7XG5cbiAgICB0aGlzLnRydXN0SG9zdHMgPSB0aGlzLmF1dGhPcHRpb25zPy50cnVzdEhvc3RzIHx8IFtdO1xuICAgIHRoaXMudHJ1c3RIb3N0cy5wdXNoKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk7XG5cbiAgICB0aGlzLmhvc3RzV2l0aENyZWRlbnRpYWxzID0gdGhpcy5hdXRoT3B0aW9ucz8uaG9zdHNXaXRoQ3JlZGVudGlhbHMgfHwgW107XG4gICAgdGhpcy5ob3N0c1dpdGhBdXRoQnlLZXkgPSB0aGlzLmF1dGhPcHRpb25zPy5ob3N0c0J5S2V5IHx8IFtdO1xuICB9XG5cbiAgaW50ZXJjZXB0KFxuICAgIG9yaWdpbmFsUmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgIG5leHQ6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCB3aXRoQ3JlZGVudGlhbHMgPSB0aGlzLmhhbmRsZUhvc3RzV2l0aENyZWRlbnRpYWxzKG9yaWdpbmFsUmVxLnVybCk7XG4gICAgbGV0IHJlcSA9IG9yaWdpbmFsUmVxLmNsb25lKCk7XG4gICAgY29uc3QgaG9zdFdpdGhLZXkgPSB0aGlzLmhhbmRsZUhvc3RzQXV0aEJ5S2V5KG9yaWdpbmFsUmVxLnVybCk7XG4gICAgaWYgKGhvc3RXaXRoS2V5KSB7XG4gICAgICByZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICBwYXJhbXM6IHJlcS5wYXJhbXMuc2V0KGhvc3RXaXRoS2V5LmtleSwgaG9zdFdpdGhLZXkudmFsdWUpXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHdpdGhDcmVkZW50aWFscykge1xuICAgICAgcmVxID0gb3JpZ2luYWxSZXEuY2xvbmUoe1xuICAgICAgICB3aXRoQ3JlZGVudGlhbHNcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gICAgfVxuICAgIHRoaXMucmVmcmVzaFRva2VuKCk7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2VuU2VydmljZS5nZXQoKTtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGVsZW1lbnQuaHJlZiA9IHJlcS51cmw7XG5cbiAgICBpZiAoIXRva2VuIHx8IHRoaXMudHJ1c3RIb3N0cy5pbmRleE9mKGVsZW1lbnQuaG9zdG5hbWUpID09PSAtMSkge1xuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gICAgfVxuXG4gICAgY29uc3QgYXV0aEhlYWRlciA9IGBCZWFyZXIgJHt0b2tlbn1gO1xuICAgIGxldCBhdXRoUmVxID0gcmVxLmNsb25lKHtcbiAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsIGF1dGhIZWFkZXIpXG4gICAgfSk7XG5cbiAgICBjb25zdCB0b2tlbkRlY29kZWQgPSB0aGlzLnRva2VuU2VydmljZS5kZWNvZGUoKTtcbiAgICBpZiAoYXV0aFJlcS5wYXJhbXMuZ2V0KCdfaScpID09PSAndHJ1ZScgJiYgdG9rZW5EZWNvZGVkPy51c2VyPy5zb3VyY2VJZCkge1xuICAgICAgY29uc3QgaGFzaFVzZXIgPSBNZDUuaGFzaFN0cih0b2tlbkRlY29kZWQudXNlci5zb3VyY2VJZCkgYXMgc3RyaW5nO1xuICAgICAgYXV0aFJlcSA9IGF1dGhSZXEuY2xvbmUoe1xuICAgICAgICBwYXJhbXM6IGF1dGhSZXEucGFyYW1zLnNldCgnX2knLCBoYXNoVXNlcilcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoYXV0aFJlcS5wYXJhbXMuZ2V0KCdfaScpID09PSAndHJ1ZScpIHtcbiAgICAgIGF1dGhSZXEgPSBhdXRoUmVxLmNsb25lKHtcbiAgICAgICAgcGFyYW1zOiBhdXRoUmVxLnBhcmFtcy5kZWxldGUoJ19pJylcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXh0LmhhbmRsZShhdXRoUmVxKTtcbiAgfVxuXG4gIGludGVyY2VwdFhocih4aHIsIHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgd2l0aENyZWRlbnRpYWxzID0gdGhpcy5oYW5kbGVIb3N0c1dpdGhDcmVkZW50aWFscyh1cmwpO1xuICAgIGlmICh3aXRoQ3JlZGVudGlhbHMpIHtcbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB3aXRoQ3JlZGVudGlhbHM7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnJlZnJlc2hUb2tlbigpO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgZWxlbWVudC5ocmVmID0gdXJsO1xuXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2VuU2VydmljZS5nZXQoKTtcbiAgICBpZiAoIXRva2VuIHx8IHRoaXMudHJ1c3RIb3N0cy5pbmRleE9mKGVsZW1lbnQuaG9zdG5hbWUpID09PSAtMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQXV0aG9yaXphdGlvbicsICdCZWFyZXIgJyArIHRva2VuKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFsdGVyVXJsV2l0aEtleUF1dGgodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGhvc3RXaXRoS2V5ID0gdGhpcy5oYW5kbGVIb3N0c0F1dGhCeUtleSh1cmwpO1xuICAgIGNvbnN0IGludGVyY2VwdGVkVXJsID0gdXJsO1xuICAgIGlmIChob3N0V2l0aEtleSkge1xuICAgICAgY29uc3QgdXJsRGVjb21wb3NlZCA9IGludGVyY2VwdGVkVXJsLnNwbGl0KC9bPyZdLyk7XG4gICAgICBsZXQgdXJsV2l0aEtleUFkZGVkID0gdXJsRGVjb21wb3NlZC5zaGlmdCgpO1xuICAgICAgY29uc3QgcGFyYW1zVG9LZWVwID0gdXJsRGVjb21wb3NlZC5maWx0ZXIoKHApID0+IHAubGVuZ3RoICE9PSAwKTtcbiAgICAgIHBhcmFtc1RvS2VlcC5wdXNoKGAke2hvc3RXaXRoS2V5LmtleX09JHtob3N0V2l0aEtleS52YWx1ZX1gKTtcbiAgICAgIGlmIChwYXJhbXNUb0tlZXAubGVuZ3RoKSB7XG4gICAgICAgIHVybFdpdGhLZXlBZGRlZCArPSAnPycgKyBwYXJhbXNUb0tlZXAuam9pbignJicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVybFdpdGhLZXlBZGRlZDtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVIb3N0c1dpdGhDcmVkZW50aWFscyhyZXFVcmw6IHN0cmluZykge1xuICAgIGxldCB3aXRoQ3JlZGVudGlhbHMgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGhvc3RXaXRoQ3JlZGVudGlhbHMgb2YgdGhpcy5ob3N0c1dpdGhDcmVkZW50aWFscykge1xuICAgICAgY29uc3QgZG9tYWluUmVnZXggPSBuZXcgUmVnRXhwKGhvc3RXaXRoQ3JlZGVudGlhbHMuZG9tYWluUmVnRmlsdGVycyk7XG4gICAgICBpZiAoZG9tYWluUmVnZXgudGVzdChyZXFVcmwpKSB7XG4gICAgICAgIHdpdGhDcmVkZW50aWFscyA9XG4gICAgICAgICAgaG9zdFdpdGhDcmVkZW50aWFscy53aXRoQ3JlZGVudGlhbHMgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBob3N0V2l0aENyZWRlbnRpYWxzLndpdGhDcmVkZW50aWFsc1xuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gd2l0aENyZWRlbnRpYWxzO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVIb3N0c0F1dGhCeUtleShyZXFVcmw6IHN0cmluZyk6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfSB7XG4gICAgbGV0IGhvc3RXaXRoS2V5O1xuICAgIGZvciAoY29uc3QgaG9zdFdpdGhBdXRoQnlLZXkgb2YgdGhpcy5ob3N0c1dpdGhBdXRoQnlLZXkpIHtcbiAgICAgIGNvbnN0IGRvbWFpblJlZ2V4ID0gbmV3IFJlZ0V4cChob3N0V2l0aEF1dGhCeUtleS5kb21haW5SZWdGaWx0ZXJzKTtcbiAgICAgIGlmIChkb21haW5SZWdleC50ZXN0KHJlcVVybCkpIHtcbiAgICAgICAgY29uc3QgcmVwbGFjZSA9IGAke2hvc3RXaXRoQXV0aEJ5S2V5LmtleVByb3BlcnR5fT0ke2hvc3RXaXRoQXV0aEJ5S2V5LmtleVZhbHVlfWA7XG4gICAgICAgIGNvbnN0IGtleUFkZGVkID0gbmV3IFJlZ0V4cChyZXBsYWNlLCAnZ20nKTtcbiAgICAgICAgaWYgKCFrZXlBZGRlZC50ZXN0KHJlcVVybCkpIHtcbiAgICAgICAgICBob3N0V2l0aEtleSA9IHtcbiAgICAgICAgICAgIGtleTogaG9zdFdpdGhBdXRoQnlLZXkua2V5UHJvcGVydHksXG4gICAgICAgICAgICB2YWx1ZTogaG9zdFdpdGhBdXRoQnlLZXkua2V5VmFsdWVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBob3N0V2l0aEtleTtcbiAgfVxuXG4gIHJlZnJlc2hUb2tlbigpIHtcbiAgICBjb25zdCBqd3QgPSB0aGlzLnRva2VuU2VydmljZS5kZWNvZGUoKTtcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMDtcblxuICAgIGlmIChcbiAgICAgICF0aGlzLnJlZnJlc2hJblByb2dyZXNzICYmXG4gICAgICBqd3QgJiZcbiAgICAgIGN1cnJlbnRUaW1lIDwgand0LmV4cCAmJlxuICAgICAgY3VycmVudFRpbWUgPiBqd3QuZXhwIC0gMTgwMFxuICAgICkge1xuICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuYXV0aE9wdGlvbnM/LnVybDtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt1cmx9L3JlZnJlc2hgLCB7fSkuc3Vic2NyaWJlKFxuICAgICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy50b2tlblNlcnZpY2Uuc2V0KGRhdGEudG9rZW4pO1xuICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgIGVyci5lcnJvci5jYXVnaHQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiBlcnI7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export var AuthFeatureKind;
|
|
2
|
+
(function (AuthFeatureKind) {
|
|
3
|
+
AuthFeatureKind[AuthFeatureKind["Microsoft"] = 0] = "Microsoft";
|
|
4
|
+
})(AuthFeatureKind || (AuthFeatureKind = {}));
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvc2hhcmVkL2F1dGguaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtEQSxNQUFNLENBQU4sSUFBWSxlQUVYO0FBRkQsV0FBWSxlQUFlO0lBQ3pCLCtEQUFhLENBQUE7QUFDZixDQUFDLEVBRlcsZUFBZSxLQUFmLGVBQWUsUUFFMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlVXNlciB9IGZyb20gJ0BpZ28yL2NvcmUvdXNlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciBleHRlbmRzIEJhc2VVc2VyIHtcbiAgc291cmNlPzogc3RyaW5nO1xuICBzb3VyY2VJZD86IHN0cmluZztcbiAgbG9jYWxlPzogc3RyaW5nO1xuICBpc0V4cGlyZWQ/OiBib29sZWFuO1xuICBpc0FkbWluPzogYm9vbGVhbjtcbiAgZGVmYXVsdENvbnRleHRJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSW5mb3NVc2VyIHtcbiAgdG9rZW5JZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhPcHRpb25zIHtcbiAgdXJsPzogc3RyaW5nO1xuICB0b2tlbktleT86IHN0cmluZztcbiAgYWxsb3dBbm9ueW1vdXM/OiBib29sZWFuO1xuICBsb2dpblJvdXRlPzogc3RyaW5nO1xuICBsb2dvdXRSb3V0ZT86IHN0cmluZztcbiAgaG9tZVJvdXRlPzogc3RyaW5nO1xuICB0cnVzdEhvc3RzPzogc3RyaW5nW107XG4gIHByb2ZpbHNHdWFyZD86IHN0cmluZ1tdO1xuICBob3N0c1dpdGhDcmVkZW50aWFscz86IFdpdGhDcmVkZW50aWFsc09wdGlvbnNbXTtcbiAgaG9zdHNCeUtleT86IEF1dGhCeUtleU9wdGlvbnNbXTtcbiAgaW50ZXJuPzogQXV0aEludGVybk9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aEJ5S2V5T3B0aW9ucyB7XG4gIGRvbWFpblJlZ0ZpbHRlcnM/OiBzdHJpbmc7XG4gIGtleVByb3BlcnR5Pzogc3RyaW5nO1xuICBrZXlWYWx1ZT86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aENyZWRlbnRpYWxzT3B0aW9ucyB7XG4gIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gIGRvbWFpblJlZ0ZpbHRlcnM/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aEludGVybk9wdGlvbnMge1xuICBlbmFibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoRmVhdHVyZTxLaW5kVCBleHRlbmRzIEF1dGhGZWF0dXJlS2luZD4ge1xuICBraW5kOiBLaW5kVDtcbiAgcHJvdmlkZXJzOiBQcm92aWRlcltdO1xufVxuXG5leHBvcnQgZW51bSBBdXRoRmVhdHVyZUtpbmQge1xuICBNaWNyb3NvZnQgPSAwXG59XG4iXX0=
|