@meshmakers/shared-auth 3.1.115-0 → 3.1.116-0

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.
@@ -39,10 +39,10 @@ export class AuthorizeGuard {
39
39
  }
40
40
  return false;
41
41
  }
42
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeGuard, deps: [{ token: i1.AuthorizeService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
43
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeGuard });
42
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeGuard, deps: [{ token: i1.AuthorizeService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
43
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeGuard });
44
44
  }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeGuard, decorators: [{
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeGuard, decorators: [{
46
46
  type: Injectable
47
47
  }], ctorParameters: () => [{ type: i1.AuthorizeService }, { type: i2.Router }] });
48
48
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVzaG1ha2Vycy9zaGFyZWQtYXV0aC9zcmMvbGliL2F1dGhvcml6ZS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxjQUFjLEVBQWMsTUFBTSxNQUFNLENBQUM7Ozs7QUFHbEQsTUFBTSxPQUFPLGNBQWM7SUFFTjtJQUNBO0lBRm5CLFlBQ21CLGdCQUFrQyxFQUNsQyxNQUFjO1FBRGQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQzlCLENBQUM7SUFFSixXQUFXLENBQ1QsSUFBNEIsRUFDNUIsS0FBMEI7UUFFMUIsTUFBTSxHQUFHLEdBQVcsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGdCQUFnQixDQUNkLElBQTRCLEVBQzVCLEtBQTBCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGFBQWEsQ0FDWCxTQUFrQixFQUNsQixZQUFvQyxFQUNwQyxZQUFpQyxFQUNqQyxTQUErQjtRQUUvQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBWSxFQUFFLFFBQXNCO1FBQzFDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxLQUE2QixFQUFFLEdBQVE7UUFDdkUsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFekMsTUFBTSxlQUFlLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUN6RixJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sU0FBUyxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDckcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt1R0FsRFUsY0FBYzsyR0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGUsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsU2VnbWVudCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRob3JpemVTZXJ2aWNlIH0gZnJvbSAnLi9hdXRob3JpemUuc2VydmljZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aG9yaXplR3VhcmQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhvcml6ZVNlcnZpY2U6IEF1dGhvcml6ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgY2FuQWN0aXZhdGUoXG4gICAgbmV4dDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xuICAgIGNvbnN0IHVybDogc3RyaW5nID0gc3RhdGUudXJsO1xuICAgIHJldHVybiB0aGlzLmhhbmRsZUF1dGhvcml6YXRpb24obmV4dCwgdXJsKTtcbiAgfVxuXG4gIGNhbkFjdGl2YXRlQ2hpbGQoXG4gICAgbmV4dDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xuICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKG5leHQsIHN0YXRlKTtcbiAgfVxuXG4gIGNhbkRlYWN0aXZhdGUoXG4gICAgY29tcG9uZW50OiB1bmtub3duLFxuICAgIGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBjdXJyZW50U3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXG4gICAgbmV4dFN0YXRlPzogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2FuTG9hZChyb3V0ZTogUm91dGUsIHNlZ21lbnRzOiBVcmxTZWdtZW50W10pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVBdXRob3JpemF0aW9uKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCB1cmw6IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGF3YWl0IHRoaXMuYXV0aG9yaXplU2VydmljZS5pbml0aWFsaXplKCk7XG5cbiAgICBjb25zdCBpc0F1dGhlbnRpY2F0ZWQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmF1dGhvcml6ZVNlcnZpY2UuZ2V0SXNBdXRoZW50aWNhdGVkKCkpO1xuICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgIGNvbnN0IHVzZXJSb2xlcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYXV0aG9yaXplU2VydmljZS5nZXRSb2xlcygpKTtcbiAgICAgIGlmIChyb3V0ZS5kYXRhWydyb2xlcyddICYmICFyb3V0ZS5kYXRhWydyb2xlcyddLmZpbHRlcigodmFsdWU6IHN0cmluZykgPT4gdXNlclJvbGVzLmluY2x1ZGVzKHZhbHVlKSkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycnXSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmF1dGhvcml6ZVNlcnZpY2UubG9naW4oKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
@@ -46,8 +46,8 @@ export class AuthorizeInterceptor {
46
46
  isKnownServiceUri(req) {
47
47
  const serviceUris = this.authorize.getServiceUris();
48
48
  if (serviceUris != null) {
49
- for (let i = 0; i < serviceUris.length; i++) {
50
- if (req.url.startsWith(`${serviceUris[i]}`)) {
49
+ for (const serviceUri of serviceUris) {
50
+ if (req.url.startsWith(`${serviceUri}`)) {
51
51
  return true;
52
52
  }
53
53
  }
@@ -56,10 +56,10 @@ export class AuthorizeInterceptor {
56
56
  // doesn't have the same origin.
57
57
  return false;
58
58
  }
59
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeInterceptor, deps: [{ token: i1.AuthorizeService }], target: i0.ɵɵFactoryTarget.Injectable });
60
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeInterceptor });
59
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeInterceptor, deps: [{ token: i1.AuthorizeService }], target: i0.ɵɵFactoryTarget.Injectable });
60
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeInterceptor });
61
61
  }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeInterceptor, decorators: [{
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeInterceptor, decorators: [{
63
63
  type: Injectable
64
64
  }], ctorParameters: () => [{ type: i1.AuthorizeService }] });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVzaG1ha2Vycy9zaGFyZWQtYXV0aC9zcmMvbGliL2F1dGhvcml6ZS5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLG9CQUFvQjtJQUdGO0lBRjdCLFdBQVcsQ0FBZ0I7SUFFM0IsWUFBNkIsU0FBMkI7UUFBM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDdEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVPLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBcUI7UUFDbEQsNkNBQTZDO1FBQzdDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxxREFBcUQ7UUFDckQsOENBQThDO1FBQzlDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCx5Q0FBeUM7UUFDekMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELGlEQUFpRDtRQUNqRCxnQ0FBZ0M7UUFDaEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsd0VBQXdFO0lBQ3hFLDZFQUE2RTtJQUU3RSxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUNoRCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsMkJBQTJCO0lBQ25CLHVCQUF1QixDQUFDLEtBQW9CLEVBQUUsR0FBcUIsRUFBRSxJQUFpQjtRQUM1RixJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxRixHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDZCxVQUFVLEVBQUU7b0JBQ1YsYUFBYSxFQUFFLFVBQVUsS0FBSyxFQUFFO2lCQUNqQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEdBQVE7UUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUVwRCxJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUM1QyxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxpREFBaUQ7UUFDakQsZ0NBQWdDO1FBQ2hDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt1R0FoRVUsb0JBQW9COzJHQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aG9yaXplU2VydmljZSB9IGZyb20gJy4vYXV0aG9yaXplLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aG9yaXplSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nIHwgbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGF1dGhvcml6ZTogQXV0aG9yaXplU2VydmljZSkge1xuICAgIHRoaXMuYWNjZXNzVG9rZW4gPSBudWxsO1xuICAgIGF1dGhvcml6ZS5nZXRBY2Nlc3NUb2tlbigpLnN1YnNjcmliZSgodmFsdWUpID0+ICh0aGlzLmFjY2Vzc1Rva2VuID0gdmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzU2FtZU9yaWdpblVybChyZXE6IEh0dHBSZXF1ZXN0PGFueT4pOiBib29sZWFuIHtcbiAgICAvLyBJdCdzIGFuIGFic29sdXRlIHVybCB3aXRoIHRoZSBzYW1lIG9yaWdpbi5cbiAgICBpZiAocmVxLnVybC5zdGFydHNXaXRoKGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59L2ApKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBJdCdzIGEgcHJvdG9jb2wgcmVsYXRpdmUgdXJsIHdpdGggdGhlIHNhbWUgb3JpZ2luLlxuICAgIC8vIEZvciBleGFtcGxlOiAvL3d3dy5leGFtcGxlLmNvbS9hcGkvUHJvZHVjdHNcbiAgICBpZiAocmVxLnVybC5zdGFydHNXaXRoKGAvLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L2ApKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBJdCdzIGEgcmVsYXRpdmUgdXJsIGxpa2UgL2FwaS9Qcm9kdWN0c1xuICAgIGlmICgvXlxcL1teL10uKi8udGVzdChyZXEudXJsKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gSXQncyBhbiBhYnNvbHV0ZSBvciBwcm90b2NvbCByZWxhdGl2ZSB1cmwgdGhhdFxuICAgIC8vIGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBvcmlnaW4uXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gQ2hlY2tzIGlmIHRoZXJlIGlzIGFuIGFjY2Vzc190b2tlbiBhdmFpbGFibGUgaW4gdGhlIGF1dGhvcml6ZSBzZXJ2aWNlXG4gIC8vIGFuZCBhZGRzIGl0IHRvIHRoZSByZXF1ZXN0IGluIGNhc2UgaXQncyB0YXJnZXRlZCBhdCB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlXG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc1JlcXVlc3RXaXRoVG9rZW4odGhpcy5hY2Nlc3NUb2tlbiwgcmVxLCBuZXh0KTtcbiAgfVxuXG4gIC8vIHNpbmdsZSBwYWdlIGFwcGxpY2F0aW9uLlxuICBwcml2YXRlIHByb2Nlc3NSZXF1ZXN0V2l0aFRva2VuKHRva2VuOiBzdHJpbmcgfCBudWxsLCByZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGlmICghIXRva2VuICYmIChBdXRob3JpemVJbnRlcmNlcHRvci5pc1NhbWVPcmlnaW5VcmwocmVxKSB8fCB0aGlzLmlzS25vd25TZXJ2aWNlVXJpKHJlcSkpKSB7XG4gICAgICByZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWBcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gIH1cblxuICBwcml2YXRlIGlzS25vd25TZXJ2aWNlVXJpKHJlcTogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2VydmljZVVyaXMgPSB0aGlzLmF1dGhvcml6ZS5nZXRTZXJ2aWNlVXJpcygpO1xuXG4gICAgaWYgKHNlcnZpY2VVcmlzICE9IG51bGwpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VydmljZVVyaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHJlcS51cmwuc3RhcnRzV2l0aChgJHtzZXJ2aWNlVXJpc1tpXX1gKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSXQncyBhbiBhYnNvbHV0ZSBvciBwcm90b2NvbCByZWxhdGl2ZSB1cmwgdGhhdFxuICAgIC8vIGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBvcmlnaW4uXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVzaG1ha2Vycy9zaGFyZWQtYXV0aC9zcmMvbGliL2F1dGhvcml6ZS5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLG9CQUFvQjtJQUdGO0lBRjdCLFdBQVcsQ0FBZ0I7SUFFM0IsWUFBNkIsU0FBMkI7UUFBM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDdEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVPLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBcUI7UUFDbEQsNkNBQTZDO1FBQzdDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxxREFBcUQ7UUFDckQsOENBQThDO1FBQzlDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCx5Q0FBeUM7UUFDekMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELGlEQUFpRDtRQUNqRCxnQ0FBZ0M7UUFDaEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsd0VBQXdFO0lBQ3hFLDZFQUE2RTtJQUU3RSxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUNoRCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsMkJBQTJCO0lBQ25CLHVCQUF1QixDQUFDLEtBQW9CLEVBQUUsR0FBcUIsRUFBRSxJQUFpQjtRQUM1RixJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxRixHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDZCxVQUFVLEVBQUU7b0JBQ1YsYUFBYSxFQUFFLFVBQVUsS0FBSyxFQUFFO2lCQUNqQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEdBQVE7UUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUVwRCxJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN4QixLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUN4QyxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxpREFBaUQ7UUFDakQsZ0NBQWdDO1FBQ2hDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt1R0FoRVUsb0JBQW9COzJHQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aG9yaXplU2VydmljZSB9IGZyb20gJy4vYXV0aG9yaXplLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aG9yaXplSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nIHwgbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGF1dGhvcml6ZTogQXV0aG9yaXplU2VydmljZSkge1xuICAgIHRoaXMuYWNjZXNzVG9rZW4gPSBudWxsO1xuICAgIGF1dGhvcml6ZS5nZXRBY2Nlc3NUb2tlbigpLnN1YnNjcmliZSgodmFsdWUpID0+ICh0aGlzLmFjY2Vzc1Rva2VuID0gdmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzU2FtZU9yaWdpblVybChyZXE6IEh0dHBSZXF1ZXN0PGFueT4pOiBib29sZWFuIHtcbiAgICAvLyBJdCdzIGFuIGFic29sdXRlIHVybCB3aXRoIHRoZSBzYW1lIG9yaWdpbi5cbiAgICBpZiAocmVxLnVybC5zdGFydHNXaXRoKGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59L2ApKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBJdCdzIGEgcHJvdG9jb2wgcmVsYXRpdmUgdXJsIHdpdGggdGhlIHNhbWUgb3JpZ2luLlxuICAgIC8vIEZvciBleGFtcGxlOiAvL3d3dy5leGFtcGxlLmNvbS9hcGkvUHJvZHVjdHNcbiAgICBpZiAocmVxLnVybC5zdGFydHNXaXRoKGAvLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L2ApKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBJdCdzIGEgcmVsYXRpdmUgdXJsIGxpa2UgL2FwaS9Qcm9kdWN0c1xuICAgIGlmICgvXlxcL1teL10uKi8udGVzdChyZXEudXJsKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gSXQncyBhbiBhYnNvbHV0ZSBvciBwcm90b2NvbCByZWxhdGl2ZSB1cmwgdGhhdFxuICAgIC8vIGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBvcmlnaW4uXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gQ2hlY2tzIGlmIHRoZXJlIGlzIGFuIGFjY2Vzc190b2tlbiBhdmFpbGFibGUgaW4gdGhlIGF1dGhvcml6ZSBzZXJ2aWNlXG4gIC8vIGFuZCBhZGRzIGl0IHRvIHRoZSByZXF1ZXN0IGluIGNhc2UgaXQncyB0YXJnZXRlZCBhdCB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlXG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc1JlcXVlc3RXaXRoVG9rZW4odGhpcy5hY2Nlc3NUb2tlbiwgcmVxLCBuZXh0KTtcbiAgfVxuXG4gIC8vIHNpbmdsZSBwYWdlIGFwcGxpY2F0aW9uLlxuICBwcml2YXRlIHByb2Nlc3NSZXF1ZXN0V2l0aFRva2VuKHRva2VuOiBzdHJpbmcgfCBudWxsLCByZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGlmICghIXRva2VuICYmIChBdXRob3JpemVJbnRlcmNlcHRvci5pc1NhbWVPcmlnaW5VcmwocmVxKSB8fCB0aGlzLmlzS25vd25TZXJ2aWNlVXJpKHJlcSkpKSB7XG4gICAgICByZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWBcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gIH1cblxuICBwcml2YXRlIGlzS25vd25TZXJ2aWNlVXJpKHJlcTogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2VydmljZVVyaXMgPSB0aGlzLmF1dGhvcml6ZS5nZXRTZXJ2aWNlVXJpcygpO1xuXG4gICAgaWYgKHNlcnZpY2VVcmlzICE9IG51bGwpIHtcbiAgICAgIGZvciAoY29uc3Qgc2VydmljZVVyaSBvZiBzZXJ2aWNlVXJpcykge1xuICAgICAgICBpZiAocmVxLnVybC5zdGFydHNXaXRoKGAke3NlcnZpY2VVcml9YCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEl0J3MgYW4gYWJzb2x1dGUgb3IgcHJvdG9jb2wgcmVsYXRpdmUgdXJsIHRoYXRcbiAgICAvLyBkb2Vzbid0IGhhdmUgdGhlIHNhbWUgb3JpZ2luLlxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
@@ -117,13 +117,13 @@ export class AuthorizeService {
117
117
  this.user.next(user);
118
118
  this.accessToken.next(accessToken);
119
119
  }
120
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeService, deps: [{ token: AuthorizeOptions }, { token: i1.OAuthService }], target: i0.ɵɵFactoryTarget.Injectable });
121
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeService });
120
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeService, deps: [{ token: AuthorizeOptions }, { token: i1.OAuthService }], target: i0.ɵɵFactoryTarget.Injectable });
121
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeService });
122
122
  }
123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeService, decorators: [{
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeService, decorators: [{
124
124
  type: Injectable
125
125
  }], ctorParameters: () => [{ type: AuthorizeOptions, decorators: [{
126
126
  type: Inject,
127
127
  args: [AuthorizeOptions]
128
128
  }] }, { type: i1.OAuthService }] });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC1hdXRoL3NyYy9saWIvYXV0aG9yaXplLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBWTdDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0Isb0JBQW9CLENBQVk7SUFDaEMsK0JBQStCO0lBQy9CLE1BQU0sQ0FBVTtJQUNoQixxREFBcUQ7SUFDckQsV0FBVyxDQUFVO0lBQ3JCLHFCQUFxQixDQUFVO0lBQy9CLHNFQUFzRTtJQUN0RSxRQUFRLENBQVU7SUFDbEIsOERBQThEO0lBQzlELDBFQUEwRTtJQUMxRSxLQUFLLENBQVU7SUFDZixvQkFBb0IsQ0FBVztJQUMvQixvQkFBb0IsQ0FBVztDQUNoQztBQUdELE1BQU0sT0FBTyxnQkFBZ0I7SUFhUjtJQUNBO0lBYkYsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3RELFNBQVMsR0FBbUMsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBRXJGLFdBQVcsR0FBbUMsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBRXZGLElBQUksR0FBa0MsSUFBSSxlQUFlLENBQWUsSUFBSSxDQUFDLENBQUM7SUFFOUUsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3BELGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUV0RSxZQUVtQixnQkFBa0MsRUFDbEMsWUFBMEI7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QkFBbUIsRUFBRSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlCLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8sUUFBUTtRQUNkLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7WUFDaEUsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLElBQUksR0FBVSxNQUFNLENBQUM7UUFDM0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQyxDQUFDO3VHQTlIVSxnQkFBZ0Isa0JBWWpCLGdCQUFnQjsyR0FaZixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVU7OzBCQWFOLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEF1dGhDb25maWcsIE9BdXRoU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuaW1wb3J0IHsgUm9sZXMgfSBmcm9tICcuL3JvbGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBJVXNlciB7XG4gIG5hbWU6IHN0cmluZztcbiAgcm9sZTogc3RyaW5nW107XG4gIHN1Yjogc3RyaW5nO1xuICBpZHA6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBBdXRob3JpemVPcHRpb25zIHtcbiAgd2VsbEtub3duU2VydmljZVVyaXM/OiBzdHJpbmdbXTtcbiAgLy8gVXJsIG9mIHRoZSBJZGVudGl0eSBQcm92aWRlclxuICBpc3N1ZXI/OiBzdHJpbmc7XG4gIC8vIFVSTCBvZiB0aGUgU1BBIHRvIHJlZGlyZWN0IHRoZSB1c2VyIHRvIGFmdGVyIGxvZ2luXG4gIHJlZGlyZWN0VXJpPzogc3RyaW5nO1xuICBwb3N0TG9nb3V0UmVkaXJlY3RVcmk/OiBzdHJpbmc7XG4gIC8vIFRoZSBTUEEncyBpZC4gVGhlIFNQQSBpcyByZWdpc3RlcmVkIHdpdGggdGhpcyBpZCBhdCB0aGUgYXV0aC1zZXJ2ZXJcbiAgY2xpZW50SWQ/OiBzdHJpbmc7XG4gIC8vIHNldCB0aGUgc2NvcGUgZm9yIHRoZSBwZXJtaXNzaW9ucyB0aGUgY2xpZW50IHNob3VsZCByZXF1ZXN0XG4gIC8vIFRoZSBmaXJzdCB0aHJlZSBhcmUgZGVmaW5lZCBieSBPSURDLiBUaGUgNHRoIGlzIGEgdXNlIGNhc2Utc3BlY2lmaWMgb25lXG4gIHNjb3BlPzogc3RyaW5nO1xuICBzaG93RGVidWdJbmZvcm1hdGlvbj86IGJvb2xlYW47XG4gIHNlc3Npb25DaGVja3NFbmFibGVkPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhvcml6ZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGlzQXV0aGVudGljYXRlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhvcml0eTogQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFjY2Vzc1Rva2VuOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlcjogQmVoYXZpb3JTdWJqZWN0PElVc2VyIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElVc2VyIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpc0luaXRpYWxpemVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNJbml0aWFsaXppbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEF1dGhvcml6ZU9wdGlvbnMpXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRob3JpemVPcHRpb25zOiBBdXRob3JpemVPcHRpb25zLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb2F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2VcbiAgKSB7XG4gICAgY29uc29sZS5kZWJ1ZygnQXV0aG9yaXplU2VydmljZTo6Y3JlYXRlZCcpO1xuXG4gICAgdGhpcy5nZXRVc2VyKCkuc3Vic2NyaWJlKChzKSA9PiB7XG4gICAgICB0aGlzLmlzQXV0aGVudGljYXRlZC5uZXh0KCEocyA9PSBudWxsKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9hdXRoU2VydmljZS5ldmVudHMuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdvYXV0aC9vaWRjIGV2ZW50JywgZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9hdXRoU2VydmljZS5ldmVudHMucGlwZShmaWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ3Nlc3Npb25fdGVybWluYXRlZCcpKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1lvdXIgc2Vzc2lvbiBoYXMgYmVlbiB0ZXJtaW5hdGVkIScpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vYXV0aFNlcnZpY2UuZXZlbnRzLnBpcGUoZmlsdGVyKChlKSA9PiBlLnR5cGUgPT09ICd0b2tlbl9yZWNlaXZlZCcpKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIHRoaXMubG9hZFVzZXIoKTtcbiAgICB9KTtcblxuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmV2ZW50cy5waXBlKGZpbHRlcigoZSkgPT4gZS50eXBlID09PSAnbG9nb3V0JykpLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgdGhpcy5hY2Nlc3NUb2tlbi5uZXh0KG51bGwpO1xuICAgICAgdGhpcy51c2VyLm5leHQobnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaXNJblJvbGUocm9sZTogUm9sZXMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyKCk/LnZhbHVlPy5yb2xlLmluY2x1ZGVzKHJvbGUpID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldFJvbGVzKCk6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyKCkucGlwZShtYXAoKHUpID0+ICh1ICE9IG51bGwgPyB1LnJvbGUgOiBuZXcgQXJyYXk8c3RyaW5nPigpKSkpO1xuICB9XG5cbiAgcHVibGljIGdldFNlcnZpY2VVcmlzKCk6IHN0cmluZ1tdIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aG9yaXplT3B0aW9ucy53ZWxsS25vd25TZXJ2aWNlVXJpcyA/PyBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldEF1dGhvcml0eSgpOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhvcml0eTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJc0F1dGhlbnRpY2F0ZWQoKTogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0F1dGhlbnRpY2F0ZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWNjZXNzVG9rZW4oKTogQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5hY2Nlc3NUb2tlbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVc2VyKCk6IEJlaGF2aW9yU3ViamVjdDxJVXNlciB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyO1xuICB9XG5cbiAgcHVibGljIGxvZ2luKCk6IHZvaWQge1xuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmluaXRJbXBsaWNpdEZsb3coKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2dvdXQoKTogdm9pZCB7XG4gICAgdGhpcy5vYXV0aFNlcnZpY2UubG9nT3V0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUuZGVidWcoJ0F1dGhvcml6ZVNlcnZpY2U6OmluaXRpYWxpemU6OnN0YXJ0ZWQnKTtcblxuICAgIGlmIChhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmlzSW5pdGlhbGl6aW5nKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5pc0luaXRpYWxpemVkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzSW5pdGlhbGl6aW5nLm5leHQodHJ1ZSk7XG5cbiAgICBjb25zdCBjb25maWc6IEF1dGhDb25maWcgPSB7XG4gICAgICByZXNwb25zZVR5cGU6ICdjb2RlJyxcbiAgICAgIGlzc3VlcjogdGhpcy5hdXRob3JpemVPcHRpb25zLmlzc3VlcixcbiAgICAgIHJlZGlyZWN0VXJpOiB0aGlzLmF1dGhvcml6ZU9wdGlvbnMucmVkaXJlY3RVcmksXG4gICAgICBwb3N0TG9nb3V0UmVkaXJlY3RVcmk6IHRoaXMuYXV0aG9yaXplT3B0aW9ucy5wb3N0TG9nb3V0UmVkaXJlY3RVcmksXG4gICAgICBjbGllbnRJZDogdGhpcy5hdXRob3JpemVPcHRpb25zLmNsaWVudElkLFxuICAgICAgc2NvcGU6IHRoaXMuYXV0aG9yaXplT3B0aW9ucy5zY29wZSxcbiAgICAgIHNob3dEZWJ1Z0luZm9ybWF0aW9uOiB0aGlzLmF1dGhvcml6ZU9wdGlvbnMuc2hvd0RlYnVnSW5mb3JtYXRpb24sXG4gICAgICBzZXNzaW9uQ2hlY2tzRW5hYmxlZDogdGhpcy5hdXRob3JpemVPcHRpb25zLnNlc3Npb25DaGVja3NFbmFibGVkXG4gICAgfTtcblxuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmNvbmZpZ3VyZShjb25maWcpO1xuICAgIHRoaXMub2F1dGhTZXJ2aWNlLnNldFN0b3JhZ2UobG9jYWxTdG9yYWdlKTtcbiAgICBhd2FpdCB0aGlzLm9hdXRoU2VydmljZS5sb2FkRGlzY292ZXJ5RG9jdW1lbnRBbmRUcnlMb2dpbigpO1xuXG4gICAgdGhpcy5vYXV0aFNlcnZpY2Uuc2V0dXBBdXRvbWF0aWNTaWxlbnRSZWZyZXNoKCk7XG5cbiAgICBpZiAodGhpcy5vYXV0aFNlcnZpY2UuaGFzVmFsaWRBY2Nlc3NUb2tlbigpKSB7XG4gICAgICB0aGlzLmxvYWRVc2VyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5hdXRob3JpdHkubmV4dCh0aGlzLmF1dGhvcml6ZU9wdGlvbnMuaXNzdWVyID8/IG51bGwpO1xuICAgIHRoaXMuaXNJbml0aWFsaXppbmcubmV4dChmYWxzZSk7XG4gICAgdGhpcy5pc0luaXRpYWxpemVkLm5leHQodHJ1ZSk7XG5cbiAgICBjb25zb2xlLmRlYnVnKCdBdXRob3JpemVTZXJ2aWNlOjppbml0aWFsaXplOjpkb25lJyk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRVc2VyKCk6IHZvaWQge1xuICAgIGNvbnN0IGNsYWltcyA9IHRoaXMub2F1dGhTZXJ2aWNlLmdldElkZW50aXR5Q2xhaW1zKCk7XG4gICAgaWYgKCFjbGFpbXMpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2NsYWltcyB3aGVyZSBudWxsIHdoZW4gbG9hZGluZyBpZGVudGl0eSBjbGFpbXMnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyID0gPElVc2VyPmNsYWltcztcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHRoaXMub2F1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKCk7XG4gICAgdGhpcy51c2VyLm5leHQodXNlcik7XG4gICAgdGhpcy5hY2Nlc3NUb2tlbi5uZXh0KGFjY2Vzc1Rva2VuKTtcbiAgfVxufVxuIl19
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC1hdXRoL3NyYy9saWIvYXV0aG9yaXplLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBWTdDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0Isb0JBQW9CLENBQVk7SUFDaEMsK0JBQStCO0lBQy9CLE1BQU0sQ0FBVTtJQUNoQixxREFBcUQ7SUFDckQsV0FBVyxDQUFVO0lBQ3JCLHFCQUFxQixDQUFVO0lBQy9CLHNFQUFzRTtJQUN0RSxRQUFRLENBQVU7SUFDbEIsOERBQThEO0lBQzlELDBFQUEwRTtJQUMxRSxLQUFLLENBQVU7SUFDZixvQkFBb0IsQ0FBVztJQUMvQixvQkFBb0IsQ0FBVztDQUNoQztBQUdELE1BQU0sT0FBTyxnQkFBZ0I7SUFhUjtJQUNBO0lBYkYsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3RELFNBQVMsR0FBbUMsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBRXJGLFdBQVcsR0FBbUMsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBRXZGLElBQUksR0FBa0MsSUFBSSxlQUFlLENBQWUsSUFBSSxDQUFDLENBQUM7SUFFOUUsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3BELGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUV0RSxZQUVtQixnQkFBa0MsRUFDbEMsWUFBMEI7UUFEMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUUzQyxPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3ZDLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM1RixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN4RixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDaEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sUUFBUSxDQUFDLElBQVc7UUFDekIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDO0lBQzdELENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixJQUFJLElBQUksQ0FBQztJQUM1RCxDQUFDO0lBRU0sWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFTSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUFVO1FBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUV2RCxJQUFJLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQzlDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUM3QyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9CLE1BQU0sTUFBTSxHQUFlO1lBQ3pCLFlBQVksRUFBRSxNQUFNO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTTtZQUNwQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVc7WUFDOUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQjtZQUNsRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVE7WUFDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLO1lBQ2xDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0I7WUFDaEUsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQjtTQUNqRSxDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0MsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFFM0QsSUFBSSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBRWhELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlCLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8sUUFBUTtRQUNkLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7WUFDaEUsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxNQUFlLENBQUM7UUFDN0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQyxDQUFDO3VHQTlIVSxnQkFBZ0Isa0JBWWpCLGdCQUFnQjsyR0FaZixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVU7OzBCQWFOLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEF1dGhDb25maWcsIE9BdXRoU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuaW1wb3J0IHsgUm9sZXMgfSBmcm9tICcuL3JvbGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBJVXNlciB7XG4gIG5hbWU6IHN0cmluZztcbiAgcm9sZTogc3RyaW5nW107XG4gIHN1Yjogc3RyaW5nO1xuICBpZHA6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBBdXRob3JpemVPcHRpb25zIHtcbiAgd2VsbEtub3duU2VydmljZVVyaXM/OiBzdHJpbmdbXTtcbiAgLy8gVXJsIG9mIHRoZSBJZGVudGl0eSBQcm92aWRlclxuICBpc3N1ZXI/OiBzdHJpbmc7XG4gIC8vIFVSTCBvZiB0aGUgU1BBIHRvIHJlZGlyZWN0IHRoZSB1c2VyIHRvIGFmdGVyIGxvZ2luXG4gIHJlZGlyZWN0VXJpPzogc3RyaW5nO1xuICBwb3N0TG9nb3V0UmVkaXJlY3RVcmk/OiBzdHJpbmc7XG4gIC8vIFRoZSBTUEEncyBpZC4gVGhlIFNQQSBpcyByZWdpc3RlcmVkIHdpdGggdGhpcyBpZCBhdCB0aGUgYXV0aC1zZXJ2ZXJcbiAgY2xpZW50SWQ/OiBzdHJpbmc7XG4gIC8vIHNldCB0aGUgc2NvcGUgZm9yIHRoZSBwZXJtaXNzaW9ucyB0aGUgY2xpZW50IHNob3VsZCByZXF1ZXN0XG4gIC8vIFRoZSBmaXJzdCB0aHJlZSBhcmUgZGVmaW5lZCBieSBPSURDLiBUaGUgNHRoIGlzIGEgdXNlIGNhc2Utc3BlY2lmaWMgb25lXG4gIHNjb3BlPzogc3RyaW5nO1xuICBzaG93RGVidWdJbmZvcm1hdGlvbj86IGJvb2xlYW47XG4gIHNlc3Npb25DaGVja3NFbmFibGVkPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhvcml6ZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGlzQXV0aGVudGljYXRlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhvcml0eTogQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFjY2Vzc1Rva2VuOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlcjogQmVoYXZpb3JTdWJqZWN0PElVc2VyIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElVc2VyIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpc0luaXRpYWxpemVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNJbml0aWFsaXppbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEF1dGhvcml6ZU9wdGlvbnMpXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRob3JpemVPcHRpb25zOiBBdXRob3JpemVPcHRpb25zLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb2F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2VcbiAgKSB7XG4gICAgY29uc29sZS5kZWJ1ZygnQXV0aG9yaXplU2VydmljZTo6Y3JlYXRlZCcpO1xuXG4gICAgdGhpcy5nZXRVc2VyKCkuc3Vic2NyaWJlKChzKSA9PiB7XG4gICAgICB0aGlzLmlzQXV0aGVudGljYXRlZC5uZXh0KCEocyA9PSBudWxsKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9hdXRoU2VydmljZS5ldmVudHMuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdvYXV0aC9vaWRjIGV2ZW50JywgZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9hdXRoU2VydmljZS5ldmVudHMucGlwZShmaWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ3Nlc3Npb25fdGVybWluYXRlZCcpKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1lvdXIgc2Vzc2lvbiBoYXMgYmVlbiB0ZXJtaW5hdGVkIScpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vYXV0aFNlcnZpY2UuZXZlbnRzLnBpcGUoZmlsdGVyKChlKSA9PiBlLnR5cGUgPT09ICd0b2tlbl9yZWNlaXZlZCcpKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIHRoaXMubG9hZFVzZXIoKTtcbiAgICB9KTtcblxuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmV2ZW50cy5waXBlKGZpbHRlcigoZSkgPT4gZS50eXBlID09PSAnbG9nb3V0JykpLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgdGhpcy5hY2Nlc3NUb2tlbi5uZXh0KG51bGwpO1xuICAgICAgdGhpcy51c2VyLm5leHQobnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaXNJblJvbGUocm9sZTogUm9sZXMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyKCk/LnZhbHVlPy5yb2xlLmluY2x1ZGVzKHJvbGUpID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldFJvbGVzKCk6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyKCkucGlwZShtYXAoKHUpID0+ICh1ICE9IG51bGwgPyB1LnJvbGUgOiBuZXcgQXJyYXk8c3RyaW5nPigpKSkpO1xuICB9XG5cbiAgcHVibGljIGdldFNlcnZpY2VVcmlzKCk6IHN0cmluZ1tdIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aG9yaXplT3B0aW9ucy53ZWxsS25vd25TZXJ2aWNlVXJpcyA/PyBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldEF1dGhvcml0eSgpOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhvcml0eTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJc0F1dGhlbnRpY2F0ZWQoKTogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0F1dGhlbnRpY2F0ZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWNjZXNzVG9rZW4oKTogQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5hY2Nlc3NUb2tlbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVc2VyKCk6IEJlaGF2aW9yU3ViamVjdDxJVXNlciB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyO1xuICB9XG5cbiAgcHVibGljIGxvZ2luKCk6IHZvaWQge1xuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmluaXRJbXBsaWNpdEZsb3coKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2dvdXQoKTogdm9pZCB7XG4gICAgdGhpcy5vYXV0aFNlcnZpY2UubG9nT3V0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUuZGVidWcoJ0F1dGhvcml6ZVNlcnZpY2U6OmluaXRpYWxpemU6OnN0YXJ0ZWQnKTtcblxuICAgIGlmIChhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmlzSW5pdGlhbGl6aW5nKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5pc0luaXRpYWxpemVkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzSW5pdGlhbGl6aW5nLm5leHQodHJ1ZSk7XG5cbiAgICBjb25zdCBjb25maWc6IEF1dGhDb25maWcgPSB7XG4gICAgICByZXNwb25zZVR5cGU6ICdjb2RlJyxcbiAgICAgIGlzc3VlcjogdGhpcy5hdXRob3JpemVPcHRpb25zLmlzc3VlcixcbiAgICAgIHJlZGlyZWN0VXJpOiB0aGlzLmF1dGhvcml6ZU9wdGlvbnMucmVkaXJlY3RVcmksXG4gICAgICBwb3N0TG9nb3V0UmVkaXJlY3RVcmk6IHRoaXMuYXV0aG9yaXplT3B0aW9ucy5wb3N0TG9nb3V0UmVkaXJlY3RVcmksXG4gICAgICBjbGllbnRJZDogdGhpcy5hdXRob3JpemVPcHRpb25zLmNsaWVudElkLFxuICAgICAgc2NvcGU6IHRoaXMuYXV0aG9yaXplT3B0aW9ucy5zY29wZSxcbiAgICAgIHNob3dEZWJ1Z0luZm9ybWF0aW9uOiB0aGlzLmF1dGhvcml6ZU9wdGlvbnMuc2hvd0RlYnVnSW5mb3JtYXRpb24sXG4gICAgICBzZXNzaW9uQ2hlY2tzRW5hYmxlZDogdGhpcy5hdXRob3JpemVPcHRpb25zLnNlc3Npb25DaGVja3NFbmFibGVkXG4gICAgfTtcblxuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmNvbmZpZ3VyZShjb25maWcpO1xuICAgIHRoaXMub2F1dGhTZXJ2aWNlLnNldFN0b3JhZ2UobG9jYWxTdG9yYWdlKTtcbiAgICBhd2FpdCB0aGlzLm9hdXRoU2VydmljZS5sb2FkRGlzY292ZXJ5RG9jdW1lbnRBbmRUcnlMb2dpbigpO1xuXG4gICAgdGhpcy5vYXV0aFNlcnZpY2Uuc2V0dXBBdXRvbWF0aWNTaWxlbnRSZWZyZXNoKCk7XG5cbiAgICBpZiAodGhpcy5vYXV0aFNlcnZpY2UuaGFzVmFsaWRBY2Nlc3NUb2tlbigpKSB7XG4gICAgICB0aGlzLmxvYWRVc2VyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5hdXRob3JpdHkubmV4dCh0aGlzLmF1dGhvcml6ZU9wdGlvbnMuaXNzdWVyID8/IG51bGwpO1xuICAgIHRoaXMuaXNJbml0aWFsaXppbmcubmV4dChmYWxzZSk7XG4gICAgdGhpcy5pc0luaXRpYWxpemVkLm5leHQodHJ1ZSk7XG5cbiAgICBjb25zb2xlLmRlYnVnKCdBdXRob3JpemVTZXJ2aWNlOjppbml0aWFsaXplOjpkb25lJyk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRVc2VyKCk6IHZvaWQge1xuICAgIGNvbnN0IGNsYWltcyA9IHRoaXMub2F1dGhTZXJ2aWNlLmdldElkZW50aXR5Q2xhaW1zKCk7XG4gICAgaWYgKCFjbGFpbXMpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2NsYWltcyB3aGVyZSBudWxsIHdoZW4gbG9hZGluZyBpZGVudGl0eSBjbGFpbXMnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyID0gY2xhaW1zIGFzIElVc2VyO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gdGhpcy5vYXV0aFNlcnZpY2UuZ2V0QWNjZXNzVG9rZW4oKTtcbiAgICB0aGlzLnVzZXIubmV4dCh1c2VyKTtcbiAgICB0aGlzLmFjY2Vzc1Rva2VuLm5leHQoYWNjZXNzVG9rZW4pO1xuICB9XG59XG4iXX0=
@@ -27,11 +27,11 @@ export class LoginMenuComponent {
27
27
  this.authorizeService.logout();
28
28
  }
