@spartacus/core
Version:
Spartacus - the core framework
74 lines • 9.97 kB
JavaScript
import { CommonModule } from '@angular/common';
import { APP_INITIALIZER, NgModule } from '@angular/core';
import { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';
import { switchMap } from 'rxjs/operators';
import { ConfigInitializerService } from '../../config/config-initializer/config-initializer.service';
import { provideDefaultConfig } from '../../config/config-providers';
import { provideConfigValidator } from '../../config/config-validator/config-validator';
import { baseUrlConfigValidator } from './config/base-url-config-validator';
import { defaultAuthConfig } from './config/default-auth-config';
import { UserAuthEventModule } from './events/user-auth-event.module';
import { AuthService } from './facade/auth.service';
import { interceptors } from './http-interceptors/index';
import { AuthStatePersistenceService } from './services/auth-state-persistence.service';
import { AuthStorageService } from './services/auth-storage.service';
import * as i0 from "@angular/core";
import * as i1 from "angular-oauth2-oidc";
/**
* Initialize the check for `token` or `code` in the url returned from the OAuth server.
*/
export function checkOAuthParamsInUrl(authService, configInit) {
const result = () => configInit
.getStable()
.pipe(switchMap(() =>
// Wait for stable config is used, because with auth redirect would kick so quickly that the page would not be loaded correctly
authService.checkOAuthParamsInUrl()))
.toPromise();
return result;
}
export function authStatePersistenceFactory(authStatePersistenceService) {
const result = () => authStatePersistenceService.initSync();
return result;
}
/**
* Authentication module for a user. Handlers requests for logged in users,
* provides authorization services and storage for tokens.
*/
export class UserAuthModule {
static forRoot() {
return {
ngModule: UserAuthModule,
providers: [
provideDefaultConfig(defaultAuthConfig),
provideConfigValidator(baseUrlConfigValidator),
...interceptors,
{
provide: OAuthStorage,
useExisting: AuthStorageService,
},
{
provide: APP_INITIALIZER,
useFactory: authStatePersistenceFactory,
deps: [AuthStatePersistenceService],
multi: true,
},
{
provide: APP_INITIALIZER,
useFactory: checkOAuthParamsInUrl,
deps: [AuthService, ConfigInitializerService],
multi: true,
},
],
};
}
}
UserAuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: UserAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
UserAuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: UserAuthModule, imports: [CommonModule, i1.OAuthModule, UserAuthEventModule] });
UserAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: UserAuthModule, imports: [[CommonModule, OAuthModule.forRoot(), UserAuthEventModule]] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: UserAuthModule, decorators: [{
type: NgModule,
args: [{
imports: [CommonModule, OAuthModule.forRoot(), UserAuthEventModule],
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hdXRoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2F1dGgvdXNlci1hdXRoL3VzZXItYXV0aC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFFckU7O0dBRUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLFdBQXdCLEVBQ3hCLFVBQW9DO0lBRXBDLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUNsQixVQUFVO1NBQ1AsU0FBUyxFQUFFO1NBQ1gsSUFBSSxDQUNILFNBQVMsQ0FBQyxHQUFHLEVBQUU7SUFDYiwrSEFBK0g7SUFDL0gsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQ3BDLENBQ0Y7U0FDQSxTQUFTLEVBQUUsQ0FBQztJQUVqQixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUN6QywyQkFBd0Q7SUFFeEQsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRTtnQkFDVCxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDdkMsc0JBQXNCLENBQUMsc0JBQXNCLENBQUM7Z0JBQzlDLEdBQUcsWUFBWTtnQkFDZjtvQkFDRSxPQUFPLEVBQUUsWUFBWTtvQkFDckIsV0FBVyxFQUFFLGtCQUFrQjtpQkFDaEM7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLFVBQVUsRUFBRSwyQkFBMkI7b0JBQ3ZDLElBQUksRUFBRSxDQUFDLDJCQUEyQixDQUFDO29CQUNuQyxLQUFLLEVBQUUsSUFBSTtpQkFDWjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsZUFBZTtvQkFDeEIsVUFBVSxFQUFFLHFCQUFxQjtvQkFDakMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLHdCQUF3QixDQUFDO29CQUM3QyxLQUFLLEVBQUUsSUFBSTtpQkFDWjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7OzJHQTFCVSxjQUFjOzRHQUFkLGNBQWMsWUFGZixZQUFZLGtCQUF5QixtQkFBbUI7NEdBRXZELGNBQWMsWUFGaEIsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLG1CQUFtQixDQUFDOzJGQUV4RCxjQUFjO2tCQUgxQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsbUJBQW1CLENBQUM7aUJBQ3BFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9BdXRoTW9kdWxlLCBPQXV0aFN0b3JhZ2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbmZpZ0luaXRpYWxpemVyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbmZpZy9jb25maWctaW5pdGlhbGl6ZXIvY29uZmlnLWluaXRpYWxpemVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgcHJvdmlkZURlZmF1bHRDb25maWcgfSBmcm9tICcuLi8uLi9jb25maWcvY29uZmlnLXByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlQ29uZmlnVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vY29uZmlnL2NvbmZpZy12YWxpZGF0b3IvY29uZmlnLXZhbGlkYXRvcic7XG5pbXBvcnQgeyBiYXNlVXJsQ29uZmlnVmFsaWRhdG9yIH0gZnJvbSAnLi9jb25maWcvYmFzZS11cmwtY29uZmlnLXZhbGlkYXRvcic7XG5pbXBvcnQgeyBkZWZhdWx0QXV0aENvbmZpZyB9IGZyb20gJy4vY29uZmlnL2RlZmF1bHQtYXV0aC1jb25maWcnO1xuaW1wb3J0IHsgVXNlckF1dGhFdmVudE1vZHVsZSB9IGZyb20gJy4vZXZlbnRzL3VzZXItYXV0aC1ldmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2ZhY2FkZS9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgaW50ZXJjZXB0b3JzIH0gZnJvbSAnLi9odHRwLWludGVyY2VwdG9ycy9pbmRleCc7XG5pbXBvcnQgeyBBdXRoU3RhdGVQZXJzaXN0ZW5jZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2F1dGgtc3RhdGUtcGVyc2lzdGVuY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2F1dGgtc3RvcmFnZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBJbml0aWFsaXplIHRoZSBjaGVjayBmb3IgYHRva2VuYCBvciBgY29kZWAgaW4gdGhlIHVybCByZXR1cm5lZCBmcm9tIHRoZSBPQXV0aCBzZXJ2ZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja09BdXRoUGFyYW1zSW5VcmwoXG4gIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgY29uZmlnSW5pdDogQ29uZmlnSW5pdGlhbGl6ZXJTZXJ2aWNlXG4pOiAoKSA9PiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmVzdWx0ID0gKCkgPT5cbiAgICBjb25maWdJbml0XG4gICAgICAuZ2V0U3RhYmxlKClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAvLyBXYWl0IGZvciBzdGFibGUgY29uZmlnIGlzIHVzZWQsIGJlY2F1c2Ugd2l0aCBhdXRoIHJlZGlyZWN0IHdvdWxkIGtpY2sgc28gcXVpY2tseSB0aGF0IHRoZSBwYWdlIHdvdWxkIG5vdCBiZSBsb2FkZWQgY29ycmVjdGx5XG4gICAgICAgICAgYXV0aFNlcnZpY2UuY2hlY2tPQXV0aFBhcmFtc0luVXJsKClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdXRoU3RhdGVQZXJzaXN0ZW5jZUZhY3RvcnkoXG4gIGF1dGhTdGF0ZVBlcnNpc3RlbmNlU2VydmljZTogQXV0aFN0YXRlUGVyc2lzdGVuY2VTZXJ2aWNlXG4pIHtcbiAgY29uc3QgcmVzdWx0ID0gKCkgPT4gYXV0aFN0YXRlUGVyc2lzdGVuY2VTZXJ2aWNlLmluaXRTeW5jKCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQXV0aGVudGljYXRpb24gbW9kdWxlIGZvciBhIHVzZXIuIEhhbmRsZXJzIHJlcXVlc3RzIGZvciBsb2dnZWQgaW4gdXNlcnMsXG4gKiBwcm92aWRlcyBhdXRob3JpemF0aW9uIHNlcnZpY2VzIGFuZCBzdG9yYWdlIGZvciB0b2tlbnMuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE9BdXRoTW9kdWxlLmZvclJvb3QoKSwgVXNlckF1dGhFdmVudE1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJBdXRoTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxVc2VyQXV0aE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogVXNlckF1dGhNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZURlZmF1bHRDb25maWcoZGVmYXVsdEF1dGhDb25maWcpLFxuICAgICAgICBwcm92aWRlQ29uZmlnVmFsaWRhdG9yKGJhc2VVcmxDb25maWdWYWxpZGF0b3IpLFxuICAgICAgICAuLi5pbnRlcmNlcHRvcnMsXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBPQXV0aFN0b3JhZ2UsXG4gICAgICAgICAgdXNlRXhpc3Rpbmc6IEF1dGhTdG9yYWdlU2VydmljZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgICAgICB1c2VGYWN0b3J5OiBhdXRoU3RhdGVQZXJzaXN0ZW5jZUZhY3RvcnksXG4gICAgICAgICAgZGVwczogW0F1dGhTdGF0ZVBlcnNpc3RlbmNlU2VydmljZV0sXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgICAgdXNlRmFjdG9yeTogY2hlY2tPQXV0aFBhcmFtc0luVXJsLFxuICAgICAgICAgIGRlcHM6IFtBdXRoU2VydmljZSwgQ29uZmlnSW5pdGlhbGl6ZXJTZXJ2aWNlXSxcbiAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIl19