@kolektor/nucleus-identity 0.0.8-pre.5352 → 0.0.9-pre.5702
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 +343 -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 +100 -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} +132 -133
- package/fesm2015/kolektor-nucleus-identity.mjs.map +1 -0
- package/fesm2020/kolektor-nucleus-identity.mjs +1042 -0
- package/fesm2020/kolektor-nucleus-identity.mjs.map +1 -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,100 @@
|
|
|
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._tokenStorageKeyPrefix = `Nucleus.Identity.${clientId}`; // do not change this or login fith existing refresh tokens will fail
|
|
10
|
+
this._servicePrincipalKey = `Nucleus.Identity.${clientId}.SvcP`;
|
|
11
|
+
}
|
|
12
|
+
removeServicePrincipal() {
|
|
13
|
+
this._servicePrincipal = null;
|
|
14
|
+
return this.clear(this._servicePrincipalKey);
|
|
15
|
+
}
|
|
16
|
+
async setServicePrincipal(servicePrincipal) {
|
|
17
|
+
this._servicePrincipal = servicePrincipal;
|
|
18
|
+
await this.save(this._servicePrincipalKey, servicePrincipal);
|
|
19
|
+
}
|
|
20
|
+
async getServicePrincipal() {
|
|
21
|
+
if (!this._servicePrincipal) {
|
|
22
|
+
this._servicePrincipal = await this.load(this._servicePrincipalKey);
|
|
23
|
+
}
|
|
24
|
+
return this._servicePrincipal;
|
|
25
|
+
}
|
|
26
|
+
setToken(token, id = null) {
|
|
27
|
+
return this.setTokenInternal(token, true, id);
|
|
28
|
+
}
|
|
29
|
+
getIdentity(id = null) {
|
|
30
|
+
const key = this.getTokenKey(id);
|
|
31
|
+
return this._identities[key];
|
|
32
|
+
}
|
|
33
|
+
async getToken(id = null) {
|
|
34
|
+
const key = this.getTokenKey(id);
|
|
35
|
+
// if token is not there or it is invalid we check storage again before returning
|
|
36
|
+
if (!this._tokens[key] || !this._tokens[key].isValid()) {
|
|
37
|
+
await this.reloadTokenFromStorage(id);
|
|
38
|
+
}
|
|
39
|
+
return this._tokens[key];
|
|
40
|
+
}
|
|
41
|
+
removeToken(id = null) {
|
|
42
|
+
const key = this.getTokenKey(id);
|
|
43
|
+
delete this._tokens[key];
|
|
44
|
+
delete this._identities[key];
|
|
45
|
+
return this.clear(key);
|
|
46
|
+
}
|
|
47
|
+
async reloadTokenFromStorage(id) {
|
|
48
|
+
const key = this.getTokenKey(id);
|
|
49
|
+
const storedToken = await this.load(key);
|
|
50
|
+
if (storedToken) {
|
|
51
|
+
const res = new TokenResponse(storedToken);
|
|
52
|
+
if (res?.accessToken || res?.idToken) {
|
|
53
|
+
await this.setTokenInternal(res, false, id);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
async setTokenInternal(token, save, id = null) {
|
|
59
|
+
const key = this.getTokenKey(id);
|
|
60
|
+
if (token == null) {
|
|
61
|
+
await this.removeToken(id);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
this._tokens[key] = token;
|
|
65
|
+
this._identities[key] = Identity.createFromResponse(token);
|
|
66
|
+
if (save) {
|
|
67
|
+
try {
|
|
68
|
+
await this.save(key, token.toJson());
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
console.warn('Nucleus.Identity: Could not save to SecureStorage.');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
getTokenKey(id = null) {
|
|
77
|
+
return id ? `${this._tokenStorageKeyPrefix}.${id}` : this._tokenStorageKeyPrefix;
|
|
78
|
+
}
|
|
79
|
+
clear(key) {
|
|
80
|
+
return SecureStoragePlugin.remove({ key });
|
|
81
|
+
}
|
|
82
|
+
save(key, value) {
|
|
83
|
+
return SecureStoragePlugin.set({ key, value: JSON.stringify(value) });
|
|
84
|
+
}
|
|
85
|
+
async load(key) {
|
|
86
|
+
try {
|
|
87
|
+
const x = await SecureStoragePlugin.get({ key });
|
|
88
|
+
if (x?.value) {
|
|
89
|
+
return JSON.parse(x.value);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0cy1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251Y2xldXMtaWRlbnRpdHkvc3JjL2xpYi91dGlscy9zZWNyZXRzLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBcUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdEUsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBWSxRQUFnQjtRQU1wQixZQUFPLEdBQW9DLEVBQUUsQ0FBQztRQUM5QyxnQkFBVyxHQUErQixFQUFFLENBQUM7UUFObkQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLG9CQUFvQixRQUFRLEVBQUUsQ0FBQyxDQUFDLHFFQUFxRTtRQUNuSSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLFFBQVEsT0FBTyxDQUFDO0lBQ2xFLENBQUM7SUFRTSxzQkFBc0I7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBa0M7UUFDakUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQzFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sS0FBSyxDQUFDLG1CQUFtQjtRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFN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QUNGO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFhLElBQUk7UUFDbkMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDbkYsQ0FBQztJQUVPLEtBQUssQ0FBQyxHQUFXO1FBQ3ZCLE9BQU8sbUJBQW1CLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sSUFBSSxDQUFJLEdBQVcsRUFBRSxLQUFRO1FBQ25DLE9BQU8sbUJBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU8sS0FBSyxDQUFDLElBQUksQ0FBSSxHQUFXO1FBQy9CLElBQUk7WUFDRixNQUFNLENBQUMsR0FBRyxNQUFNLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFO2dCQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFNLENBQUM7YUFDakM7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQUMsTUFBTTtZQUNOLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ2NhcGFjaXRvci1zZWN1cmUtc3RvcmFnZS1wbHVnaW4nO1xyXG5pbXBvcnQgeyBUb2tlblJlc3BvbnNlLCBUb2tlblJlc3BvbnNlSnNvbiB9IGZyb20gJ0BvcGVuaWQvYXBwYXV0aCc7XHJcbmltcG9ydCB7IElkZW50aXR5IH0gZnJvbSAnLi4vbW9kZWxzL2lkZW50aXR5JztcclxuaW1wb3J0IHsgU2VydmljZVByaW5jaXBhbCB9IGZyb20gJy4uL21vZGVscy9zZXJ2aWNlLXByaW5jaXBhbCc7XHJcbmltcG9ydCB7IFNlY3VyZVN0b3JhZ2VQbHVnaW4gfSBmcm9tICdjYXBhY2l0b3Itc2VjdXJlLXN0b3JhZ2UtcGx1Z2luJztcclxuXHJcbmV4cG9ydCBjbGFzcyBTZWNyZXRzU3RvcmUge1xyXG4gIGNvbnN0cnVjdG9yKGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3Rva2VuU3RvcmFnZUtleVByZWZpeCA9IGBOdWNsZXVzLklkZW50aXR5LiR7Y2xpZW50SWR9YDsgLy8gZG8gbm90IGNoYW5nZSB0aGlzIG9yIGxvZ2luIGZpdGggZXhpc3RpbmcgcmVmcmVzaCB0b2tlbnMgd2lsbCBmYWlsXHJcbiAgICB0aGlzLl9zZXJ2aWNlUHJpbmNpcGFsS2V5ID0gYE51Y2xldXMuSWRlbnRpdHkuJHtjbGllbnRJZH0uU3ZjUGA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90b2tlblN0b3JhZ2VLZXlQcmVmaXg6IHN0cmluZztcclxuICBwcml2YXRlIF90b2tlbnM6IHsgW2lkOiBzdHJpbmddOiBUb2tlblJlc3BvbnNlIH0gPSB7fTtcclxuICBwcml2YXRlIF9pZGVudGl0aWVzOiB7IFtpZDogc3RyaW5nXTogSWRlbnRpdHkgfSA9IHt9O1xyXG4gIHByaXZhdGUgX3NlcnZpY2VQcmluY2lwYWxLZXk7XHJcbiAgcHJpdmF0ZSBfc2VydmljZVByaW5jaXBhbDogU2VydmljZVByaW5jaXBhbDtcclxuXHJcbiAgcHVibGljIHJlbW92ZVNlcnZpY2VQcmluY2lwYWwoKSB7XHJcbiAgICB0aGlzLl9zZXJ2aWNlUHJpbmNpcGFsID0gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLmNsZWFyKHRoaXMuX3NlcnZpY2VQcmluY2lwYWxLZXkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldFNlcnZpY2VQcmluY2lwYWwoc2VydmljZVByaW5jaXBhbDogU2VydmljZVByaW5jaXBhbCkge1xyXG4gICAgdGhpcy5fc2VydmljZVByaW5jaXBhbCA9IHNlcnZpY2VQcmluY2lwYWw7XHJcbiAgICBhd2FpdCB0aGlzLnNhdmUodGhpcy5fc2VydmljZVByaW5jaXBhbEtleSwgc2VydmljZVByaW5jaXBhbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2VydmljZVByaW5jaXBhbCgpIHtcclxuICAgIGlmICghdGhpcy5fc2VydmljZVByaW5jaXBhbCkge1xyXG4gICAgICB0aGlzLl9zZXJ2aWNlUHJpbmNpcGFsID0gYXdhaXQgdGhpcy5sb2FkPFNlcnZpY2VQcmluY2lwYWw+KHRoaXMuX3NlcnZpY2VQcmluY2lwYWxLZXkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2VQcmluY2lwYWw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VG9rZW4odG9rZW46IFRva2VuUmVzcG9uc2UsIGlkOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXRUb2tlbkludGVybmFsKHRva2VuLCB0cnVlLCBpZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SWRlbnRpdHkoaWQ6IHN0cmluZyA9IG51bGwpIHtcclxuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0VG9rZW5LZXkoaWQpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkZW50aXRpZXNba2V5XTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRUb2tlbihpZDogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRUb2tlbktleShpZCk7XHJcblxyXG4gICAgLy8gaWYgdG9rZW4gaXMgbm90IHRoZXJlIG9yIGl0IGlzIGludmFsaWQgd2UgY2hlY2sgc3RvcmFnZSBhZ2FpbiBiZWZvcmUgcmV0dXJuaW5nXHJcbiAgICBpZiAoIXRoaXMuX3Rva2Vuc1trZXldIHx8ICF0aGlzLl90b2tlbnNba2V5XS5pc1ZhbGlkKCkpIHtcclxuICAgICAgYXdhaXQgdGhpcy5yZWxvYWRUb2tlbkZyb21TdG9yYWdlKGlkKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl90b2tlbnNba2V5XTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVUb2tlbihpZDogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRUb2tlbktleShpZCk7XHJcbiAgICBkZWxldGUgdGhpcy5fdG9rZW5zW2tleV07XHJcbiAgICBkZWxldGUgdGhpcy5faWRlbnRpdGllc1trZXldO1xyXG4gICAgcmV0dXJuIHRoaXMuY2xlYXIoa2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgcmVsb2FkVG9rZW5Gcm9tU3RvcmFnZShpZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldFRva2VuS2V5KGlkKTtcclxuICAgIGNvbnN0IHN0b3JlZFRva2VuID0gYXdhaXQgdGhpcy5sb2FkPFRva2VuUmVzcG9uc2VKc29uPihrZXkpO1xyXG4gICAgaWYgKHN0b3JlZFRva2VuKSB7XHJcbiAgICAgIGNvbnN0IHJlcyA9IG5ldyBUb2tlblJlc3BvbnNlKHN0b3JlZFRva2VuKTtcclxuICAgICAgaWYgKHJlcz8uYWNjZXNzVG9rZW4gfHwgcmVzPy5pZFRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zZXRUb2tlbkludGVybmFsKHJlcywgZmFsc2UsIGlkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHNldFRva2VuSW50ZXJuYWwodG9rZW46IFRva2VuUmVzcG9uc2UsIHNhdmU6IGJvb2xlYW4sIGlkOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldFRva2VuS2V5KGlkKTtcclxuICAgIGlmICh0b2tlbiA9PSBudWxsKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMucmVtb3ZlVG9rZW4oaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fdG9rZW5zW2tleV0gPSB0b2tlbjtcclxuICAgICAgdGhpcy5faWRlbnRpdGllc1trZXldID0gSWRlbnRpdHkuY3JlYXRlRnJvbVJlc3BvbnNlKHRva2VuKTtcclxuICAgICAgaWYgKHNhdmUpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5zYXZlKGtleSwgdG9rZW4udG9Kc29uKCkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIGNvbnNvbGUud2FybignTnVjbGV1cy5JZGVudGl0eTogQ291bGQgbm90IHNhdmUgdG8gU2VjdXJlU3RvcmFnZS4nKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VG9rZW5LZXkoaWQ6IHN0cmluZyA9IG51bGwpIHtcclxuICAgIHJldHVybiBpZCA/IGAke3RoaXMuX3Rva2VuU3RvcmFnZUtleVByZWZpeH0uJHtpZH1gIDogdGhpcy5fdG9rZW5TdG9yYWdlS2V5UHJlZml4O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhcihrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIFNlY3VyZVN0b3JhZ2VQbHVnaW4ucmVtb3ZlKHsga2V5IH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzYXZlPFQ+KGtleTogc3RyaW5nLCB2YWx1ZTogVCk6IFByb21pc2U8eyB2YWx1ZTogYm9vbGVhbiB9PiB7XHJcbiAgICByZXR1cm4gU2VjdXJlU3RvcmFnZVBsdWdpbi5zZXQoeyBrZXksIHZhbHVlOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGxvYWQ8VD4oa2V5OiBzdHJpbmcpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHggPSBhd2FpdCBTZWN1cmVTdG9yYWdlUGx1Z2luLmdldCh7IGtleSB9KTtcclxuICAgICAgaWYgKHg/LnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoeC52YWx1ZSkgYXMgVDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -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
|