29
29
  register() { }
30
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: LoginMenuComponent, deps: [{ token: i1.AuthorizeService }], target: i0.ɵɵFactoryTarget.Component });
31
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: LoginMenuComponent, selector: "app-login-menu", ngImport: i0, template: "<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
30
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: LoginMenuComponent, deps: [{ token: i1.AuthorizeService }], target: i0.ɵɵFactoryTarget.Component });
31
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: LoginMenuComponent, selector: "mm-login-menu", ngImport: i0, template: "<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
32
32
  }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: LoginMenuComponent, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: LoginMenuComponent, decorators: [{
34
34
  type: Component,
35
- args: [{ selector: 'app-login-menu', template: "<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n" }]
35
+ args: [{ selector: 'mm-login-menu', template: "<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n" }]
36
36
  }], ctorParameters: () => [{ type: i1.AuthorizeService }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC1hdXRoL3NyYy9saWIvbG9naW4tbWVudS9sb2dpbi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lc2htYWtlcnMvc2hhcmVkLWF1dGgvc3JjL2xpYi9sb2dpbi1tZW51L2xvZ2luLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBT3JDLE1BQU0sT0FBTyxrQkFBa0I7SUFJQTtJQUh0QixlQUFlLENBQTJCO0lBQzFDLFFBQVEsQ0FBNEI7SUFFM0MsWUFBNkIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDN0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNsRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFFNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxZQUFZLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sUUFBUSxLQUFVLENBQUM7dUdBM0JmLGtCQUFrQjsyRkFBbEIsa0JBQWtCLHNEQ1YvQixzdkNBdUJBOzsyRkRiYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhvcml6ZVNlcnZpY2UgfSBmcm9tICcuLi9hdXRob3JpemUuc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxvZ2luLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9naW4tbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xvZ2luLW1lbnUuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBpc0F1dGhlbnRpY2F0ZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIHVzZXJOYW1lOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXV0aG9yaXplU2VydmljZTogQXV0aG9yaXplU2VydmljZSkge1xuICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkID0gdGhpcy5hdXRob3JpemVTZXJ2aWNlLmdldElzQXV0aGVudGljYXRlZCgpO1xuICAgIHRoaXMudXNlck5hbWUgPSB0aGlzLmF1dGhvcml6ZVNlcnZpY2UuZ2V0VXNlcigpLnBpcGUobWFwKCh1KSA9PiB1Py5uYW1lID8/IG51bGwpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGlzSUZyYW1lID0gd2luZG93LnNlbGYgIT09IHdpbmRvdy50b3A7XG5cbiAgICBjb25zb2xlLmxvZygnYXBwLWxvZ2luLW1lbnU6OmNyZWF0ZWQnKTtcblxuICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgY29uc29sZS5sb2coYGlzQXV0aGVudGljYXRlZCBjaGFuZ2VkIHRvICR7eH0gKGlmcmFtZSAke2lzSUZyYW1lfSlgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2dpbigpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhvcml6ZVNlcnZpY2UubG9naW4oKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2dvdXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRob3JpemVTZXJ2aWNlLmxvZ291dCgpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyKCk6IHZvaWQge31cbn1cbiIsIjx1bCAqbmdJZj1cImlzQXV0aGVudGljYXRlZCB8IGFzeW5jXCIgY2xhc3M9XCJuYXZiYXItbmF2XCI+XG4gIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGRyb3Bkb3duXCI+XG4gICAgPGEgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBjbGFzcz1cIm5hdi1saW5rIGRyb3Bkb3duLXRvZ2dsZVwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBocmVmPVwiI1wiXG4gICAgICAgaWQ9XCJuYXZiYXJEcm9wZG93bkxvZ2luXCIgcm9sZT1cImJ1dHRvblwiPlxuICAgICAge3sgdXNlck5hbWUgfCBhc3luYyB9fSA8YiBjbGFzcz1cImNhcmV0XCI+PC9iPlxuICAgIDwvYT5cbiAgICA8ZGl2IGFyaWEtbGFiZWxsZWRieT1cIm5hdmJhckRyb3Bkb3duXCIgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XG4gICAgICA8IS0tPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgYXNwLWFjdGlvbj1cIkluZGV4XCIgYXNwLWFyZWE9XCJBdXRoZW50aWNhdGlvblwiIGFzcC1jb250cm9sbGVyPVwiR3JhbnRzXCI+Q2xpZW50IEFwcGxpY2F0aW9uIEFjY2VzczwvYT4tLT5cbiAgICAgIDwhLS08YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBbcm91dGVyTGlua109J1tcIi9hdXRoZW50aWNhdGlvbi9wcm9maWxlXCJdJyB0aXRsZT1cIk1hbmFnZVwiPk1hbmFnZTwvYT4tLT5cbiAgICAgIDwhLS08YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBhc3AtYWN0aW9uPVwiSW5kZXhcIiBhc3AtYXJlYT1cIkF1dGhlbnRpY2F0aW9uXCIgYXNwLWNvbnRyb2xsZXI9XCJEaWFnbm9zdGljc1wiPkRpYWdub3N0aWNzPC9hPi0tPlxuICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgIDxhIChjbGljayk9J2xvZ291dCgpJyBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiByb3V0ZXJMaW5rPVwiXCIgdGl0bGU9XCJMb2dvdXRcIj5Mb2dvdXQ8L2E+XG4gICAgPC9kaXY+XG4gIDwvbGk+XG48L3VsPlxuPHVsICpuZ0lmPVwiIShpc0F1dGhlbnRpY2F0ZWQgfCBhc3luYylcIiBjbGFzcz1cIm5hdmJhci1uYXZcIj5cbiAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIj5cbiAgICA8YSAoY2xpY2spPSdyZWdpc3RlcigpJyBjbGFzcz1cIm5hdi1saW5rXCIgcm91dGVyTGluaz1cIlwiPlJlZ2lzdGVyPC9hPlxuICA8L2xpPlxuICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiPlxuICAgIDxhIChjbGljayk9J2xvZ2luKCknIGNsYXNzPVwibmF2LWxpbmtcIiByb3V0ZXJMaW5rPVwiXCI+TG9naW48L2E+XG4gIDwvbGk+XG48L3VsPlxuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC1hdXRoL3NyYy9saWIvbG9naW4tbWVudS9sb2dpbi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lc2htYWtlcnMvc2hhcmVkLWF1dGgvc3JjL2xpYi9sb2dpbi1tZW51L2xvZ2luLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBT3JDLE1BQU0sT0FBTyxrQkFBa0I7SUFJQTtJQUh0QixlQUFlLENBQTJCO0lBQzFDLFFBQVEsQ0FBNEI7SUFFM0MsWUFBNkIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDN0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNsRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFFNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxZQUFZLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sUUFBUSxLQUFVLENBQUM7dUdBM0JmLGtCQUFrQjsyRkFBbEIsa0JBQWtCLHFEQ1YvQixzdkNBdUJBOzsyRkRiYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRob3JpemVTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aG9yaXplLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21tLWxvZ2luLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9naW4tbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xvZ2luLW1lbnUuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBpc0F1dGhlbnRpY2F0ZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIHVzZXJOYW1lOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXV0aG9yaXplU2VydmljZTogQXV0aG9yaXplU2VydmljZSkge1xuICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkID0gdGhpcy5hdXRob3JpemVTZXJ2aWNlLmdldElzQXV0aGVudGljYXRlZCgpO1xuICAgIHRoaXMudXNlck5hbWUgPSB0aGlzLmF1dGhvcml6ZVNlcnZpY2UuZ2V0VXNlcigpLnBpcGUobWFwKCh1KSA9PiB1Py5uYW1lID8/IG51bGwpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGlzSUZyYW1lID0gd2luZG93LnNlbGYgIT09IHdpbmRvdy50b3A7XG5cbiAgICBjb25zb2xlLmxvZygnYXBwLWxvZ2luLW1lbnU6OmNyZWF0ZWQnKTtcblxuICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgY29uc29sZS5sb2coYGlzQXV0aGVudGljYXRlZCBjaGFuZ2VkIHRvICR7eH0gKGlmcmFtZSAke2lzSUZyYW1lfSlgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2dpbigpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhvcml6ZVNlcnZpY2UubG9naW4oKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2dvdXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRob3JpemVTZXJ2aWNlLmxvZ291dCgpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyKCk6IHZvaWQge31cbn1cbiIsIjx1bCAqbmdJZj1cImlzQXV0aGVudGljYXRlZCB8IGFzeW5jXCIgY2xhc3M9XCJuYXZiYXItbmF2XCI+XG4gIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGRyb3Bkb3duXCI+XG4gICAgPGEgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBjbGFzcz1cIm5hdi1saW5rIGRyb3Bkb3duLXRvZ2dsZVwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBocmVmPVwiI1wiXG4gICAgICAgaWQ9XCJuYXZiYXJEcm9wZG93bkxvZ2luXCIgcm9sZT1cImJ1dHRvblwiPlxuICAgICAge3sgdXNlck5hbWUgfCBhc3luYyB9fSA8YiBjbGFzcz1cImNhcmV0XCI+PC9iPlxuICAgIDwvYT5cbiAgICA8ZGl2IGFyaWEtbGFiZWxsZWRieT1cIm5hdmJhckRyb3Bkb3duXCIgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XG4gICAgICA8IS0tPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgYXNwLWFjdGlvbj1cIkluZGV4XCIgYXNwLWFyZWE9XCJBdXRoZW50aWNhdGlvblwiIGFzcC1jb250cm9sbGVyPVwiR3JhbnRzXCI+Q2xpZW50IEFwcGxpY2F0aW9uIEFjY2VzczwvYT4tLT5cbiAgICAgIDwhLS08YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBbcm91dGVyTGlua109J1tcIi9hdXRoZW50aWNhdGlvbi9wcm9maWxlXCJdJyB0aXRsZT1cIk1hbmFnZVwiPk1hbmFnZTwvYT4tLT5cbiAgICAgIDwhLS08YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBhc3AtYWN0aW9uPVwiSW5kZXhcIiBhc3AtYXJlYT1cIkF1dGhlbnRpY2F0aW9uXCIgYXNwLWNvbnRyb2xsZXI9XCJEaWFnbm9zdGljc1wiPkRpYWdub3N0aWNzPC9hPi0tPlxuICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgIDxhIChjbGljayk9J2xvZ291dCgpJyBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiByb3V0ZXJMaW5rPVwiXCIgdGl0bGU9XCJMb2dvdXRcIj5Mb2dvdXQ8L2E+XG4gICAgPC9kaXY+XG4gIDwvbGk+XG48L3VsPlxuPHVsICpuZ0lmPVwiIShpc0F1dGhlbnRpY2F0ZWQgfCBhc3luYylcIiBjbGFzcz1cIm5hdmJhci1uYXZcIj5cbiAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIj5cbiAgICA8YSAoY2xpY2spPSdyZWdpc3RlcigpJyBjbGFzcz1cIm5hdi1saW5rXCIgcm91dGVyTGluaz1cIlwiPlJlZ2lzdGVyPC9hPlxuICA8L2xpPlxuICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiPlxuICAgIDxhIChjbGljayk9J2xvZ2luKCknIGNsYXNzPVwibmF2LWxpbmtcIiByb3V0ZXJMaW5rPVwiXCI+TG9naW48L2E+XG4gIDwvbGk+XG48L3VsPlxuIl19
@@ -22,11 +22,11 @@ export class SharedAuthModule {
22
22
  ]
23
23
  };
