@spartacus/core
Version:
Spartacus - the core framework
132 lines • 13.2 kB
JavaScript
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==