@kolektor/nucleus-identity 0.0.8-pre.5676 → 0.0.9-pre.5874
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2015/kolektor-nucleus-identity.js → esm2020/kolektor-nucleus-identity.mjs} +0 -0
- package/{esm2015/lib/models/client-registration.js → esm2020/lib/models/client-registration.mjs} +0 -0
- package/{esm2015/lib/models/device-code.js → esm2020/lib/models/device-code.mjs} +0 -0
- package/{esm2015/lib/models/identity.js → esm2020/lib/models/identity.mjs} +0 -0
- package/{esm2015/lib/models/otp.js → esm2020/lib/models/otp.mjs} +0 -0
- package/{esm2015/lib/models/service-principal.js → esm2020/lib/models/service-principal.mjs} +0 -0
- package/{esm2015/lib/nucleus-identity-config.js → esm2020/lib/nucleus-identity-config.mjs} +0 -0
- package/{esm2015/lib/nucleus-identity.module.js → esm2020/lib/nucleus-identity.module.mjs} +4 -4
- package/esm2020/lib/nucleus-identity.service.mjs +338 -0
- package/esm2020/lib/nucleus-token-interceptor.service.mjs +64 -0
- package/{esm2015/lib/utils/angular-requestor.js → esm2020/lib/utils/angular-requestor.mjs} +5 -6
- package/{esm2015/lib/utils/authorization-service-configuration.js → esm2020/lib/utils/authorization-service-configuration.mjs} +0 -0
- package/{esm2015/lib/utils/location.service.js → esm2020/lib/utils/location.service.mjs} +3 -3
- package/{esm2015/lib/utils/nucleus-authorization-notifier.js → esm2020/lib/utils/nucleus-authorization-notifier.mjs} +0 -0
- package/{esm2015/lib/utils/nucleus-crypto.js → esm2020/lib/utils/nucleus-crypto.mjs} +0 -0
- package/esm2020/lib/utils/oidc-configuration.service.mjs +90 -0
- package/esm2020/lib/utils/secrets-store.mjs +117 -0
- package/esm2020/lib/utils/token-client.mjs +140 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/{kolektor-nucleus-identity.js → kolektor-nucleus-identity.mjs} +177 -166
- package/fesm2015/kolektor-nucleus-identity.mjs.map +1 -0
- package/fesm2020/kolektor-nucleus-identity.mjs +1054 -0
- package/fesm2020/kolektor-nucleus-identity.mjs.map +1 -0
- package/lib/nucleus-identity.service.d.ts +3 -2
- package/lib/utils/secrets-store.d.ts +3 -0
- package/package.json +22 -9
- package/bundles/kolektor-nucleus-identity.umd.js +0 -1910
- package/bundles/kolektor-nucleus-identity.umd.js.map +0 -1
- package/esm2015/lib/nucleus-identity.service.js +0 -385
- package/esm2015/lib/nucleus-token-interceptor.service.js +0 -66
- package/esm2015/lib/utils/oidc-configuration.service.js +0 -95
- package/esm2015/lib/utils/secrets-store.js +0 -113
- package/esm2015/lib/utils/token-client.js +0 -159
- package/fesm2015/kolektor-nucleus-identity.js.map +0 -1
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { NucleusAppService } from '@kolektor/nucleus-common';
|
|
3
|
+
import { NucleusIdentityConfig } from '../nucleus-identity-config';
|
|
4
|
+
import { AngularRequestor } from './angular-requestor';
|
|
5
|
+
import { NucleusAuthorizationServiceConfiguration } from './authorization-service-configuration';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./angular-requestor";
|
|
8
|
+
import * as i2 from "../nucleus-identity-config";
|
|
9
|
+
import * as i3 from "@kolektor/nucleus-common";
|
|
10
|
+
export class OidcConfigurationService {
|
|
11
|
+
constructor(requestor, config, appService) {
|
|
12
|
+
this.requestor = requestor;
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.appService = appService;
|
|
15
|
+
this._configuration = null;
|
|
16
|
+
}
|
|
17
|
+
async getConfiguration() {
|
|
18
|
+
await this.assureConfiguration();
|
|
19
|
+
return this._configuration;
|
|
20
|
+
}
|
|
21
|
+
get clientId() {
|
|
22
|
+
return this.config.clientId;
|
|
23
|
+
}
|
|
24
|
+
get requestedScopes() {
|
|
25
|
+
return this.config.requestedScopes;
|
|
26
|
+
}
|
|
27
|
+
get servicePrincipalRequestedScopes() {
|
|
28
|
+
return this.config.servicePrincipalRequestedScopes;
|
|
29
|
+
}
|
|
30
|
+
get authProviderHint() {
|
|
31
|
+
return this.config.authProviderHint;
|
|
32
|
+
}
|
|
33
|
+
get redirectUrl() {
|
|
34
|
+
let uri = window.location.href;
|
|
35
|
+
const platform = this.appService.platform;
|
|
36
|
+
if (platform === 'android' && this.config.androidRedirectUri) {
|
|
37
|
+
uri = this.config.androidRedirectUri;
|
|
38
|
+
}
|
|
39
|
+
else if (platform === 'ios' && this.config.iOSRedirectUri) {
|
|
40
|
+
uri = this.config.iOSRedirectUri;
|
|
41
|
+
}
|
|
42
|
+
else if (this.config.redirectUri) {
|
|
43
|
+
uri = this.config.redirectUri;
|
|
44
|
+
}
|
|
45
|
+
return this.NormalizeRedirectUri(uri);
|
|
46
|
+
}
|
|
47
|
+
getServerUrl(relativeUri = null) {
|
|
48
|
+
let authority = this.config.authority;
|
|
49
|
+
if (!authority || authority === 'origin') {
|
|
50
|
+
authority = window.origin;
|
|
51
|
+
}
|
|
52
|
+
let url = new URL(authority);
|
|
53
|
+
if (relativeUri) {
|
|
54
|
+
url = new URL(relativeUri, url);
|
|
55
|
+
}
|
|
56
|
+
return url.href;
|
|
57
|
+
}
|
|
58
|
+
NormalizeRedirectUri(uri) {
|
|
59
|
+
const i = uri.indexOf('#');
|
|
60
|
+
if (i > 0) {
|
|
61
|
+
uri = uri.substring(0, i);
|
|
62
|
+
}
|
|
63
|
+
return uri;
|
|
64
|
+
}
|
|
65
|
+
async assureConfiguration() {
|
|
66
|
+
if (this._configuration != null) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
let authority = this.getServerUrl();
|
|
70
|
+
if (authority[authority.length - 1] === '/') {
|
|
71
|
+
authority = authority.slice(0, -1);
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
this._configuration = await NucleusAuthorizationServiceConfiguration.fetchFromIssuer(authority, this.requestor);
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
console.error('Nucleus.Identity: Cannot load OIDC configuration: ' + e.message);
|
|
78
|
+
throw e;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
OidcConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: OidcConfigurationService, deps: [{ token: i1.AngularRequestor }, { token: i2.NucleusIdentityConfig }, { token: i3.NucleusAppService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
83
|
+
OidcConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: OidcConfigurationService, providedIn: 'root' });
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: OidcConfigurationService, decorators: [{
|
|
85
|
+
type: Injectable,
|
|
86
|
+
args: [{
|
|
87
|
+
providedIn: 'root'
|
|
88
|
+
}]
|
|
89
|
+
}], ctorParameters: function () { return [{ type: i1.AngularRequestor }, { type: i2.NucleusIdentityConfig }, { type: i3.NucleusAppService }]; } });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2lkYy1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udWNsZXVzLWlkZW50aXR5L3NyYy9saWIvdXRpbHMvb2lkYy1jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7QUFLakcsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUNVLFNBQTJCLEVBQzNCLE1BQTZCLEVBQzdCLFVBQTZCO1FBRjdCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQXVCO1FBQzdCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBSS9CLG1CQUFjLEdBQTZDLElBQUksQ0FBQztJQUZ4RSxDQUFDO0lBSU0sS0FBSyxDQUFDLGdCQUFnQjtRQUN6QixNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLCtCQUErQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsK0JBQStCLENBQUM7SUFDckQsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQzFDLElBQUksUUFBUSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFO1lBQzVELEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDO1NBQ3RDO2FBQU0sSUFBSSxRQUFRLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFO1lBQzNELEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztTQUNsQzthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDbEMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLFlBQVksQ0FBQyxjQUFzQixJQUFJO1FBQzVDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUN4QyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztTQUMzQjtRQUVELElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdCLElBQUksV0FBVyxFQUFFO1lBQ2YsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNqQztRQUVELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQztJQUNsQixDQUFDO0lBRU8sb0JBQW9CLENBQUMsR0FBVztRQUN0QyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNULEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMzQjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLEtBQUssQ0FBQyxtQkFBbUI7UUFDL0IsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRTtZQUMvQixPQUFPO1NBQ1I7UUFDRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEMsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7WUFDM0MsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEM7UUFDRCxJQUFJO1lBQ0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLHdDQUF3QyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2pIO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxHQUFJLENBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzRixNQUFNLENBQUMsQ0FBQztTQUNUO0lBQ0gsQ0FBQzs7cUhBakZVLHdCQUF3Qjt5SEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07MkZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTnVjbGV1c0FwcFNlcnZpY2UgfSBmcm9tICdAa29sZWt0b3IvbnVjbGV1cy1jb21tb24nO1xyXG5pbXBvcnQgeyBOdWNsZXVzSWRlbnRpdHlDb25maWcgfSBmcm9tICcuLi9udWNsZXVzLWlkZW50aXR5LWNvbmZpZyc7XHJcbmltcG9ydCB7IEFuZ3VsYXJSZXF1ZXN0b3IgfSBmcm9tICcuL2FuZ3VsYXItcmVxdWVzdG9yJztcclxuaW1wb3J0IHsgTnVjbGV1c0F1dGhvcml6YXRpb25TZXJ2aWNlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vYXV0aG9yaXphdGlvbi1zZXJ2aWNlLWNvbmZpZ3VyYXRpb24nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgT2lkY0NvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVxdWVzdG9yOiBBbmd1bGFyUmVxdWVzdG9yLFxyXG4gICAgcHJpdmF0ZSBjb25maWc6IE51Y2xldXNJZGVudGl0eUNvbmZpZyxcclxuICAgIHByaXZhdGUgYXBwU2VydmljZTogTnVjbGV1c0FwcFNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb25maWd1cmF0aW9uOiBOdWNsZXVzQXV0aG9yaXphdGlvblNlcnZpY2VDb25maWd1cmF0aW9uID0gbnVsbDtcclxuXHJcbiAgcHVibGljIGFzeW5jIGdldENvbmZpZ3VyYXRpb24oKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuYXNzdXJlQ29uZmlndXJhdGlvbigpO1xyXG4gICAgICByZXR1cm4gdGhpcy5fY29uZmlndXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2xpZW50SWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuY2xpZW50SWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJlcXVlc3RlZFNjb3BlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5yZXF1ZXN0ZWRTY29wZXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNlcnZpY2VQcmluY2lwYWxSZXF1ZXN0ZWRTY29wZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuc2VydmljZVByaW5jaXBhbFJlcXVlc3RlZFNjb3BlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYXV0aFByb3ZpZGVySGludCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5hdXRoUHJvdmlkZXJIaW50O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCByZWRpcmVjdFVybCgpIHtcclxuICAgIGxldCB1cmkgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcclxuICAgIGNvbnN0IHBsYXRmb3JtID0gdGhpcy5hcHBTZXJ2aWNlLnBsYXRmb3JtO1xyXG4gICAgaWYgKHBsYXRmb3JtID09PSAnYW5kcm9pZCcgJiYgdGhpcy5jb25maWcuYW5kcm9pZFJlZGlyZWN0VXJpKSB7XHJcbiAgICAgIHVyaSA9IHRoaXMuY29uZmlnLmFuZHJvaWRSZWRpcmVjdFVyaTtcclxuICAgIH0gZWxzZSBpZiAocGxhdGZvcm0gPT09ICdpb3MnICYmIHRoaXMuY29uZmlnLmlPU1JlZGlyZWN0VXJpKSB7XHJcbiAgICAgIHVyaSA9IHRoaXMuY29uZmlnLmlPU1JlZGlyZWN0VXJpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5yZWRpcmVjdFVyaSkge1xyXG4gICAgICB1cmkgPSB0aGlzLmNvbmZpZy5yZWRpcmVjdFVyaTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLk5vcm1hbGl6ZVJlZGlyZWN0VXJpKHVyaSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U2VydmVyVXJsKHJlbGF0aXZlVXJpOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBsZXQgYXV0aG9yaXR5ID0gdGhpcy5jb25maWcuYXV0aG9yaXR5O1xyXG4gICAgaWYgKCFhdXRob3JpdHkgfHwgYXV0aG9yaXR5ID09PSAnb3JpZ2luJykge1xyXG4gICAgICBhdXRob3JpdHkgPSB3aW5kb3cub3JpZ2luO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB1cmwgPSBuZXcgVVJMKGF1dGhvcml0eSk7XHJcblxyXG4gICAgaWYgKHJlbGF0aXZlVXJpKSB7XHJcbiAgICAgIHVybCA9IG5ldyBVUkwocmVsYXRpdmVVcmksIHVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHVybC5ocmVmO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBOb3JtYWxpemVSZWRpcmVjdFVyaSh1cmk6IHN0cmluZykge1xyXG4gICAgY29uc3QgaSA9IHVyaS5pbmRleE9mKCcjJyk7XHJcbiAgICBpZiAoaSA+IDApIHtcclxuICAgICAgdXJpID0gdXJpLnN1YnN0cmluZygwLCBpKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1cmk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGFzc3VyZUNvbmZpZ3VyYXRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5fY29uZmlndXJhdGlvbiAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBhdXRob3JpdHkgPSB0aGlzLmdldFNlcnZlclVybCgpO1xyXG4gICAgaWYgKGF1dGhvcml0eVthdXRob3JpdHkubGVuZ3RoIC0gMV0gPT09ICcvJykge1xyXG4gICAgICBhdXRob3JpdHkgPSBhdXRob3JpdHkuc2xpY2UoMCwgLTEpO1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5fY29uZmlndXJhdGlvbiA9IGF3YWl0IE51Y2xldXNBdXRob3JpemF0aW9uU2VydmljZUNvbmZpZ3VyYXRpb24uZmV0Y2hGcm9tSXNzdWVyKGF1dGhvcml0eSwgdGhpcy5yZXF1ZXN0b3IpO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdOdWNsZXVzLklkZW50aXR5OiBDYW5ub3QgbG9hZCBPSURDIGNvbmZpZ3VyYXRpb246ICcgKyAoZSBhcyBFcnJvcikubWVzc2FnZSk7XHJcbiAgICAgIHRocm93IGU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import 'capacitor-secure-storage-plugin';
|
|
2
|
+
import { TokenResponse } from '@openid/appauth';
|
|
3
|
+
import { Identity } from '../models/identity';
|
|
4
|
+
import { SecureStoragePlugin } from 'capacitor-secure-storage-plugin';
|
|
5
|
+
export class SecretsStore {
|
|
6
|
+
constructor(clientId) {
|
|
7
|
+
this._tokens = {};
|
|
8
|
+
this._identities = {};
|
|
9
|
+
// this specify which identity id is used by default, when If id is not specified in getToken or getIdentity
|
|
10
|
+
this._defaultIdentityId = null;
|
|
11
|
+
this._defaultIdentityIdStorageKey = null;
|
|
12
|
+
this._tokenStorageKeyPrefix = `Nucleus.Identity.${clientId}`; // do not change this or login with existing tokens will fail
|
|
13
|
+
this._servicePrincipalKey = `${this._tokenStorageKeyPrefix}.SvcP`;
|
|
14
|
+
this._defaultIdentityIdStorageKey = `${this._tokenStorageKeyPrefix}.IdId`;
|
|
15
|
+
this._defaultIdentityId = localStorage.getItem(this._defaultIdentityIdStorageKey);
|
|
16
|
+
}
|
|
17
|
+
removeServicePrincipal() {
|
|
18
|
+
this._servicePrincipal = null;
|
|
19
|
+
return this.clear(this._servicePrincipalKey);
|
|
20
|
+
}
|
|
21
|
+
async setServicePrincipal(servicePrincipal) {
|
|
22
|
+
this._servicePrincipal = servicePrincipal;
|
|
23
|
+
await this.save(this._servicePrincipalKey, servicePrincipal);
|
|
24
|
+
}
|
|
25
|
+
async getServicePrincipal() {
|
|
26
|
+
if (!this._servicePrincipal) {
|
|
27
|
+
this._servicePrincipal = await this.load(this._servicePrincipalKey);
|
|
28
|
+
}
|
|
29
|
+
return this._servicePrincipal;
|
|
30
|
+
}
|
|
31
|
+
setToken(token, id = null) {
|
|
32
|
+
return this.setTokenInternal(token, true, id);
|
|
33
|
+
}
|
|
34
|
+
getIdentity(id = null) {
|
|
35
|
+
const key = this.getTokenKey(id);
|
|
36
|
+
return this._identities[key];
|
|
37
|
+
}
|
|
38
|
+
setDefaultIdentityId(id) {
|
|
39
|
+
this._defaultIdentityId = id;
|
|
40
|
+
if (this._defaultIdentityId) {
|
|
41
|
+
localStorage.setItem(this._defaultIdentityIdStorageKey, this._defaultIdentityId);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
localStorage.removeItem(this._defaultIdentityIdStorageKey);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async getToken(id = null) {
|
|
48
|
+
const key = this.getTokenKey(id);
|
|
49
|
+
// if token is not there or it is invalid we check storage again before returning
|
|
50
|
+
if (!this._tokens[key] || !this._tokens[key].isValid()) {
|
|
51
|
+
await this.reloadTokenFromStorage(id);
|
|
52
|
+
}
|
|
53
|
+
return this._tokens[key];
|
|
54
|
+
}
|
|
55
|
+
removeToken(id = null) {
|
|
56
|
+
const key = this.getTokenKey(id);
|
|
57
|
+
delete this._tokens[key];
|
|
58
|
+
delete this._identities[key];
|
|
59
|
+
return this.clear(key);
|
|
60
|
+
}
|
|
61
|
+
async reloadTokenFromStorage(id) {
|
|
62
|
+
const key = this.getTokenKey(id);
|
|
63
|
+
const storedToken = await this.load(key);
|
|
64
|
+
if (storedToken) {
|
|
65
|
+
const res = new TokenResponse(storedToken);
|
|
66
|
+
if (res?.accessToken || res?.idToken) {
|
|
67
|
+
await this.setTokenInternal(res, false, id);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
async setTokenInternal(token, save, id = null) {
|
|
73
|
+
const key = this.getTokenKey(id);
|
|
74
|
+
if (token == null) {
|
|
75
|
+
await this.removeToken(id);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this._tokens[key] = token;
|
|
79
|
+
this._identities[key] = Identity.createFromResponse(token);
|
|
80
|
+
if (save) {
|
|
81
|
+
try {
|
|
82
|
+
await this.save(key, token.toJson());
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
console.warn('Nucleus.Identity: Could not save to SecureStorage.');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
getTokenKey(id = null) {
|
|
91
|
+
if (!id) {
|
|
92
|
+
id = this._defaultIdentityId;
|
|
93
|
+
}
|
|
94
|
+
return id ? `${this._tokenStorageKeyPrefix}.${id}` : this._tokenStorageKeyPrefix;
|
|
95
|
+
}
|
|
96
|
+
clear(key) {
|
|
97
|
+
return SecureStoragePlugin.remove({ key });
|
|
98
|
+
}
|
|
99
|
+
save(key, value) {
|
|
100
|
+
return SecureStoragePlugin.set({ key, value: JSON.stringify(value) });
|
|
101
|
+
}
|
|
102
|
+
async load(key) {
|
|
103
|
+
try {
|
|
104
|
+
const x = await SecureStoragePlugin.get({ key });
|
|
105
|
+
if (x?.value) {
|
|
106
|
+
return JSON.parse(x.value);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0cy1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251Y2xldXMtaWRlbnRpdHkvc3JjL2xpYi91dGlscy9zZWNyZXRzLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBcUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdEUsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBWSxRQUFnQjtRQU9wQixZQUFPLEdBQW9DLEVBQUUsQ0FBQztRQUM5QyxnQkFBVyxHQUErQixFQUFFLENBQUM7UUFHckQsNEdBQTRHO1FBQ3BHLHVCQUFrQixHQUFXLElBQUksQ0FBQztRQUNsQyxpQ0FBNEIsR0FBVyxJQUFJLENBQUM7UUFabEQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLG9CQUFvQixRQUFRLEVBQUUsQ0FBQyxDQUFDLDZEQUE2RDtRQUMzSCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLE9BQU8sQ0FBQztRQUNsRSxJQUFJLENBQUMsNEJBQTRCLEdBQUcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLE9BQU8sQ0FBQztRQUMxRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBVU0sc0JBQXNCO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTSxLQUFLLENBQUMsbUJBQW1CLENBQUMsZ0JBQWtD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LENBQUM7SUFDeEUsQ0FBQztJQUVPLEtBQUssQ0FBQyxJQUFJLENBQUksR0FBVztRQUMvQixJQUFJO1lBQ0YsTUFBTSxDQUFDLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRTtnQkFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBTSxDQUFDO2FBQ2pDO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUFDLE1BQU07WUFDTixPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdjYXBhY2l0b3Itc2VjdXJlLXN0b3JhZ2UtcGx1Z2luJztcclxuaW1wb3J0IHsgVG9rZW5SZXNwb25zZSwgVG9rZW5SZXNwb25zZUpzb24gfSBmcm9tICdAb3BlbmlkL2FwcGF1dGgnO1xyXG5pbXBvcnQgeyBJZGVudGl0eSB9IGZyb20gJy4uL21vZGVscy9pZGVudGl0eSc7XHJcbmltcG9ydCB7IFNlcnZpY2VQcmluY2lwYWwgfSBmcm9tICcuLi9tb2RlbHMvc2VydmljZS1wcmluY2lwYWwnO1xyXG5pbXBvcnQgeyBTZWN1cmVTdG9yYWdlUGx1Z2luIH0gZnJvbSAnY2FwYWNpdG9yLXNlY3VyZS1zdG9yYWdlLXBsdWdpbic7XHJcblxyXG5leHBvcnQgY2xhc3MgU2VjcmV0c1N0b3JlIHtcclxuICBjb25zdHJ1Y3RvcihjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl90b2tlblN0b3JhZ2VLZXlQcmVmaXggPSBgTnVjbGV1cy5JZGVudGl0eS4ke2NsaWVudElkfWA7IC8vIGRvIG5vdCBjaGFuZ2UgdGhpcyBvciBsb2dpbiB3aXRoIGV4aXN0aW5nIHRva2VucyB3aWxsIGZhaWxcclxuICAgIHRoaXMuX3NlcnZpY2VQcmluY2lwYWxLZXkgPSBgJHt0aGlzLl90b2tlblN0b3JhZ2VLZXlQcmVmaXh9LlN2Y1BgO1xyXG4gICAgdGhpcy5fZGVmYXVsdElkZW50aXR5SWRTdG9yYWdlS2V5ID0gYCR7dGhpcy5fdG9rZW5TdG9yYWdlS2V5UHJlZml4fS5JZElkYDtcclxuICAgIHRoaXMuX2RlZmF1bHRJZGVudGl0eUlkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5fZGVmYXVsdElkZW50aXR5SWRTdG9yYWdlS2V5KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdG9rZW5TdG9yYWdlS2V5UHJlZml4OiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfdG9rZW5zOiB7IFtpZDogc3RyaW5nXTogVG9rZW5SZXNwb25zZSB9ID0ge307XHJcbiAgcHJpdmF0ZSBfaWRlbnRpdGllczogeyBbaWQ6IHN0cmluZ106IElkZW50aXR5IH0gPSB7fTtcclxuICBwcml2YXRlIF9zZXJ2aWNlUHJpbmNpcGFsS2V5O1xyXG4gIHByaXZhdGUgX3NlcnZpY2VQcmluY2lwYWw6IFNlcnZpY2VQcmluY2lwYWw7XHJcbiAgLy8gdGhpcyBzcGVjaWZ5IHdoaWNoIGlkZW50aXR5IGlkIGlzIHVzZWQgYnkgZGVmYXVsdCwgd2hlbiBJZiBpZCBpcyBub3Qgc3BlY2lmaWVkIGluIGdldFRva2VuIG9yIGdldElkZW50aXR5XHJcbiAgcHJpdmF0ZSBfZGVmYXVsdElkZW50aXR5SWQ6IHN0cmluZyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfZGVmYXVsdElkZW50aXR5SWRTdG9yYWdlS2V5OiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBwdWJsaWMgcmVtb3ZlU2VydmljZVByaW5jaXBhbCgpIHtcclxuICAgIHRoaXMuX3NlcnZpY2VQcmluY2lwYWwgPSBudWxsO1xyXG4gICAgcmV0dXJuIHRoaXMuY2xlYXIodGhpcy5fc2VydmljZVByaW5jaXBhbEtleSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2V0U2VydmljZVByaW5jaXBhbChzZXJ2aWNlUHJpbmNpcGFsOiBTZXJ2aWNlUHJpbmNpcGFsKSB7XHJcbiAgICB0aGlzLl9zZXJ2aWNlUHJpbmNpcGFsID0gc2VydmljZVByaW5jaXBhbDtcclxuICAgIGF3YWl0IHRoaXMuc2F2ZSh0aGlzLl9zZXJ2aWNlUHJpbmNpcGFsS2V5LCBzZXJ2aWNlUHJpbmNpcGFsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRTZXJ2aWNlUHJpbmNpcGFsKCkge1xyXG4gICAgaWYgKCF0aGlzLl9zZXJ2aWNlUHJpbmNpcGFsKSB7XHJcbiAgICAgIHRoaXMuX3NlcnZpY2VQcmluY2lwYWwgPSBhd2FpdCB0aGlzLmxvYWQ8U2VydmljZVByaW5jaXBhbD4odGhpcy5fc2VydmljZVByaW5jaXBhbEtleSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fc2VydmljZVByaW5jaXBhbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRUb2tlbih0b2tlbjogVG9rZW5SZXNwb25zZSwgaWQ6IHN0cmluZyA9IG51bGwpIHtcclxuICAgIHJldHVybiB0aGlzLnNldFRva2VuSW50ZXJuYWwodG9rZW4sIHRydWUsIGlkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRJZGVudGl0eShpZDogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRUb2tlbktleShpZCk7XHJcbiAgICByZXR1cm4gdGhpcy5faWRlbnRpdGllc1trZXldO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldERlZmF1bHRJZGVudGl0eUlkKGlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2RlZmF1bHRJZGVudGl0eUlkID0gaWQ7XHJcbiAgICBpZiAodGhpcy5fZGVmYXVsdElkZW50aXR5SWQpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5fZGVmYXVsdElkZW50aXR5SWRTdG9yYWdlS2V5LCB0aGlzLl9kZWZhdWx0SWRlbnRpdHlJZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLl9kZWZhdWx0SWRlbnRpdHlJZFN0b3JhZ2VLZXkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFRva2VuKGlkOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldFRva2VuS2V5KGlkKTtcclxuXHJcbiAgICAvLyBpZiB0b2tlbiBpcyBub3QgdGhlcmUgb3IgaXQgaXMgaW52YWxpZCB3ZSBjaGVjayBzdG9yYWdlIGFnYWluIGJlZm9yZSByZXR1cm5pbmdcclxuICAgIGlmICghdGhpcy5fdG9rZW5zW2tleV0gfHwgIXRoaXMuX3Rva2Vuc1trZXldLmlzVmFsaWQoKSkge1xyXG4gICAgICBhd2FpdCB0aGlzLnJlbG9hZFRva2VuRnJvbVN0b3JhZ2UoaWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX3Rva2Vuc1trZXldO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZVRva2VuKGlkOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldFRva2VuS2V5KGlkKTtcclxuICAgIGRlbGV0ZSB0aGlzLl90b2tlbnNba2V5XTtcclxuICAgIGRlbGV0ZSB0aGlzLl9pZGVudGl0aWVzW2tleV07XHJcbiAgICByZXR1cm4gdGhpcy5jbGVhcihrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyByZWxvYWRUb2tlbkZyb21TdG9yYWdlKGlkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0VG9rZW5LZXkoaWQpO1xyXG4gICAgY29uc3Qgc3RvcmVkVG9rZW4gPSBhd2FpdCB0aGlzLmxvYWQ8VG9rZW5SZXNwb25zZUpzb24+KGtleSk7XHJcbiAgICBpZiAoc3RvcmVkVG9rZW4pIHtcclxuICAgICAgY29uc3QgcmVzID0gbmV3IFRva2VuUmVzcG9uc2Uoc3RvcmVkVG9rZW4pO1xyXG4gICAgICBpZiAocmVzPy5hY2Nlc3NUb2tlbiB8fCByZXM/LmlkVG9rZW4pIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnNldFRva2VuSW50ZXJuYWwocmVzLCBmYWxzZSwgaWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgc2V0VG9rZW5JbnRlcm5hbCh0b2tlbjogVG9rZW5SZXNwb25zZSwgc2F2ZTogYm9vbGVhbiwgaWQ6IHN0cmluZyA9IG51bGwpIHtcclxuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0VG9rZW5LZXkoaWQpO1xyXG4gICAgaWYgKHRva2VuID09IG51bGwpIHtcclxuICAgICAgYXdhaXQgdGhpcy5yZW1vdmVUb2tlbihpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl90b2tlbnNba2V5XSA9IHRva2VuO1xyXG4gICAgICB0aGlzLl9pZGVudGl0aWVzW2tleV0gPSBJZGVudGl0eS5jcmVhdGVGcm9tUmVzcG9uc2UodG9rZW4pO1xyXG4gICAgICBpZiAoc2F2ZSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLnNhdmUoa2V5LCB0b2tlbi50b0pzb24oKSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgY29uc29sZS53YXJuKCdOdWNsZXVzLklkZW50aXR5OiBDb3VsZCBub3Qgc2F2ZSB0byBTZWN1cmVTdG9yYWdlLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUb2tlbktleShpZDogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgaWYgKCFpZCkge1xyXG4gICAgICBpZCA9IHRoaXMuX2RlZmF1bHRJZGVudGl0eUlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlkID8gYCR7dGhpcy5fdG9rZW5TdG9yYWdlS2V5UHJlZml4fS4ke2lkfWAgOiB0aGlzLl90b2tlblN0b3JhZ2VLZXlQcmVmaXg7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyKGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gU2VjdXJlU3RvcmFnZVBsdWdpbi5yZW1vdmUoeyBrZXkgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNhdmU8VD4oa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogUHJvbWlzZTx7IHZhbHVlOiBib29sZWFuIH0+IHtcclxuICAgIHJldHVybiBTZWN1cmVTdG9yYWdlUGx1Z2luLnNldCh7IGtleSwgdmFsdWU6IEpTT04uc3RyaW5naWZ5KHZhbHVlKSB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgbG9hZDxUPihrZXk6IHN0cmluZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgeCA9IGF3YWl0IFNlY3VyZVN0b3JhZ2VQbHVnaW4uZ2V0KHsga2V5IH0pO1xyXG4gICAgICBpZiAoeD8udmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh4LnZhbHVlKSBhcyBUO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { AppAuthError, BaseTokenRequestHandler, BasicQueryStringUtils, GRANT_TYPE_AUTHORIZATION_CODE, GRANT_TYPE_REFRESH_TOKEN, TokenRequest } from '@openid/appauth';
|
|
2
|
+
import { OidcConfigurationService } from './oidc-configuration.service';
|
|
3
|
+
import { AngularRequestor } from './angular-requestor';
|
|
4
|
+
import { Injectable } from '@angular/core';
|
|
5
|
+
import { DeviceCode } from '../models/device-code';
|
|
6
|
+
import { ClientRegistrationResponse } from '../models/client-registration';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./angular-requestor";
|
|
9
|
+
import * as i2 from "./oidc-configuration.service";
|
|
10
|
+
export class TokenClient {
|
|
11
|
+
constructor(requestor, config) {
|
|
12
|
+
this.requestor = requestor;
|
|
13
|
+
this.config = config;
|
|
14
|
+
this._tokenHandler = new BaseTokenRequestHandler(requestor);
|
|
15
|
+
this._utils = new BasicQueryStringUtils();
|
|
16
|
+
}
|
|
17
|
+
async getByAuthorizationCode(redirectUrl, code, codeVerifier) {
|
|
18
|
+
const config = await this.config.getConfiguration();
|
|
19
|
+
const redirectUri = redirectUrl;
|
|
20
|
+
const req = new TokenRequest({
|
|
21
|
+
client_id: this.config.clientId,
|
|
22
|
+
redirect_uri: redirectUri,
|
|
23
|
+
grant_type: GRANT_TYPE_AUTHORIZATION_CODE,
|
|
24
|
+
code,
|
|
25
|
+
extras: { code_verifier: codeVerifier }
|
|
26
|
+
});
|
|
27
|
+
return await this._tokenHandler.performTokenRequest(config, req);
|
|
28
|
+
}
|
|
29
|
+
async getByRefreshToken(refreshToken) {
|
|
30
|
+
const config = await this.config.getConfiguration();
|
|
31
|
+
const redirectUri = this.config.redirectUrl;
|
|
32
|
+
const req = new TokenRequest({
|
|
33
|
+
client_id: this.config.clientId,
|
|
34
|
+
redirect_uri: redirectUri,
|
|
35
|
+
grant_type: GRANT_TYPE_REFRESH_TOKEN,
|
|
36
|
+
refresh_token: refreshToken
|
|
37
|
+
});
|
|
38
|
+
return await this._tokenHandler.performTokenRequest(config, req);
|
|
39
|
+
}
|
|
40
|
+
async getByClientCredentials(clientId, clientSecret, scope) {
|
|
41
|
+
const config = await this.config.getConfiguration();
|
|
42
|
+
const req = new TokenRequest({
|
|
43
|
+
client_id: clientId,
|
|
44
|
+
redirect_uri: null,
|
|
45
|
+
grant_type: 'client_credentials',
|
|
46
|
+
extras: {
|
|
47
|
+
client_secret: clientSecret,
|
|
48
|
+
scope,
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return await this._tokenHandler.performTokenRequest(config, req);
|
|
52
|
+
}
|
|
53
|
+
async getBySecret(provider, secret, assertionToken, scope) {
|
|
54
|
+
const config = await this.config.getConfiguration();
|
|
55
|
+
const req = new TokenRequest({
|
|
56
|
+
client_id: this.config.clientId,
|
|
57
|
+
redirect_uri: null,
|
|
58
|
+
grant_type: 'urn:kolektor:nucleus:secret',
|
|
59
|
+
extras: {
|
|
60
|
+
secret_provider: provider,
|
|
61
|
+
secret_value: secret,
|
|
62
|
+
client_assertion_type: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer',
|
|
63
|
+
client_assertion: assertionToken,
|
|
64
|
+
scope,
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
return await this._tokenHandler.performTokenRequest(config, req);
|
|
68
|
+
}
|
|
69
|
+
async getByDeviceCode(deviceCode) {
|
|
70
|
+
const config = await this.config.getConfiguration();
|
|
71
|
+
const req = new TokenRequest({
|
|
72
|
+
client_id: this.config.clientId,
|
|
73
|
+
redirect_uri: null,
|
|
74
|
+
grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
|
|
75
|
+
extras: {
|
|
76
|
+
device_code: deviceCode
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
return await this._tokenHandler.performTokenRequest(config, req);
|
|
80
|
+
}
|
|
81
|
+
async registerServicePrincipal(token) {
|
|
82
|
+
const config = await this.config.getConfiguration();
|
|
83
|
+
const response = await this.requestor.xhr({
|
|
84
|
+
url: config.registrationEndpoint,
|
|
85
|
+
method: 'POST',
|
|
86
|
+
dataType: 'json',
|
|
87
|
+
headers: {
|
|
88
|
+
'Content-Type': 'application/json',
|
|
89
|
+
Authorization: `Bearer ${token}`
|
|
90
|
+
}
|
|
91
|
+
// data: this._utils.stringify(map)
|
|
92
|
+
});
|
|
93
|
+
if (response.error === undefined) {
|
|
94
|
+
return new ClientRegistrationResponse(response);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
throw new AppAuthError(response.error);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async getRegistrationCode(existingServicePrincipalId = null) {
|
|
101
|
+
const params = {
|
|
102
|
+
custom_action: 'sp_register',
|
|
103
|
+
service_principal_id: existingServicePrincipalId
|
|
104
|
+
};
|
|
105
|
+
return this.getDeviceCodeInternal(params);
|
|
106
|
+
}
|
|
107
|
+
async getDeviceCode(scope) {
|
|
108
|
+
const params = {
|
|
109
|
+
scope,
|
|
110
|
+
};
|
|
111
|
+
return this.getDeviceCodeInternal(params);
|
|
112
|
+
}
|
|
113
|
+
async getDeviceCodeInternal(params) {
|
|
114
|
+
const config = await this.config.getConfiguration();
|
|
115
|
+
params['client_id'] = this.config.clientId;
|
|
116
|
+
const map = params;
|
|
117
|
+
const response = await this.requestor.xhr({
|
|
118
|
+
url: config.deviceAuthorizationEndpoint,
|
|
119
|
+
method: 'POST',
|
|
120
|
+
dataType: 'json',
|
|
121
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
122
|
+
data: this._utils.stringify(map)
|
|
123
|
+
});
|
|
124
|
+
if (response.error === undefined) {
|
|
125
|
+
return new DeviceCode(response);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
throw new AppAuthError(response.error);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
TokenClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TokenClient, deps: [{ token: i1.AngularRequestor }, { token: i2.OidcConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
133
|
+
TokenClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TokenClient, providedIn: 'root' });
|
|
134
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TokenClient, decorators: [{
|
|
135
|
+
type: Injectable,
|
|
136
|
+
args: [{
|
|
137
|
+
providedIn: 'root'
|
|
138
|
+
}]
|
|
139
|
+
}], ctorParameters: function () { return [{ type: i1.AngularRequestor }, { type: i2.OidcConfigurationService }]; } });
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnVjbGV1cy1pZGVudGl0eS9zcmMvbGliL3V0aWxzL3Rva2VuLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsNkJBQTZCLEVBQzdCLHdCQUF3QixFQUl4QixZQUFZLEVBQ1EsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQWtCLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUFFLDBCQUEwQixFQUFrQyxNQUFNLCtCQUErQixDQUFDOzs7O0FBSzNHLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQ1UsU0FBMkIsRUFDM0IsTUFBZ0M7UUFEaEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBMEI7UUFFeEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFLTSxLQUFLLENBQUMsc0JBQXNCLENBQUMsV0FBbUIsRUFBRSxJQUFZLEVBQUUsWUFBb0I7UUFDekYsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDcEQsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksWUFBWSxDQUFDO1lBQzNC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RSxDQUFDO1FBRXJELE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUMzQyxNQUFNLEdBQUcsR0FBYyxNQUFNLENBQUM7UUFFOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBa0M7WUFDekUsR0FBRyxFQUFFLE1BQU0sQ0FBQywyQkFBMkI7WUFDdkMsTUFBTSxFQUFFLE1BQU07WUFDZCxRQUFRLEVBQUUsTUFBTTtZQUNoQixPQUFPLEVBQUUsRUFBQyxjQUFjLEVBQUUsbUNBQW1DLEVBQUM7WUFDOUQsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztTQUNqQyxDQUFDLENBQUM7UUFFSCxJQUFLLFFBQTJCLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUNwRCxPQUFPLElBQUksVUFBVSxDQUFDLFFBQTBCLENBQUMsQ0FBQztTQUNuRDthQUFNO1lBQ0wsTUFBTSxJQUFJLFlBQVksQ0FBRSxRQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQzs7d0dBeklVLFdBQVc7NEdBQVgsV0FBVyxjQUZWLE1BQU07MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFwcEF1dGhFcnJvcixcclxuICBCYXNlVG9rZW5SZXF1ZXN0SGFuZGxlcixcclxuICBCYXNpY1F1ZXJ5U3RyaW5nVXRpbHMsXHJcbiAgR1JBTlRfVFlQRV9BVVRIT1JJWkFUSU9OX0NPREUsXHJcbiAgR1JBTlRfVFlQRV9SRUZSRVNIX1RPS0VOLFxyXG4gIFF1ZXJ5U3RyaW5nVXRpbHMsXHJcbiAgU3RyaW5nTWFwLFxyXG4gIFRva2VuRXJyb3JKc29uLFxyXG4gIFRva2VuUmVxdWVzdCxcclxuICBUb2tlblJlcXVlc3RIYW5kbGVyfSBmcm9tICdAb3BlbmlkL2FwcGF1dGgnO1xyXG5pbXBvcnQgeyBPaWRjQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL29pZGMtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQW5ndWxhclJlcXVlc3RvciB9IGZyb20gJy4vYW5ndWxhci1yZXF1ZXN0b3InO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERldmljZUNvZGUsIERldmljZUNvZGVKc29uIH0gZnJvbSAnLi4vbW9kZWxzL2RldmljZS1jb2RlJztcclxuaW1wb3J0IHsgQ2xpZW50UmVnaXN0cmF0aW9uUmVzcG9uc2UsIENsaWVudFJlZ2lzdHJhdGlvblJlc3BvbnNlSnNvbiB9IGZyb20gJy4uL21vZGVscy9jbGllbnQtcmVnaXN0cmF0aW9uJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRva2VuQ2xpZW50ICB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlcXVlc3RvcjogQW5ndWxhclJlcXVlc3RvcixcclxuICAgIHByaXZhdGUgY29uZmlnOiBPaWRjQ29uZmlndXJhdGlvblNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuX3Rva2VuSGFuZGxlciA9IG5ldyBCYXNlVG9rZW5SZXF1ZXN0SGFuZGxlcihyZXF1ZXN0b3IpO1xyXG4gICAgdGhpcy5fdXRpbHMgPSBuZXcgQmFzaWNRdWVyeVN0cmluZ1V0aWxzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90b2tlbkhhbmRsZXI6IFRva2VuUmVxdWVzdEhhbmRsZXI7XHJcbiAgcHJpdmF0ZSBfdXRpbHM6IFF1ZXJ5U3RyaW5nVXRpbHM7XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRCeUF1dGhvcml6YXRpb25Db2RlKHJlZGlyZWN0VXJsOiBzdHJpbmcsIGNvZGU6IHN0cmluZywgY29kZVZlcmlmaWVyOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHRoaXMuY29uZmlnLmdldENvbmZpZ3VyYXRpb24oKTtcclxuICAgIGNvbnN0IHJlZGlyZWN0VXJpID0gcmVkaXJlY3RVcmw7XHJcbiAgICBjb25zdCByZXEgPSBuZXcgVG9rZW5SZXF1ZXN0KHtcclxuICAgICAgY2xpZW50X2lkOiB0aGlzLmNvbmZpZy5jbGllbnRJZCxcclxuICAgICAgcmVkaXJlY3RfdXJpOiByZWRpcmVjdFVyaSxcclxuICAgICAgZ3JhbnRfdHlwZTogR1JBTlRfVFlQRV9BVVRIT1JJWkFUSU9OX0NPREUsXHJcbiAgICAgIGNvZGUsXHJcbiAgICAgIGV4dHJhczogeyBjb2RlX3ZlcmlmaWVyOiBjb2RlVmVyaWZpZXIgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fdG9rZW5IYW5kbGVyLnBlcmZvcm1Ub2tlblJlcXVlc3QoY29uZmlnLCByZXEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEJ5UmVmcmVzaFRva2VuKHJlZnJlc2hUb2tlbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBjb25maWcgPSBhd2FpdCB0aGlzLmNvbmZpZy5nZXRDb25maWd1cmF0aW9uKCk7XHJcbiAgICBjb25zdCByZWRpcmVjdFVyaSA9IHRoaXMuY29uZmlnLnJlZGlyZWN0VXJsO1xyXG4gICAgY29uc3QgcmVxID0gbmV3IFRva2VuUmVxdWVzdCh7XHJcbiAgICAgIGNsaWVudF9pZDogdGhpcy5jb25maWcuY2xpZW50SWQsXHJcbiAgICAgIHJlZGlyZWN0X3VyaTogcmVkaXJlY3RVcmksXHJcbiAgICAgIGdyYW50X3R5cGU6IEdSQU5UX1RZUEVfUkVGUkVTSF9UT0tFTixcclxuICAgICAgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLl90b2tlbkhhbmRsZXIucGVyZm9ybVRva2VuUmVxdWVzdChjb25maWcsIHJlcSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QnlDbGllbnRDcmVkZW50aWFscyhjbGllbnRJZDogc3RyaW5nLCBjbGllbnRTZWNyZXQ6IHN0cmluZywgc2NvcGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5jb25maWcuZ2V0Q29uZmlndXJhdGlvbigpO1xyXG4gICAgY29uc3QgcmVxID0gbmV3IFRva2VuUmVxdWVzdCh7XHJcbiAgICAgIGNsaWVudF9pZDogY2xpZW50SWQsXHJcbiAgICAgIHJlZGlyZWN0X3VyaTogbnVsbCxcclxuICAgICAgZ3JhbnRfdHlwZTogJ2NsaWVudF9jcmVkZW50aWFscycsXHJcbiAgICAgIGV4dHJhczoge1xyXG4gICAgICAgIGNsaWVudF9zZWNyZXQ6IGNsaWVudFNlY3JldCxcclxuICAgICAgICBzY29wZSxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fdG9rZW5IYW5kbGVyLnBlcmZvcm1Ub2tlblJlcXVlc3QoY29uZmlnLCByZXEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEJ5U2VjcmV0KHByb3ZpZGVyOiBzdHJpbmcsIHNlY3JldDogc3RyaW5nLCBhc3NlcnRpb25Ub2tlbjogc3RyaW5nLCBzY29wZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBjb25maWcgPSBhd2FpdCB0aGlzLmNvbmZpZy5nZXRDb25maWd1cmF0aW9uKCk7XHJcbiAgICBjb25zdCByZXEgPSBuZXcgVG9rZW5SZXF1ZXN0KHtcclxuICAgICAgY2xpZW50X2lkOiB0aGlzLmNvbmZpZy5jbGllbnRJZCxcclxuICAgICAgcmVkaXJlY3RfdXJpOiBudWxsLFxyXG4gICAgICBncmFudF90eXBlOiAndXJuOmtvbGVrdG9yOm51Y2xldXM6c2VjcmV0JyxcclxuICAgICAgZXh0cmFzOiB7XHJcbiAgICAgICAgc2VjcmV0X3Byb3ZpZGVyOiBwcm92aWRlcixcclxuICAgICAgICBzZWNyZXRfdmFsdWU6IHNlY3JldCxcclxuICAgICAgICBjbGllbnRfYXNzZXJ0aW9uX3R5cGU6ICd1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1iZWFyZXInLFxyXG4gICAgICAgIGNsaWVudF9hc3NlcnRpb246IGFzc2VydGlvblRva2VuLFxyXG4gICAgICAgIHNjb3BlLFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fdG9rZW5IYW5kbGVyLnBlcmZvcm1Ub2tlblJlcXVlc3QoY29uZmlnLCByZXEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEJ5RGV2aWNlQ29kZShkZXZpY2VDb2RlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGNvbmZpZyA9ICBhd2FpdCB0aGlzLmNvbmZpZy5nZXRDb25maWd1cmF0aW9uKCk7XHJcbiAgICBjb25zdCByZXEgPSBuZXcgVG9rZW5SZXF1ZXN0KHtcclxuICAgICAgY2xpZW50X2lkOiB0aGlzLmNvbmZpZy5jbGllbnRJZCxcclxuICAgICAgcmVkaXJlY3RfdXJpOiBudWxsLFxyXG4gICAgICBncmFudF90eXBlOiAndXJuOmlldGY6cGFyYW1zOm9hdXRoOmdyYW50LXR5cGU6ZGV2aWNlX2NvZGUnLFxyXG4gICAgICBleHRyYXM6IHtcclxuICAgICAgICBkZXZpY2VfY29kZTogZGV2aWNlQ29kZVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLl90b2tlbkhhbmRsZXIucGVyZm9ybVRva2VuUmVxdWVzdChjb25maWcsIHJlcSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgcmVnaXN0ZXJTZXJ2aWNlUHJpbmNpcGFsKHRva2VuOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGNvbmZpZyA9ICBhd2FpdCB0aGlzLmNvbmZpZy5nZXRDb25maWd1cmF0aW9uKCk7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnJlcXVlc3Rvci54aHI8Q2xpZW50UmVnaXN0cmF0aW9uUmVzcG9uc2VKc29uIHwgVG9rZW5FcnJvckpzb24+KHtcclxuICAgICAgdXJsOiBjb25maWcucmVnaXN0cmF0aW9uRW5kcG9pbnQsXHJcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICBkYXRhVHlwZTogJ2pzb24nLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgICB9XHJcbiAgICAgIC8vIGRhdGE6IHRoaXMuX3V0aWxzLnN0cmluZ2lmeShtYXApXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoKHJlc3BvbnNlIGFzIFRva2VuRXJyb3JKc29uKS5lcnJvciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiBuZXcgQ2xpZW50UmVnaXN0cmF0aW9uUmVzcG9uc2UocmVzcG9uc2UgYXMgQ2xpZW50UmVnaXN0cmF0aW9uUmVzcG9uc2VKc29uKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBBcHBBdXRoRXJyb3IoKHJlc3BvbnNlIGFzIFRva2VuRXJyb3JKc29uKS5lcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0UmVnaXN0cmF0aW9uQ29kZShleGlzdGluZ1NlcnZpY2VQcmluY2lwYWxJZDogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICBjdXN0b21fYWN0aW9uOiAnc3BfcmVnaXN0ZXInLFxyXG4gICAgICBzZXJ2aWNlX3ByaW5jaXBhbF9pZDogZXhpc3RpbmdTZXJ2aWNlUHJpbmNpcGFsSWRcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5nZXREZXZpY2VDb2RlSW50ZXJuYWwocGFyYW1zKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VDb2RlKHNjb3BlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgc2NvcGUsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RGV2aWNlQ29kZUludGVybmFsKHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldERldmljZUNvZGVJbnRlcm5hbChwYXJhbXM6IFN0cmluZ01hcCkge1xyXG4gICAgY29uc3QgY29uZmlnID0gIGF3YWl0IHRoaXMuY29uZmlnLmdldENvbmZpZ3VyYXRpb24oKTtcclxuXHJcbiAgICBwYXJhbXNbJ2NsaWVudF9pZCddID0gdGhpcy5jb25maWcuY2xpZW50SWQ7XHJcbiAgICBjb25zdCBtYXA6IFN0cmluZ01hcCA9IHBhcmFtcztcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdG9yLnhocjxEZXZpY2VDb2RlSnNvbiB8IFRva2VuRXJyb3JKc29uPih7XHJcbiAgICAgIHVybDogY29uZmlnLmRldmljZUF1dGhvcml6YXRpb25FbmRwb2ludCxcclxuICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgIGRhdGFUeXBlOiAnanNvbicsXHJcbiAgICAgIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCd9LFxyXG4gICAgICBkYXRhOiB0aGlzLl91dGlscy5zdHJpbmdpZnkobWFwKVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKChyZXNwb25zZSBhcyBUb2tlbkVycm9ySnNvbikuZXJyb3IgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gbmV3IERldmljZUNvZGUocmVzcG9uc2UgYXMgRGV2aWNlQ29kZUpzb24pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgbmV3IEFwcEF1dGhFcnJvcigocmVzcG9uc2UgYXMgVG9rZW5FcnJvckpzb24pLmVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=
|
|
File without changes
|