24
24
  }
25
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: SharedAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
26
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.3", ngImport: i0, type: SharedAuthModule, declarations: [LoginMenuComponent], imports: [CommonModule, HttpClientModule, i1.OAuthModule, RouterLink], exports: [LoginMenuComponent] });
27
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: SharedAuthModule, imports: [CommonModule, HttpClientModule, OAuthModule.forRoot()] });
25
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SharedAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
26
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.4", ngImport: i0, type: SharedAuthModule, declarations: [LoginMenuComponent], imports: [CommonModule, HttpClientModule, i1.OAuthModule, RouterLink], exports: [LoginMenuComponent] });
27
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SharedAuthModule, imports: [CommonModule, HttpClientModule, OAuthModule.forRoot()] });
28
28
  }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: SharedAuthModule, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SharedAuthModule, decorators: [{
30
30
  type: NgModule,
31
31
  args: [{
32
32
  declarations: [LoginMenuComponent],
@@ -124,10 +124,10 @@ class AuthorizeService {
124
124
  this.user.next(user);
125
125
  this.accessToken.next(accessToken);
126
126
  }
127
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeService, deps: [{ token: AuthorizeOptions }, { token: i1.OAuthService }], target: i0.ɵɵFactoryTarget.Injectable });
128
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeService });
127
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeService, deps: [{ token: AuthorizeOptions }, { token: i1.OAuthService }], target: i0.ɵɵFactoryTarget.Injectable });
128
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeService });
129
129
  }
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeService, decorators: [{
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeService, decorators: [{
131
131
  type: Injectable
132
132
  }], ctorParameters: () => [{ type: AuthorizeOptions, decorators: [{
133
133
  type: Inject,
@@ -165,12 +165,12 @@ class LoginMenuComponent {
165
165
  this.authorizeService.logout();
166
166
  }
167
167
  register() { }
168
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: LoginMenuComponent, deps: [{ token: AuthorizeService }], target: i0.ɵɵFactoryTarget.Component });
169
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: LoginMenuComponent, selector: "app-login-menu", ngImport: i0, template: "<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
168
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: LoginMenuComponent, deps: [{ token: AuthorizeService }], target: i0.ɵɵFactoryTarget.Component });
169
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: LoginMenuComponent, selector: "mm-login-menu", ngImport: i0, template: "<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
170
170
  }
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: LoginMenuComponent, decorators: [{
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: LoginMenuComponent, decorators: [{
172
172
  type: Component,
173
- args: [{ selector: 'app-login-menu', template: "<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n" }]
173
+ args: [{ selector: 'mm-login-menu', template: "<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n" }]
174
174
  }], ctorParameters: () => [{ type: AuthorizeService }] });
175
175
 
176
176
  class AuthorizeGuard {
@@ -209,10 +209,10 @@ class AuthorizeGuard {
209
209
  }
210
210
  return false;
211
211
  }
212
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeGuard, deps: [{ token: AuthorizeService }, { token: i2$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
213
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeGuard });
212
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeGuard, deps: [{ token: AuthorizeService }, { token: i2$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
213
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeGuard });
214
214
  }
