@spartacus/core
Version:
Spartacus - the core framework
102 lines • 12.9 kB
JavaScript
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "angular-oauth2-oidc";
import * as i2 from "./auth-config.service";
import * as i3 from "../../../window/window-ref";
/**
* Wrapper service on the library OAuthService. Normalizes the lib API for services.
* Use this service when you want to access low level OAuth library methods.
*/
export class OAuthLibWrapperService {
// TODO: Remove platformId dependency in 4.0
constructor(oAuthService, authConfigService, platformId, winRef) {
this.oAuthService = oAuthService;
this.authConfigService = authConfigService;
this.platformId = platformId;
this.winRef = winRef;
this.events$ = this.oAuthService.events;
this.initialize();
}
initialize() {
var _a, _b, _c, _d;
const isSSR = !this.winRef.isBrowser();
this.oAuthService.configure(Object.assign({ tokenEndpoint: this.authConfigService.getTokenEndpoint(), loginUrl: this.authConfigService.getLoginUrl(), clientId: this.authConfigService.getClientId(), dummyClientSecret: this.authConfigService.getClientSecret(), revocationEndpoint: this.authConfigService.getRevokeEndpoint(), logoutUrl: this.authConfigService.getLogoutUrl(), userinfoEndpoint: this.authConfigService.getUserinfoEndpoint(), issuer: (_b = (_a = this.authConfigService.getOAuthLibConfig()) === null || _a === void 0 ? void 0 : _a.issuer) !== null && _b !== void 0 ? _b : this.authConfigService.getBaseUrl(), redirectUri: (_d = (_c = this.authConfigService.getOAuthLibConfig()) === null || _c === void 0 ? void 0 : _c.redirectUri) !== null && _d !== void 0 ? _d : (!isSSR
? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
this.winRef.nativeWindow.location.origin
: '') }, this.authConfigService.getOAuthLibConfig()));
}
/**
* Authorize with ResourceOwnerPasswordFlow.
*
* @param userId
* @param password
*
* @return token response from the lib
*/
authorizeWithPasswordFlow(userId, password) {
return this.oAuthService.fetchTokenUsingPasswordFlow(userId, password);
}
/**
* Refresh access_token.
*/
refreshToken() {
this.oAuthService.refreshToken();
}
/**
* Revoke access tokens and clear tokens in lib state.
*/
revokeAndLogout() {
return new Promise((resolve) => {
this.oAuthService
.revokeTokenAndLogout()
.catch(() => {
// when there would be some kind of error during revocation we can't do anything else, so at least we logout user.
this.oAuthService.logOut();
})
.finally(() => {
resolve();
});
});
}
/**
* Clear tokens in library state (no revocation).
*/
logout() {
this.oAuthService.logOut();
}
/**
* Returns Open Id token. Might be empty, when it was not requested with the `responseType` config.
*
* @return id token
*/
getIdToken() {
return this.oAuthService.getIdToken();
}
/**
* Initialize Implicit Flow or Authorization Code flows with the redirect to OAuth login url.
*/
initLoginFlow() {
return this.oAuthService.initLoginFlow();
}
/**
* Tries to login user based on `code` or `token` present in the url.
*/
tryLogin() {
return this.oAuthService.tryLogin({
// We don't load discovery document, because it doesn't contain revoke endpoint information
disableOAuth2StateCheck: true,
});
}
}
OAuthLibWrapperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OAuthLibWrapperService, deps: [{ token: i1.OAuthService }, { token: i2.AuthConfigService }, { token: PLATFORM_ID }, { token: i3.WindowRef }], target: i0.ɵɵFactoryTarget.Injectable });
OAuthLibWrapperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OAuthLibWrapperService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OAuthLibWrapperService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: function () { return [{ type: i1.OAuthService }, { type: i2.AuthConfigService }, { type: Object, decorators: [{
type: Inject,
args: [PLATFORM_ID]
}] }, { type: i3.WindowRef }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtbGliLXdyYXBwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2F1dGgvdXNlci1hdXRoL3NlcnZpY2VzL29hdXRoLWxpYi13cmFwcGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQU1oRTs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sc0JBQXNCO0lBR2pDLDRDQUE0QztJQUM1QyxZQUNZLFlBQTBCLEVBQzFCLGlCQUFvQyxFQUNmLFVBQWtCLEVBQ3ZDLE1BQWlCO1FBSGpCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ3ZDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFQN0IsWUFBTyxHQUEyQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQVN6RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVTLFVBQVU7O1FBQ2xCLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsaUJBQ3pCLGFBQWEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsRUFDeEQsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFDOUMsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFDOUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxFQUMzRCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsRUFDOUQsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsRUFDaEQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixFQUFFLEVBQzlELE1BQU0sRUFDSixNQUFBLE1BQUEsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLDBDQUFFLE1BQU0sbUNBQ2xELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsRUFDckMsV0FBVyxFQUNULE1BQUEsTUFBQSxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsMENBQUUsV0FBVyxtQ0FDdkQsQ0FBQyxDQUFDLEtBQUs7Z0JBQ0wsQ0FBQyxDQUFDLG9FQUFvRTtvQkFDcEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFhLENBQUMsUUFBUSxDQUFDLE1BQU07Z0JBQzNDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFDTixJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsRUFDN0MsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gseUJBQXlCLENBQ3ZCLE1BQWMsRUFDZCxRQUFnQjtRQUVoQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsMkJBQTJCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWU7UUFDYixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFlBQVk7aUJBQ2Qsb0JBQW9CLEVBQUU7aUJBQ3RCLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ1Ysa0hBQWtIO2dCQUNsSCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLENBQUMsQ0FBQztpQkFDRCxPQUFPLENBQUMsR0FBRyxFQUFFO2dCQUNaLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1lBQ2hDLDJGQUEyRjtZQUMzRix1QkFBdUIsRUFBRSxJQUFJO1NBQzlCLENBQUMsQ0FBQztJQUNMLENBQUM7O21IQTFHVSxzQkFBc0IsK0VBT3ZCLFdBQVc7dUhBUFYsc0JBQXNCLGNBRnJCLE1BQU07MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjtxSEFROEMsTUFBTTswQkFBaEQsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT0F1dGhFdmVudCwgT0F1dGhTZXJ2aWNlLCBUb2tlblJlc3BvbnNlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICcuLi8uLi8uLi93aW5kb3cvd2luZG93LXJlZic7XG5pbXBvcnQgeyBBdXRoQ29uZmlnU2VydmljZSB9IGZyb20gJy4vYXV0aC1jb25maWcuc2VydmljZSc7XG5cbi8qKlxuICogV3JhcHBlciBzZXJ2aWNlIG9uIHRoZSBsaWJyYXJ5IE9BdXRoU2VydmljZS4gTm9ybWFsaXplcyB0aGUgbGliIEFQSSBmb3Igc2VydmljZXMuXG4gKiBVc2UgdGhpcyBzZXJ2aWNlIHdoZW4geW91IHdhbnQgdG8gYWNjZXNzIGxvdyBsZXZlbCBPQXV0aCBsaWJyYXJ5IG1ldGhvZHMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBPQXV0aExpYldyYXBwZXJTZXJ2aWNlIHtcbiAgZXZlbnRzJDogT2JzZXJ2YWJsZTxPQXV0aEV2ZW50PiA9IHRoaXMub0F1dGhTZXJ2aWNlLmV2ZW50cztcblxuICAvLyBUT0RPOiBSZW1vdmUgcGxhdGZvcm1JZCBkZXBlbmRlbmN5IGluIDQuMFxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb0F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGF1dGhDb25maWdTZXJ2aWNlOiBBdXRoQ29uZmlnU2VydmljZSxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcm90ZWN0ZWQgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgIHByb3RlY3RlZCB3aW5SZWY6IFdpbmRvd1JlZlxuICApIHtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0aWFsaXplKCkge1xuICAgIGNvbnN0IGlzU1NSID0gIXRoaXMud2luUmVmLmlzQnJvd3NlcigpO1xuICAgIHRoaXMub0F1dGhTZXJ2aWNlLmNvbmZpZ3VyZSh7XG4gICAgICB0b2tlbkVuZHBvaW50OiB0aGlzLmF1dGhDb25maWdTZXJ2aWNlLmdldFRva2VuRW5kcG9pbnQoKSxcbiAgICAgIGxvZ2luVXJsOiB0aGlzLmF1dGhDb25maWdTZXJ2aWNlLmdldExvZ2luVXJsKCksXG4gICAgICBjbGllbnRJZDogdGhpcy5hdXRoQ29uZmlnU2VydmljZS5nZXRDbGllbnRJZCgpLFxuICAgICAgZHVtbXlDbGllbnRTZWNyZXQ6IHRoaXMuYXV0aENvbmZpZ1NlcnZpY2UuZ2V0Q2xpZW50U2VjcmV0KCksXG4gICAgICByZXZvY2F0aW9uRW5kcG9pbnQ6IHRoaXMuYXV0aENvbmZpZ1NlcnZpY2UuZ2V0UmV2b2tlRW5kcG9pbnQoKSxcbiAgICAgIGxvZ291dFVybDogdGhpcy5hdXRoQ29uZmlnU2VydmljZS5nZXRMb2dvdXRVcmwoKSxcbiAgICAgIHVzZXJpbmZvRW5kcG9pbnQ6IHRoaXMuYXV0aENvbmZpZ1NlcnZpY2UuZ2V0VXNlcmluZm9FbmRwb2ludCgpLFxuICAgICAgaXNzdWVyOlxuICAgICAgICB0aGlzLmF1dGhDb25maWdTZXJ2aWNlLmdldE9BdXRoTGliQ29uZmlnKCk/Lmlzc3VlciA/P1xuICAgICAgICB0aGlzLmF1dGhDb25maWdTZXJ2aWNlLmdldEJhc2VVcmwoKSxcbiAgICAgIHJlZGlyZWN0VXJpOlxuICAgICAgICB0aGlzLmF1dGhDb25maWdTZXJ2aWNlLmdldE9BdXRoTGliQ29uZmlnKCk/LnJlZGlyZWN0VXJpID8/XG4gICAgICAgICghaXNTU1JcbiAgICAgICAgICA/IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgICAgICB0aGlzLndpblJlZi5uYXRpdmVXaW5kb3chLmxvY2F0aW9uLm9yaWdpblxuICAgICAgICAgIDogJycpLFxuICAgICAgLi4udGhpcy5hdXRoQ29uZmlnU2VydmljZS5nZXRPQXV0aExpYkNvbmZpZygpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEF1dGhvcml6ZSB3aXRoIFJlc291cmNlT3duZXJQYXNzd29yZEZsb3cuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VySWRcbiAgICogQHBhcmFtIHBhc3N3b3JkXG4gICAqXG4gICAqIEByZXR1cm4gdG9rZW4gcmVzcG9uc2UgZnJvbSB0aGUgbGliXG4gICAqL1xuICBhdXRob3JpemVXaXRoUGFzc3dvcmRGbG93KFxuICAgIHVzZXJJZDogc3RyaW5nLFxuICAgIHBhc3N3b3JkOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxUb2tlblJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlLmZldGNoVG9rZW5Vc2luZ1Bhc3N3b3JkRmxvdyh1c2VySWQsIHBhc3N3b3JkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoIGFjY2Vzc190b2tlbi5cbiAgICovXG4gIHJlZnJlc2hUb2tlbigpOiB2b2lkIHtcbiAgICB0aGlzLm9BdXRoU2VydmljZS5yZWZyZXNoVG9rZW4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXZva2UgYWNjZXNzIHRva2VucyBhbmQgY2xlYXIgdG9rZW5zIGluIGxpYiBzdGF0ZS5cbiAgICovXG4gIHJldm9rZUFuZExvZ291dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlXG4gICAgICAgIC5yZXZva2VUb2tlbkFuZExvZ291dCgpXG4gICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgLy8gd2hlbiB0aGVyZSB3b3VsZCBiZSBzb21lIGtpbmQgb2YgZXJyb3IgZHVyaW5nIHJldm9jYXRpb24gd2UgY2FuJ3QgZG8gYW55dGhpbmcgZWxzZSwgc28gYXQgbGVhc3Qgd2UgbG9nb3V0IHVzZXIuXG4gICAgICAgICAgdGhpcy5vQXV0aFNlcnZpY2UubG9nT3V0KCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRva2VucyBpbiBsaWJyYXJ5IHN0YXRlIChubyByZXZvY2F0aW9uKS5cbiAgICovXG4gIGxvZ291dCgpOiB2b2lkIHtcbiAgICB0aGlzLm9BdXRoU2VydmljZS5sb2dPdXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIE9wZW4gSWQgdG9rZW4uIE1pZ2h0IGJlIGVtcHR5LCB3aGVuIGl0IHdhcyBub3QgcmVxdWVzdGVkIHdpdGggdGhlIGByZXNwb25zZVR5cGVgIGNvbmZpZy5cbiAgICpcbiAgICogQHJldHVybiBpZCB0b2tlblxuICAgKi9cbiAgZ2V0SWRUb2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9BdXRoU2VydmljZS5nZXRJZFRva2VuKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBJbXBsaWNpdCBGbG93IG9yIEF1dGhvcml6YXRpb24gQ29kZSBmbG93cyB3aXRoIHRoZSByZWRpcmVjdCB0byBPQXV0aCBsb2dpbiB1cmwuXG4gICAqL1xuICBpbml0TG9naW5GbG93KCkge1xuICAgIHJldHVybiB0aGlzLm9BdXRoU2VydmljZS5pbml0TG9naW5GbG93KCk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZXMgdG8gbG9naW4gdXNlciBiYXNlZCBvbiBgY29kZWAgb3IgYHRva2VuYCBwcmVzZW50IGluIHRoZSB1cmwuXG4gICAqL1xuICB0cnlMb2dpbigpIHtcbiAgICByZXR1cm4gdGhpcy5vQXV0aFNlcnZpY2UudHJ5TG9naW4oe1xuICAgICAgLy8gV2UgZG9uJ3QgbG9hZCBkaXNjb3ZlcnkgZG9jdW1lbnQsIGJlY2F1c2UgaXQgZG9lc24ndCBjb250YWluIHJldm9rZSBlbmRwb2ludCBpbmZvcm1hdGlvblxuICAgICAgZGlzYWJsZU9BdXRoMlN0YXRlQ2hlY2s6IHRydWUsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==