UNPKG

@spartacus/core

Version:

Spartacus - the core framework

132 lines 13.2 kB
import { Injectable } from '@angular/core'; import { OAuthFlow } from '../models/oauth-flow'; import * as i0 from "@angular/core"; import * as i1 from "../config/auth-config"; import * as i2 from "../../../occ/config/occ-config"; /** * Utility service on top of the authorization config. * Provides handy defaults, when not everything is set in the configuration. * Use this service instead of direct configuration. */ export class AuthConfigService { constructor(authConfig, occConfig) { this.authConfig = authConfig; this.occConfig = occConfig; } /** * Utility to make access to authentication config easier. */ get config() { var _a, _b; return (_b = (_a = this.authConfig) === null || _a === void 0 ? void 0 : _a.authentication) !== null && _b !== void 0 ? _b : {}; } /** * Get client_id * * @return client_id */ getClientId() { var _a; return (_a = this.config.client_id) !== null && _a !== void 0 ? _a : ''; } /** * Get client_secret. OAuth server shouldn't require it from web apps (but Hybris OAuth server requires). * * @return client_secret */ getClientSecret() { var _a; return (_a = this.config.client_secret) !== null && _a !== void 0 ? _a : ''; } /** * Returns base url of the authorization server */ getBaseUrl() { var _a, _b, _c, _d, _e; return ((_a = this.config.baseUrl) !== null && _a !== void 0 ? _a : ((_e = (_d = (_c = (_b = this.occConfig) === null || _b === void 0 ? void 0 : _b.backend) === null || _c === void 0 ? void 0 : _c.occ) === null || _d === void 0 ? void 0 : _d.baseUrl) !== null && _e !== void 0 ? _e : '') + '/authorizationserver'); } /** * Returns endpoint for getting the auth token */ getTokenEndpoint() { var _a; const tokenEndpoint = (_a = this.config.tokenEndpoint) !== null && _a !== void 0 ? _a : ''; return this.prefixEndpoint(tokenEndpoint); } /** * Returns url for redirect to the authorization server to get token/code */ getLoginUrl() { var _a; const loginUrl = (_a = this.config.loginUrl) !== null && _a !== void 0 ? _a : ''; return this.prefixEndpoint(loginUrl); } /** * Returns endpoint for token revocation (both access and refresh token). */ getRevokeEndpoint() { var _a; const revokeEndpoint = (_a = this.config.revokeEndpoint) !== null && _a !== void 0 ? _a : ''; return this.prefixEndpoint(revokeEndpoint); } /** * Returns logout url to redirect to on logout. */ getLogoutUrl() { var _a; const logoutUrl = (_a = this.config.logoutUrl) !== null && _a !== void 0 ? _a : ''; return this.prefixEndpoint(logoutUrl); } /** * Returns userinfo endpoint of the OAuth server. */ getUserinfoEndpoint() { var _a; const userinfoEndpoint = (_a = this.config.userinfoEndpoint) !== null && _a !== void 0 ? _a : ''; return this.prefixEndpoint(userinfoEndpoint); } /** * Returns configuration specific for the angular-oauth2-oidc library. */ getOAuthLibConfig() { var _a; return (_a = this.config.OAuthLibConfig) !== null && _a !== void 0 ? _a : {}; } prefixEndpoint(endpoint) { let url = endpoint; if (!url.startsWith('/')) { url = '/' + url; } return `${this.getBaseUrl()}${url}`; } /** * Returns the type of the OAuth flow based on auth config. * Use when you have to perform particular action only in some of the OAuth flow scenarios. */ getOAuthFlow() { var _a; const responseType = (_a = this.config.OAuthLibConfig) === null || _a === void 0 ? void 0 : _a.responseType; if (responseType) { const types = responseType.split(' '); if (types.includes('code')) { return OAuthFlow.AuthorizationCode; } else if (types.includes('token')) { return OAuthFlow.ImplicitFlow; } else { return OAuthFlow.ResourceOwnerPasswordFlow; } } return OAuthFlow.ResourceOwnerPasswordFlow; } } AuthConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: AuthConfigService, deps: [{ token: i1.AuthConfig }, { token: i2.OccConfig }], target: i0.ɵɵFactoryTarget.Injectable }); AuthConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: AuthConfigService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: AuthConfigService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.AuthConfig }, { type: i2.OccConfig }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2F1dGgvdXNlci1hdXRoL3NlcnZpY2VzL2F1dGgtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFFakQ7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFDWSxVQUFzQixFQUN0QixTQUFvQjtRQURwQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQVc7SUFDN0IsQ0FBQztJQUVKOztPQUVHO0lBQ0gsSUFBWSxNQUFNOztRQUNoQixPQUFPLE1BQUEsTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxjQUFjLG1DQUFJLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVc7O1FBQ2hCLE9BQU8sTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsbUNBQUksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksZUFBZTs7UUFDcEIsT0FBTyxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxtQ0FBSSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVTs7UUFDZixPQUFPLENBQ0wsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sbUNBQ25CLENBQUMsTUFBQSxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxPQUFPLDBDQUFFLEdBQUcsMENBQUUsT0FBTyxtQ0FBSSxFQUFFLENBQUMsR0FBRyxzQkFBc0IsQ0FDdkUsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQjs7UUFDckIsTUFBTSxhQUFhLEdBQUcsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsbUNBQUksRUFBRSxDQUFDO1FBQ3RELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXOztRQUNoQixNQUFNLFFBQVEsR0FBRyxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxtQ0FBSSxFQUFFLENBQUM7UUFDNUMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNJLGlCQUFpQjs7UUFDdEIsTUFBTSxjQUFjLEdBQUcsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsbUNBQUksRUFBRSxDQUFDO1FBQ3hELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxZQUFZOztRQUNqQixNQUFNLFNBQVMsR0FBRyxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxtQ0FBSSxFQUFFLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNJLG1CQUFtQjs7UUFDeEIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLG1DQUFJLEVBQUUsQ0FBQztRQUM1RCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxpQkFBaUI7O1FBQ3RCLE9BQU8sTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsbUNBQUksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFUyxjQUFjLENBQUMsUUFBZ0I7UUFDdkMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1NBQ2pCO1FBQ0QsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksWUFBWTs7UUFDakIsTUFBTSxZQUFZLEdBQUcsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsMENBQUUsWUFBWSxDQUFDO1FBQzlELElBQUksWUFBWSxFQUFFO1lBQ2hCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMxQixPQUFPLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQzthQUNwQztpQkFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ2xDLE9BQU8sU0FBUyxDQUFDLFlBQVksQ0FBQzthQUMvQjtpQkFBTTtnQkFDTCxPQUFPLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQzthQUM1QztTQUNGO1FBQ0QsT0FBTyxTQUFTLENBQUMseUJBQXlCLENBQUM7SUFDN0MsQ0FBQzs7OEdBakhVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9jY0NvbmZpZyB9IGZyb20gJy4uLy4uLy4uL29jYy9jb25maWcvb2NjLWNvbmZpZyc7XG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBBdXRoTGliQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL2F1dGgtY29uZmlnJztcbmltcG9ydCB7IE9BdXRoRmxvdyB9IGZyb20gJy4uL21vZGVscy9vYXV0aC1mbG93JztcblxuLyoqXG4gKiBVdGlsaXR5IHNlcnZpY2Ugb24gdG9wIG9mIHRoZSBhdXRob3JpemF0aW9uIGNvbmZpZy5cbiAqIFByb3ZpZGVzIGhhbmR5IGRlZmF1bHRzLCB3aGVuIG5vdCBldmVyeXRoaW5nIGlzIHNldCBpbiB0aGUgY29uZmlndXJhdGlvbi5cbiAqIFVzZSB0aGlzIHNlcnZpY2UgaW5zdGVhZCBvZiBkaXJlY3QgY29uZmlndXJhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhDb25maWdTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGF1dGhDb25maWc6IEF1dGhDb25maWcsXG4gICAgcHJvdGVjdGVkIG9jY0NvbmZpZzogT2NjQ29uZmlnXG4gICkge31cblxuICAvKipcbiAgICogVXRpbGl0eSB0byBtYWtlIGFjY2VzcyB0byBhdXRoZW50aWNhdGlvbiBjb25maWcgZWFzaWVyLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXQgY29uZmlnKCk6IEF1dGhDb25maWdbJ2F1dGhlbnRpY2F0aW9uJ10ge1xuICAgIHJldHVybiB0aGlzLmF1dGhDb25maWc/LmF1dGhlbnRpY2F0aW9uID8/IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjbGllbnRfaWRcbiAgICpcbiAgICogQHJldHVybiBjbGllbnRfaWRcbiAgICovXG4gIHB1YmxpYyBnZXRDbGllbnRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jbGllbnRfaWQgPz8gJyc7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNsaWVudF9zZWNyZXQuIE9BdXRoIHNlcnZlciBzaG91bGRuJ3QgcmVxdWlyZSBpdCBmcm9tIHdlYiBhcHBzIChidXQgSHlicmlzIE9BdXRoIHNlcnZlciByZXF1aXJlcykuXG4gICAqXG4gICAqIEByZXR1cm4gY2xpZW50X3NlY3JldFxuICAgKi9cbiAgcHVibGljIGdldENsaWVudFNlY3JldCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jbGllbnRfc2VjcmV0ID8/ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYmFzZSB1cmwgb2YgdGhlIGF1dGhvcml6YXRpb24gc2VydmVyXG4gICAqL1xuICBwdWJsaWMgZ2V0QmFzZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmNvbmZpZy5iYXNlVXJsID8/XG4gICAgICAodGhpcy5vY2NDb25maWc/LmJhY2tlbmQ/Lm9jYz8uYmFzZVVybCA/PyAnJykgKyAnL2F1dGhvcml6YXRpb25zZXJ2ZXInXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGVuZHBvaW50IGZvciBnZXR0aW5nIHRoZSBhdXRoIHRva2VuXG4gICAqL1xuICBwdWJsaWMgZ2V0VG9rZW5FbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRva2VuRW5kcG9pbnQgPSB0aGlzLmNvbmZpZy50b2tlbkVuZHBvaW50ID8/ICcnO1xuICAgIHJldHVybiB0aGlzLnByZWZpeEVuZHBvaW50KHRva2VuRW5kcG9pbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdXJsIGZvciByZWRpcmVjdCB0byB0aGUgYXV0aG9yaXphdGlvbiBzZXJ2ZXIgdG8gZ2V0IHRva2VuL2NvZGVcbiAgICovXG4gIHB1YmxpYyBnZXRMb2dpblVybCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxvZ2luVXJsID0gdGhpcy5jb25maWcubG9naW5VcmwgPz8gJyc7XG4gICAgcmV0dXJuIHRoaXMucHJlZml4RW5kcG9pbnQobG9naW5VcmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZW5kcG9pbnQgZm9yIHRva2VuIHJldm9jYXRpb24gKGJvdGggYWNjZXNzIGFuZCByZWZyZXNoIHRva2VuKS5cbiAgICovXG4gIHB1YmxpYyBnZXRSZXZva2VFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJldm9rZUVuZHBvaW50ID0gdGhpcy5jb25maWcucmV2b2tlRW5kcG9pbnQgPz8gJyc7XG4gICAgcmV0dXJuIHRoaXMucHJlZml4RW5kcG9pbnQocmV2b2tlRW5kcG9pbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgbG9nb3V0IHVybCB0byByZWRpcmVjdCB0byBvbiBsb2dvdXQuXG4gICAqL1xuICBwdWJsaWMgZ2V0TG9nb3V0VXJsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbG9nb3V0VXJsID0gdGhpcy5jb25maWcubG9nb3V0VXJsID8/ICcnO1xuICAgIHJldHVybiB0aGlzLnByZWZpeEVuZHBvaW50KGxvZ291dFVybCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB1c2VyaW5mbyBlbmRwb2ludCBvZiB0aGUgT0F1dGggc2VydmVyLlxuICAgKi9cbiAgcHVibGljIGdldFVzZXJpbmZvRW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICBjb25zdCB1c2VyaW5mb0VuZHBvaW50ID0gdGhpcy5jb25maWcudXNlcmluZm9FbmRwb2ludCA/PyAnJztcbiAgICByZXR1cm4gdGhpcy5wcmVmaXhFbmRwb2ludCh1c2VyaW5mb0VuZHBvaW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWMgZm9yIHRoZSBhbmd1bGFyLW9hdXRoMi1vaWRjIGxpYnJhcnkuXG4gICAqL1xuICBwdWJsaWMgZ2V0T0F1dGhMaWJDb25maWcoKTogQXV0aExpYkNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLk9BdXRoTGliQ29uZmlnID8/IHt9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHByZWZpeEVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCB1cmwgPSBlbmRwb2ludDtcbiAgICBpZiAoIXVybC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgIHVybCA9ICcvJyArIHVybDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuZ2V0QmFzZVVybCgpfSR7dXJsfWA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdHlwZSBvZiB0aGUgT0F1dGggZmxvdyBiYXNlZCBvbiBhdXRoIGNvbmZpZy5cbiAgICogVXNlIHdoZW4geW91IGhhdmUgdG8gcGVyZm9ybSBwYXJ0aWN1bGFyIGFjdGlvbiBvbmx5IGluIHNvbWUgb2YgdGhlIE9BdXRoIGZsb3cgc2NlbmFyaW9zLlxuICAgKi9cbiAgcHVibGljIGdldE9BdXRoRmxvdygpOiBPQXV0aEZsb3cge1xuICAgIGNvbnN0IHJlc3BvbnNlVHlwZSA9IHRoaXMuY29uZmlnLk9BdXRoTGliQ29uZmlnPy5yZXNwb25zZVR5cGU7XG4gICAgaWYgKHJlc3BvbnNlVHlwZSkge1xuICAgICAgY29uc3QgdHlwZXMgPSByZXNwb25zZVR5cGUuc3BsaXQoJyAnKTtcbiAgICAgIGlmICh0eXBlcy5pbmNsdWRlcygnY29kZScpKSB7XG4gICAgICAgIHJldHVybiBPQXV0aEZsb3cuQXV0aG9yaXphdGlvbkNvZGU7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVzLmluY2x1ZGVzKCd0b2tlbicpKSB7XG4gICAgICAgIHJldHVybiBPQXV0aEZsb3cuSW1wbGljaXRGbG93O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIE9BdXRoRmxvdy5SZXNvdXJjZU93bmVyUGFzc3dvcmRGbG93O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gT0F1dGhGbG93LlJlc291cmNlT3duZXJQYXNzd29yZEZsb3c7XG4gIH1cbn1cbiJdfQ==