215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeGuard, decorators: [{
215
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeGuard, decorators: [{
216
216
  type: Injectable
217
217
  }], ctorParameters: () => [{ type: AuthorizeService }, { type: i2$1.Router }] });
218
218
 
@@ -230,11 +230,11 @@ class SharedAuthModule {
230
230
  ]
231
231
  };
232
232
  }
233
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: SharedAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
234
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.3", ngImport: i0, type: SharedAuthModule, declarations: [LoginMenuComponent], imports: [CommonModule, HttpClientModule, i1.OAuthModule, RouterLink], exports: [LoginMenuComponent] });
235
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: SharedAuthModule, imports: [CommonModule, HttpClientModule, OAuthModule.forRoot()] });
233
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SharedAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
234
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.4", ngImport: i0, type: SharedAuthModule, declarations: [LoginMenuComponent], imports: [CommonModule, HttpClientModule, i1.OAuthModule, RouterLink], exports: [LoginMenuComponent] });
235
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SharedAuthModule, imports: [CommonModule, HttpClientModule, OAuthModule.forRoot()] });
236
236
  }
237
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: SharedAuthModule, decorators: [{
237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SharedAuthModule, decorators: [{
238
238
  type: NgModule,
239
239
  args: [{
240
240
  declarations: [LoginMenuComponent],
@@ -289,8 +289,8 @@ class AuthorizeInterceptor {
289
289
  isKnownServiceUri(req) {
290
290
  const serviceUris = this.authorize.getServiceUris();
291
291
  if (serviceUris != null) {
292
- for (let i = 0; i < serviceUris.length; i++) {
293
- if (req.url.startsWith(`${serviceUris[i]}`)) {
292
+ for (const serviceUri of serviceUris) {
293
+ if (req.url.startsWith(`${serviceUri}`)) {
294
294
  return true;
295
295
  }
296
296
  }
@@ -299,10 +299,10 @@ class AuthorizeInterceptor {
299
299
  // doesn't have the same origin.
300
300
  return false;
301
301
  }
302
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeInterceptor, deps: [{ token: AuthorizeService }], target: i0.ɵɵFactoryTarget.Injectable });
303
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeInterceptor });
302
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeInterceptor, deps: [{ token: AuthorizeService }], target: i0.ɵɵFactoryTarget.Injectable });
303
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeInterceptor });
304
304
  }
305
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AuthorizeInterceptor, decorators: [{
305
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AuthorizeInterceptor, decorators: [{
306
306
  type: Injectable
307
307
  }], ctorParameters: () => [{ type: AuthorizeService }] });
308
308
 
@@ -1 +1 @@
1
- {"version":3,"file":"meshmakers-shared-auth.mjs","sources":["../../../../projects/meshmakers/shared-auth/src/lib/authorize.service.ts","../../../../projects/meshmakers/shared-auth/src/lib/roles.ts","../../../../projects/meshmakers/shared-auth/src/lib/login-menu/login-menu.component.ts","../../../../projects/meshmakers/shared-auth/src/lib/login-menu/login-menu.component.html","../../../../projects/meshmakers/shared-auth/src/lib/authorize.guard.ts","../../../../projects/meshmakers/shared-auth/src/lib/shared-auth.module.ts","../../../../projects/meshmakers/shared-auth/src/lib/authorize.interceptor.ts","../../../../projects/meshmakers/shared-auth/src/public-api.ts","../../../../projects/meshmakers/shared-auth/src/meshmakers-shared-auth.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, firstValueFrom, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { AuthConfig, OAuthService } from 'angular-oauth2-oidc';\nimport { Roles } from './roles';\n\nexport interface IUser {\n name: string;\n role: string[];\n sub: string;\n idp: string;\n email: string | null;\n}\n\nexport class AuthorizeOptions {\n wellKnownServiceUris?: string[];\n // Url of the Identity Provider\n issuer?: string;\n // URL of the SPA to redirect the user to after login\n redirectUri?: string;\n postLogoutRedirectUri?: string;\n // The SPA's id. The SPA is registered with this id at the auth-server\n clientId?: string;\n // set the scope for the permissions the client should request\n // The first three are defined by OIDC. The 4th is a use case-specific one\n scope?: string;\n showDebugInformation?: boolean;\n sessionChecksEnabled?: boolean;\n}\n\n@Injectable()\nexport class AuthorizeService {\n private readonly isAuthenticated = new BehaviorSubject<boolean>(false);\n private readonly authority: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n\n private readonly accessToken: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n\n private readonly user: BehaviorSubject<IUser | null> = new BehaviorSubject<IUser | null>(null);\n\n private readonly isInitialized = new BehaviorSubject<boolean>(false);\n private readonly isInitializing = new BehaviorSubject<boolean>(false);\n\n constructor(\n @Inject(AuthorizeOptions)\n private readonly authorizeOptions: AuthorizeOptions,\n private readonly oauthService: OAuthService\n ) {\n console.debug('AuthorizeService::created');\n\n this.getUser().subscribe((s) => {\n this.isAuthenticated.next(!(s == null));\n });\n\n this.oauthService.events.subscribe((e) => {\n console.debug('oauth/oidc event', e);\n });\n\n this.oauthService.events.pipe(filter((e) => e.type === 'session_terminated')).subscribe((_) => {\n console.debug('Your session has been terminated!');\n });\n\n this.oauthService.events.pipe(filter((e) => e.type === 'token_received')).subscribe((_) => {\n this.loadUser();\n });\n\n this.oauthService.events.pipe(filter((e) => e.type === 'logout')).subscribe((_) => {\n this.accessToken.next(null);\n this.user.next(null);\n });\n }\n\n public isInRole(role: Roles): boolean {\n return this.getUser()?.value?.role.includes(role) ?? false;\n }\n\n public getRoles(): Observable<string[]> {\n return this.getUser().pipe(map((u) => (u != null ? u.role : new Array<string>())));\n }\n\n public getServiceUris(): string[] | null {\n return this.authorizeOptions.wellKnownServiceUris ?? null;\n }\n\n public getAuthority(): BehaviorSubject<string | null> {\n return this.authority;\n }\n\n public getIsAuthenticated(): BehaviorSubject<boolean> {\n return this.isAuthenticated;\n }\n\n public getAccessToken(): BehaviorSubject<string | null> {\n return this.accessToken;\n }\n\n public getUser(): BehaviorSubject<IUser | null> {\n return this.user;\n }\n\n public login(): void {\n this.oauthService.initImplicitFlow();\n }\n\n public logout(): void {\n this.oauthService.logOut(false);\n }\n\n public async initialize(): Promise<void> {\n console.debug('AuthorizeService::initialize::started');\n\n if (await firstValueFrom(this.isInitializing)) {\n return;\n }\n if (await firstValueFrom(this.isInitialized)) {\n return;\n }\n this.isInitializing.next(true);\n\n const config: AuthConfig = {\n responseType: 'code',\n issuer: this.authorizeOptions.issuer,\n redirectUri: this.authorizeOptions.redirectUri,\n postLogoutRedirectUri: this.authorizeOptions.postLogoutRedirectUri,\n clientId: this.authorizeOptions.clientId,\n scope: this.authorizeOptions.scope,\n showDebugInformation: this.authorizeOptions.showDebugInformation,\n sessionChecksEnabled: this.authorizeOptions.sessionChecksEnabled\n };\n\n this.oauthService.configure(config);\n this.oauthService.setStorage(localStorage);\n await this.oauthService.loadDiscoveryDocumentAndTryLogin();\n\n this.oauthService.setupAutomaticSilentRefresh();\n\n if (this.oauthService.hasValidAccessToken()) {\n this.loadUser();\n }\n\n this.authority.next(this.authorizeOptions.issuer ?? null);\n this.isInitializing.next(false);\n this.isInitialized.next(true);\n\n console.debug('AuthorizeService::initialize::done');\n }\n\n private loadUser(): void {\n const claims = this.oauthService.getIdentityClaims();\n if (!claims) {\n console.error('claims where null when loading identity claims');\n return;\n }\n\n const user = <IUser>claims;\n const accessToken = this.oauthService.getAccessToken();\n this.user.next(user);\n this.accessToken.next(accessToken);\n }\n}\n","export enum Roles {\n UserManagement = 'UserManagement',\n CommunicationManagement = 'CommunicationManagement',\n TenantManagement = 'TenantManagement',\n Development = 'Development'\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AuthorizeService } from '../authorize.service';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'app-login-menu',\n templateUrl: './login-menu.component.html',\n styleUrls: ['./login-menu.component.css']\n})\nexport class LoginMenuComponent implements OnInit {\n public isAuthenticated: BehaviorSubject<boolean>;\n public userName: Observable<string | null>;\n\n constructor(private readonly authorizeService: AuthorizeService) {\n this.isAuthenticated = this.authorizeService.getIsAuthenticated();\n this.userName = this.authorizeService.getUser().pipe(map((u) => u?.name ?? null));\n }\n\n ngOnInit(): void {\n const isIFrame = window.self !== window.top;\n\n console.log('app-login-menu::created');\n\n this.isAuthenticated.subscribe((x) => {\n console.log(`isAuthenticated changed to ${x} (iframe ${isIFrame})`);\n });\n }\n\n public login(): void {\n this.authorizeService.login();\n }\n\n public logout(): void {\n this.authorizeService.logout();\n }\n\n public register(): void {}\n}\n","<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Route, Router, RouterStateSnapshot, UrlSegment, UrlTree } from '@angular/router';\nimport { AuthorizeService } from './authorize.service';\nimport { firstValueFrom, Observable } from 'rxjs';\n\n@Injectable()\nexport class AuthorizeGuard {\n constructor(\n private readonly authorizeService: AuthorizeService,\n private readonly router: Router\n ) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const url: string = state.url;\n return this.handleAuthorization(next, url);\n }\n\n canActivateChild(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return this.canActivate(next, state);\n }\n\n canDeactivate(\n component: unknown,\n currentRoute: ActivatedRouteSnapshot,\n currentState: RouterStateSnapshot,\n nextState?: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return true;\n }\n\n canLoad(route: Route, segments: UrlSegment[]): Observable<boolean> | Promise<boolean> | boolean {\n return true;\n }\n\n private async handleAuthorization(route: ActivatedRouteSnapshot, url: any): Promise<boolean> {\n await this.authorizeService.initialize();\n\n const isAuthenticated = await firstValueFrom(this.authorizeService.getIsAuthenticated());\n if (isAuthenticated) {\n const userRoles = await firstValueFrom(this.authorizeService.getRoles());\n if (route.data['roles'] && !route.data['roles'].filter((value: string) => userRoles.includes(value))) {\n await this.router.navigate(['']);\n return false;\n }\n return true;\n } else {\n this.authorizeService.login();\n }\n\n return false;\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { LoginMenuComponent } from './login-menu/login-menu.component';\nimport { AuthorizeOptions, AuthorizeService } from './authorize.service';\nimport { OAuthModule } from 'angular-oauth2-oidc';\nimport { AuthorizeGuard } from './authorize.guard';\nimport { RouterLink } from '@angular/router';\n\n@NgModule({\n declarations: [LoginMenuComponent],\n exports: [LoginMenuComponent],\n providers: [],\n imports: [CommonModule, HttpClientModule, OAuthModule.forRoot(), RouterLink]\n})\nexport class SharedAuthModule {\n static forRoot(authorizeOptions: AuthorizeOptions): ModuleWithProviders<SharedAuthModule> {\n return {\n ngModule: SharedAuthModule,\n providers: [\n {\n provide: AuthorizeOptions,\n useValue: authorizeOptions\n },\n AuthorizeService,\n AuthorizeGuard\n ]\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { AuthorizeService } from './authorize.service';\n\n@Injectable()\nexport class AuthorizeInterceptor implements HttpInterceptor {\n accessToken: string | null;\n\n constructor(private readonly authorize: AuthorizeService) {\n this.accessToken = null;\n authorize.getAccessToken().subscribe((value) => (this.accessToken = value));\n }\n\n private static isSameOriginUrl(req: HttpRequest<any>): boolean {\n // It's an absolute url with the same origin.\n if (req.url.startsWith(`${window.location.origin}/`)) {\n return true;\n }\n\n // It's a protocol relative url with the same origin.\n // For example: //www.example.com/api/Products\n if (req.url.startsWith(`//${window.location.host}/`)) {\n return true;\n }\n\n // It's a relative url like /api/Products\n if (/^\\/[^/].*/.test(req.url)) {\n return true;\n }\n\n // It's an absolute or protocol relative url that\n // doesn't have the same origin.\n return false;\n }\n\n // Checks if there is an access_token available in the authorize service\n // and adds it to the request in case it's targeted at the same origin as the\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return this.processRequestWithToken(this.accessToken, req, next);\n }\n\n // single page application.\n private processRequestWithToken(token: string | null, req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!!token && (AuthorizeInterceptor.isSameOriginUrl(req) || this.isKnownServiceUri(req))) {\n req = req.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`\n }\n });\n }\n\n return next.handle(req);\n }\n\n private isKnownServiceUri(req: any): boolean {\n const serviceUris = this.authorize.getServiceUris();\n\n if (serviceUris != null) {\n for (let i = 0; i < serviceUris.length; i++) {\n if (req.url.startsWith(`${serviceUris[i]}`)) {\n return true;\n }\n }\n }\n\n // It's an absolute or protocol relative url that\n // doesn't have the same origin.\n return false;\n }\n}\n","/*\n * Public API Surface of shared-auth\n */\n\nexport * from './lib/authorize.service';\nexport * from './lib/roles';\nexport * from './lib/login-menu/login-menu.component';\nexport * from './lib/shared-auth.module';\nexport * from './lib/authorize.interceptor';\nexport * from './lib/authorize.guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AuthorizeService","i3","i2"],"mappings":";;;;;;;;;;;;MAca,gBAAgB,CAAA;AAC3B,IAAA,oBAAoB,CAAY;;AAEhC,IAAA,MAAM,CAAU;;AAEhB,IAAA,WAAW,CAAU;AACrB,IAAA,qBAAqB,CAAU;;AAE/B,IAAA,QAAQ,CAAU;;;AAGlB,IAAA,KAAK,CAAU;AACf,IAAA,oBAAoB,CAAW;AAC/B,IAAA,oBAAoB,CAAW;AAChC,CAAA;MAGY,gBAAgB,CAAA;AAaR,IAAA,gBAAA,CAAA;AACA,IAAA,YAAA,CAAA;AAbF,IAAA,eAAe,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AACtD,IAAA,SAAS,GAAmC,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;AAErF,IAAA,WAAW,GAAmC,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;AAEvF,IAAA,IAAI,GAAkC,IAAI,eAAe,CAAe,IAAI,CAAC,CAAC;AAE9E,IAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AACpD,IAAA,cAAc,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;IAEtE,WAEmB,CAAA,gBAAkC,EAClC,YAA0B,EAAA;QAD1B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAE3C,QAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAE3C,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AAC7B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;AAC1C,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACvC,YAAA,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AAC5F,YAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACrD,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;YACxF,IAAI,CAAC,QAAQ,EAAE,CAAC;AAClB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AAChF,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,QAAQ,CAAC,IAAW,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;KAC5D;IAEM,QAAQ,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,EAAU,CAAC,CAAC,CAAC,CAAC;KACpF;IAEM,cAAc,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,IAAI,IAAI,CAAC;KAC3D;IAEM,YAAY,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAEM,kBAAkB,GAAA;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IAEM,cAAc,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAEM,OAAO,GAAA;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;KACtC;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACjC;AAEM,IAAA,MAAM,UAAU,GAAA;AACrB,QAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAEvD,IAAI,MAAM,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YAC7C,OAAO;SACR;QACD,IAAI,MAAM,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YAC5C,OAAO;SACR;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE/B,QAAA,MAAM,MAAM,GAAe;AACzB,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM;AACpC,YAAA,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW;AAC9C,YAAA,qBAAqB,EAAE,IAAI,CAAC,gBAAgB,CAAC,qBAAqB;AAClE,YAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ;AACxC,YAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK;AAClC,YAAA,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC,oBAAoB;AAChE,YAAA,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC,oBAAoB;SACjE,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAC3C,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,gCAAgC,EAAE,CAAC;AAE3D,QAAA,IAAI,CAAC,YAAY,CAAC,2BAA2B,EAAE,CAAC;AAEhD,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EAAE;YAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;AAED,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE9B,QAAA,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;KACrD;IAEO,QAAQ,GAAA;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;QACrD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAChE,OAAO;SACR;QAED,MAAM,IAAI,GAAU,MAAM,CAAC;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACpC;AA9HU,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBAYjB,gBAAgB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAZf,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;0BAaN,MAAM;2BAAC,gBAAgB,CAAA;;;IC3ChB,MAKX;AALD,CAAA,UAAY,KAAK,EAAA;AACf,IAAA,KAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC,CAAA;AACjC,IAAA,KAAA,CAAA,yBAAA,CAAA,GAAA,yBAAmD,CAAA;AACnD,IAAA,KAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACrC,IAAA,KAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC7B,CAAC,EALW,KAAK,KAAL,KAAK,GAKhB,EAAA,CAAA,CAAA;;MCKY,kBAAkB,CAAA;AAIA,IAAA,gBAAA,CAAA;AAHtB,IAAA,eAAe,CAA2B;AAC1C,IAAA,QAAQ,CAA4B;AAE3C,IAAA,WAAA,CAA6B,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAC7D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;QAClE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;KACnF;IAED,QAAQ,GAAA;QACN,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC;AAE5C,QAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAEvC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;YACnC,OAAO,CAAC,GAAG,CAAC,CAAA,2BAAA,EAA8B,CAAC,CAAY,SAAA,EAAA,QAAQ,CAAG,CAAA,CAAA,CAAC,CAAC;AACtE,SAAC,CAAC,CAAC;KACJ;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;KAC/B;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;KAChC;AAEM,IAAA,QAAQ,MAAW;uGA3Bf,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,sDCV/B,svCAuBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDba,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,svCAAA,EAAA,CAAA;;;MEAf,cAAc,CAAA;AAEN,IAAA,gBAAA,CAAA;AACA,IAAA,MAAA,CAAA;IAFnB,WACmB,CAAA,gBAAkC,EAClC,MAAc,EAAA;QADd,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KAC7B;IAEJ,WAAW,CACT,IAA4B,EAC5B,KAA0B,EAAA;AAE1B,QAAA,MAAM,GAAG,GAAW,KAAK,CAAC,GAAG,CAAC;QAC9B,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC5C;IAED,gBAAgB,CACd,IAA4B,EAC5B,KAA0B,EAAA;QAE1B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACtC;AAED,IAAA,aAAa,CACX,SAAkB,EAClB,YAAoC,EACpC,YAAiC,EACjC,SAA+B,EAAA;AAE/B,QAAA,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CAAC,KAAY,EAAE,QAAsB,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,MAAM,mBAAmB,CAAC,KAA6B,EAAE,GAAQ,EAAA;AACvE,QAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;AAEzC,QAAA,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACzF,IAAI,eAAe,EAAE;AACnB,YAAA,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzE,YAAA,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,KAAa,KAAK,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;gBACpG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,gBAAA,OAAO,KAAK,CAAC;aACd;AACD,YAAA,OAAO,IAAI,CAAC;SACb;aAAM;AACL,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;SAC/B;AAED,QAAA,OAAO,KAAK,CAAC;KACd;uGAlDU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAd,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;MCUE,gBAAgB,CAAA;IAC3B,OAAO,OAAO,CAAC,gBAAkC,EAAA;QAC/C,OAAO;AACL,YAAA,QAAQ,EAAE,gBAAgB;AAC1B,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,gBAAgB;AACzB,oBAAA,QAAQ,EAAE,gBAAgB;AAC3B,iBAAA;gBACD,gBAAgB;gBAChB,cAAc;AACf,aAAA;SACF,CAAC;KACH;uGAbU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAhB,gBAAgB,EAAA,YAAA,EAAA,CALZ,kBAAkB,CAGvB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,gBAAgB,EAAA,EAAA,CAAA,WAAA,EAAyB,UAAU,CAAA,EAAA,OAAA,EAAA,CAFjE,kBAAkB,CAAA,EAAA,CAAA,CAAA;wGAIjB,gBAAgB,EAAA,OAAA,EAAA,CAFjB,YAAY,EAAE,gBAAgB,EAAE,WAAW,CAAC,OAAO,EAAE,CAAA,EAAA,CAAA,CAAA;;2FAEpD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,kBAAkB,CAAC;oBAClC,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC7B,oBAAA,SAAS,EAAE,EAAE;AACb,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,WAAW,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC;AAC7E,iBAAA,CAAA;;;MCRY,oBAAoB,CAAA;AAGF,IAAA,SAAA,CAAA;AAF7B,IAAA,WAAW,CAAgB;AAE3B,IAAA,WAAA,CAA6B,SAA2B,EAAA;QAA3B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;AACtD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,SAAS,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC;KAC7E;IAEO,OAAO,eAAe,CAAC,GAAqB,EAAA;;AAElD,QAAA,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA,EAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAG,CAAA,CAAA,CAAC,EAAE;AACpD,YAAA,OAAO,IAAI,CAAC;SACb;;;AAID,QAAA,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA,EAAA,EAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAG,CAAA,CAAA,CAAC,EAAE;AACpD,YAAA,OAAO,IAAI,CAAC;SACb;;QAGD,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC;SACb;;;AAID,QAAA,OAAO,KAAK,CAAC;KACd;;;IAKD,SAAS,CAAC,GAAqB,EAAE,IAAiB,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;KAClE;;AAGO,IAAA,uBAAuB,CAAC,KAAoB,EAAE,GAAqB,EAAE,IAAiB,EAAA;QAC5F,IAAI,CAAC,CAAC,KAAK,KAAK,oBAAoB,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE;AACzF,YAAA,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;AACd,gBAAA,UAAU,EAAE;oBACV,aAAa,EAAE,CAAU,OAAA,EAAA,KAAK,CAAE,CAAA;AACjC,iBAAA;AACF,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KACzB;AAEO,IAAA,iBAAiB,CAAC,GAAQ,EAAA;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;AAEpD,QAAA,IAAI,WAAW,IAAI,IAAI,EAAE;AACvB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,gBAAA,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA,EAAG,WAAW,CAAC,CAAC,CAAC,CAAE,CAAA,CAAC,EAAE;AAC3C,oBAAA,OAAO,IAAI,CAAC;iBACb;aACF;SACF;;;AAID,QAAA,OAAO,KAAK,CAAC;KACd;uGAhEU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAApB,oBAAoB,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;;ACLX;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"meshmakers-shared-auth.mjs","sources":["../../../../projects/meshmakers/shared-auth/src/lib/authorize.service.ts","../../../../projects/meshmakers/shared-auth/src/lib/roles.ts","../../../../projects/meshmakers/shared-auth/src/lib/login-menu/login-menu.component.ts","../../../../projects/meshmakers/shared-auth/src/lib/login-menu/login-menu.component.html","../../../../projects/meshmakers/shared-auth/src/lib/authorize.guard.ts","../../../../projects/meshmakers/shared-auth/src/lib/shared-auth.module.ts","../../../../projects/meshmakers/shared-auth/src/lib/authorize.interceptor.ts","../../../../projects/meshmakers/shared-auth/src/public-api.ts","../../../../projects/meshmakers/shared-auth/src/meshmakers-shared-auth.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, firstValueFrom, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { AuthConfig, OAuthService } from 'angular-oauth2-oidc';\nimport { Roles } from './roles';\n\nexport interface IUser {\n name: string;\n role: string[];\n sub: string;\n idp: string;\n email: string | null;\n}\n\nexport class AuthorizeOptions {\n wellKnownServiceUris?: string[];\n // Url of the Identity Provider\n issuer?: string;\n // URL of the SPA to redirect the user to after login\n redirectUri?: string;\n postLogoutRedirectUri?: string;\n // The SPA's id. The SPA is registered with this id at the auth-server\n clientId?: string;\n // set the scope for the permissions the client should request\n // The first three are defined by OIDC. The 4th is a use case-specific one\n scope?: string;\n showDebugInformation?: boolean;\n sessionChecksEnabled?: boolean;\n}\n\n@Injectable()\nexport class AuthorizeService {\n private readonly isAuthenticated = new BehaviorSubject<boolean>(false);\n private readonly authority: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n\n private readonly accessToken: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n\n private readonly user: BehaviorSubject<IUser | null> = new BehaviorSubject<IUser | null>(null);\n\n private readonly isInitialized = new BehaviorSubject<boolean>(false);\n private readonly isInitializing = new BehaviorSubject<boolean>(false);\n\n constructor(\n @Inject(AuthorizeOptions)\n private readonly authorizeOptions: AuthorizeOptions,\n private readonly oauthService: OAuthService\n ) {\n console.debug('AuthorizeService::created');\n\n this.getUser().subscribe((s) => {\n this.isAuthenticated.next(!(s == null));\n });\n\n this.oauthService.events.subscribe((e) => {\n console.debug('oauth/oidc event', e);\n });\n\n this.oauthService.events.pipe(filter((e) => e.type === 'session_terminated')).subscribe((_) => {\n console.debug('Your session has been terminated!');\n });\n\n this.oauthService.events.pipe(filter((e) => e.type === 'token_received')).subscribe((_) => {\n this.loadUser();\n });\n\n this.oauthService.events.pipe(filter((e) => e.type === 'logout')).subscribe((_) => {\n this.accessToken.next(null);\n this.user.next(null);\n });\n }\n\n public isInRole(role: Roles): boolean {\n return this.getUser()?.value?.role.includes(role) ?? false;\n }\n\n public getRoles(): Observable<string[]> {\n return this.getUser().pipe(map((u) => (u != null ? u.role : new Array<string>())));\n }\n\n public getServiceUris(): string[] | null {\n return this.authorizeOptions.wellKnownServiceUris ?? null;\n }\n\n public getAuthority(): BehaviorSubject<string | null> {\n return this.authority;\n }\n\n public getIsAuthenticated(): BehaviorSubject<boolean> {\n return this.isAuthenticated;\n }\n\n public getAccessToken(): BehaviorSubject<string | null> {\n return this.accessToken;\n }\n\n public getUser(): BehaviorSubject<IUser | null> {\n return this.user;\n }\n\n public login(): void {\n this.oauthService.initImplicitFlow();\n }\n\n public logout(): void {\n this.oauthService.logOut(false);\n }\n\n public async initialize(): Promise<void> {\n console.debug('AuthorizeService::initialize::started');\n\n if (await firstValueFrom(this.isInitializing)) {\n return;\n }\n if (await firstValueFrom(this.isInitialized)) {\n return;\n }\n this.isInitializing.next(true);\n\n const config: AuthConfig = {\n responseType: 'code',\n issuer: this.authorizeOptions.issuer,\n redirectUri: this.authorizeOptions.redirectUri,\n postLogoutRedirectUri: this.authorizeOptions.postLogoutRedirectUri,\n clientId: this.authorizeOptions.clientId,\n scope: this.authorizeOptions.scope,\n showDebugInformation: this.authorizeOptions.showDebugInformation,\n sessionChecksEnabled: this.authorizeOptions.sessionChecksEnabled\n };\n\n this.oauthService.configure(config);\n this.oauthService.setStorage(localStorage);\n await this.oauthService.loadDiscoveryDocumentAndTryLogin();\n\n this.oauthService.setupAutomaticSilentRefresh();\n\n if (this.oauthService.hasValidAccessToken()) {\n this.loadUser();\n }\n\n this.authority.next(this.authorizeOptions.issuer ?? null);\n this.isInitializing.next(false);\n this.isInitialized.next(true);\n\n console.debug('AuthorizeService::initialize::done');\n }\n\n private loadUser(): void {\n const claims = this.oauthService.getIdentityClaims();\n if (!claims) {\n console.error('claims where null when loading identity claims');\n return;\n }\n\n const user = claims as IUser;\n const accessToken = this.oauthService.getAccessToken();\n this.user.next(user);\n this.accessToken.next(accessToken);\n }\n}\n","export enum Roles {\n UserManagement = 'UserManagement',\n CommunicationManagement = 'CommunicationManagement',\n TenantManagement = 'TenantManagement',\n Development = 'Development'\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AuthorizeService } from '../authorize.service';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'mm-login-menu',\n templateUrl: './login-menu.component.html',\n styleUrls: ['./login-menu.component.css']\n})\nexport class LoginMenuComponent implements OnInit {\n public isAuthenticated: BehaviorSubject<boolean>;\n public userName: Observable<string | null>;\n\n constructor(private readonly authorizeService: AuthorizeService) {\n this.isAuthenticated = this.authorizeService.getIsAuthenticated();\n this.userName = this.authorizeService.getUser().pipe(map((u) => u?.name ?? null));\n }\n\n ngOnInit(): void {\n const isIFrame = window.self !== window.top;\n\n console.log('app-login-menu::created');\n\n this.isAuthenticated.subscribe((x) => {\n console.log(`isAuthenticated changed to ${x} (iframe ${isIFrame})`);\n });\n }\n\n public login(): void {\n this.authorizeService.login();\n }\n\n public logout(): void {\n this.authorizeService.logout();\n }\n\n public register(): void {}\n}\n","<ul *ngIf=\"isAuthenticated | async\" class=\"navbar-nav\">\n <li class=\"nav-item dropdown\">\n <a aria-expanded=\"false\" aria-haspopup=\"true\" class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\"\n id=\"navbarDropdownLogin\" role=\"button\">\n {{ userName | async }} <b class=\"caret\"></b>\n </a>\n <div aria-labelledby=\"navbarDropdown\" class=\"dropdown-menu\">\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Grants\">Client Application Access</a>-->\n <!--<a class=\"dropdown-item\" [routerLink]='[\"/authentication/profile\"]' title=\"Manage\">Manage</a>-->\n <!--<a class=\"dropdown-item\" asp-action=\"Index\" asp-area=\"Authentication\" asp-controller=\"Diagnostics\">Diagnostics</a>-->\n <div class=\"dropdown-divider\"></div>\n <a (click)='logout()' class=\"dropdown-item\" routerLink=\"\" title=\"Logout\">Logout</a>\n </div>\n </li>\n</ul>\n<ul *ngIf=\"!(isAuthenticated | async)\" class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a (click)='register()' class=\"nav-link\" routerLink=\"\">Register</a>\n </li>\n <li class=\"nav-item\">\n <a (click)='login()' class=\"nav-link\" routerLink=\"\">Login</a>\n </li>\n</ul>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Route, Router, RouterStateSnapshot, UrlSegment, UrlTree } from '@angular/router';\nimport { AuthorizeService } from './authorize.service';\nimport { firstValueFrom, Observable } from 'rxjs';\n\n@Injectable()\nexport class AuthorizeGuard {\n constructor(\n private readonly authorizeService: AuthorizeService,\n private readonly router: Router\n ) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const url: string = state.url;\n return this.handleAuthorization(next, url);\n }\n\n canActivateChild(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return this.canActivate(next, state);\n }\n\n canDeactivate(\n component: unknown,\n currentRoute: ActivatedRouteSnapshot,\n currentState: RouterStateSnapshot,\n nextState?: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return true;\n }\n\n canLoad(route: Route, segments: UrlSegment[]): Observable<boolean> | Promise<boolean> | boolean {\n return true;\n }\n\n private async handleAuthorization(route: ActivatedRouteSnapshot, url: any): Promise<boolean> {\n await this.authorizeService.initialize();\n\n const isAuthenticated = await firstValueFrom(this.authorizeService.getIsAuthenticated());\n if (isAuthenticated) {\n const userRoles = await firstValueFrom(this.authorizeService.getRoles());\n if (route.data['roles'] && !route.data['roles'].filter((value: string) => userRoles.includes(value))) {\n await this.router.navigate(['']);\n return false;\n }\n return true;\n } else {\n this.authorizeService.login();\n }\n\n return false;\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { LoginMenuComponent } from './login-menu/login-menu.component';\nimport { AuthorizeOptions, AuthorizeService } from './authorize.service';\nimport { OAuthModule } from 'angular-oauth2-oidc';\nimport { AuthorizeGuard } from './authorize.guard';\nimport { RouterLink } from '@angular/router';\n\n@NgModule({\n declarations: [LoginMenuComponent],\n exports: [LoginMenuComponent],\n providers: [],\n imports: [CommonModule, HttpClientModule, OAuthModule.forRoot(), RouterLink]\n})\nexport class SharedAuthModule {\n static forRoot(authorizeOptions: AuthorizeOptions): ModuleWithProviders<SharedAuthModule> {\n return {\n ngModule: SharedAuthModule,\n providers: [\n {\n provide: AuthorizeOptions,\n useValue: authorizeOptions\n },\n AuthorizeService,\n AuthorizeGuard\n ]\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { AuthorizeService } from './authorize.service';\n\n@Injectable()\nexport class AuthorizeInterceptor implements HttpInterceptor {\n accessToken: string | null;\n\n constructor(private readonly authorize: AuthorizeService) {\n this.accessToken = null;\n authorize.getAccessToken().subscribe((value) => (this.accessToken = value));\n }\n\n private static isSameOriginUrl(req: HttpRequest<any>): boolean {\n // It's an absolute url with the same origin.\n if (req.url.startsWith(`${window.location.origin}/`)) {\n return true;\n }\n\n // It's a protocol relative url with the same origin.\n // For example: //www.example.com/api/Products\n if (req.url.startsWith(`//${window.location.host}/`)) {\n return true;\n }\n\n // It's a relative url like /api/Products\n if (/^\\/[^/].*/.test(req.url)) {\n return true;\n }\n\n // It's an absolute or protocol relative url that\n // doesn't have the same origin.\n return false;\n }\n\n // Checks if there is an access_token available in the authorize service\n // and adds it to the request in case it's targeted at the same origin as the\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return this.processRequestWithToken(this.accessToken, req, next);\n }\n\n // single page application.\n private processRequestWithToken(token: string | null, req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!!token && (AuthorizeInterceptor.isSameOriginUrl(req) || this.isKnownServiceUri(req))) {\n req = req.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`\n }\n });\n }\n\n return next.handle(req);\n }\n\n private isKnownServiceUri(req: any): boolean {\n const serviceUris = this.authorize.getServiceUris();\n\n if (serviceUris != null) {\n for (const serviceUri of serviceUris) {\n if (req.url.startsWith(`${serviceUri}`)) {\n return true;\n }\n }\n }\n\n // It's an absolute or protocol relative url that\n // doesn't have the same origin.\n return false;\n }\n}\n","/*\n * Public API Surface of shared-auth\n */\n\nexport * from './lib/authorize.service';\nexport * from './lib/roles';\nexport * from './lib/login-menu/login-menu.component';\nexport * from './lib/shared-auth.module';\nexport * from './lib/authorize.interceptor';\nexport * from './lib/authorize.guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AuthorizeService","i3","i2"],"mappings":"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"}
@@ -12,5 +12,5 @@ export declare class LoginMenuComponent implements OnInit {
12
12
  logout(): void;
13
13
  register(): void;
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<LoginMenuComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<LoginMenuComponent, "app-login-menu", never, {}, {}, never, never, false, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<LoginMenuComponent, "mm-login-menu", never, {}, {}, never, never, false, never>;
16
16
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshmakers/shared-auth",
3
- "version": "3.1.115-0",
3
+ "version": "3.1.116-0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.0.3",
6
6
  "@angular/core": "^18.0.3",