Make authstorage configurable
This commit is contained in:
parent
e8845a092a
commit
3f27662e3f
@ -91,7 +91,7 @@ export class AppCommonServiceModule {
|
||||
{
|
||||
provide: APP_INITIALIZER,
|
||||
useFactory: appConfigFactory,
|
||||
deps: [Injector, AppConfig, OAuthService,AuthConfigFactory],
|
||||
deps: [Injector, AppConfig, OAuthService,AuthConfigFactory,OAuthStorage],
|
||||
multi: true
|
||||
},
|
||||
{
|
||||
|
@ -41,6 +41,7 @@ import {IUser} from './models/user';
|
||||
import * as commonActions from './actions/app-common.actions';
|
||||
import * as commonReducers from './reducers/app-common.reducer';
|
||||
import * as commonEffects from './effects/app-common.effects';
|
||||
import { SecureOAuthStorage} from './shared/secureOAuthStorage';
|
||||
|
||||
export {
|
||||
SafePipe,
|
||||
@ -67,7 +68,8 @@ export {
|
||||
commonReducers,
|
||||
IAuthconfigFactory,
|
||||
AuthConfigFactory,
|
||||
MenuBackgroundComponent
|
||||
MenuBackgroundComponent,
|
||||
SecureOAuthStorage
|
||||
};
|
||||
|
||||
@NgModule({
|
||||
|
@ -1,12 +1,13 @@
|
||||
import { Injector } from '@angular/core';
|
||||
import { Location} from '@angular/common';
|
||||
import { Router,UrlSerializer } from '@angular/router';
|
||||
import { AuthConfig, OAuthService, JwksValidationHandler, OAuthErrorEvent } from 'angular-oauth2-oidc';
|
||||
import { AuthConfig, OAuthService, JwksValidationHandler, OAuthErrorEvent, OAuthStorage } from 'angular-oauth2-oidc';
|
||||
import { AppConfig } from "./app.config";
|
||||
import { IAuthconfigFactory } from './authconfigFactory';
|
||||
|
||||
|
||||
export function appConfigFactory(injector:Injector, appConfig: AppConfig, oauthService: OAuthService, authconfigFactory:IAuthconfigFactory): () => Promise<any> {
|
||||
|
||||
export function appConfigFactory(injector:Injector, appConfig: AppConfig, oauthService: OAuthService, authconfigFactory:IAuthconfigFactory,authStorage:OAuthStorage): () => Promise<any> {
|
||||
return (): Promise<any> => {
|
||||
return appConfig.load().then(() => {
|
||||
oauthService.events.subscribe((event) => {
|
||||
@ -22,7 +23,7 @@ export function appConfigFactory(injector:Injector, appConfig: AppConfig, oauthS
|
||||
}
|
||||
});
|
||||
oauthService.configure(authconfigFactory.getAuthConfig(appConfig));
|
||||
oauthService.setStorage(localStorage);
|
||||
oauthService.setStorage(authStorage);
|
||||
oauthService.tokenValidationHandler = new JwksValidationHandler();
|
||||
oauthService.tokenValidationHandler.validateAtHash = function () {
|
||||
return new Promise<boolean>((res) => { res(true); })
|
||||
|
36
projects/common/src/fm/shared/secureOAuthStorage.ts
Normal file
36
projects/common/src/fm/shared/secureOAuthStorage.ts
Normal file
@ -0,0 +1,36 @@
|
||||
import {OAuthStorage} from 'angular-oauth2-oidc';
|
||||
import {Inject, Injectable} from '@angular/core';
|
||||
|
||||
@Injectable()
|
||||
export class SecureOAuthStorage extends OAuthStorage {
|
||||
private storage = {};
|
||||
|
||||
secureKey(key:string): boolean {
|
||||
if(key == "nonce") return false;
|
||||
if(key == "PKCI_verifier") return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
getItem(key: string): string {
|
||||
if(this.secureKey(key)) {
|
||||
return this.storage[key];
|
||||
} else {
|
||||
return window.sessionStorage.getItem(key);
|
||||
}
|
||||
|
||||
};
|
||||
removeItem(key: string): void {
|
||||
if(this.secureKey(key)) {
|
||||
delete this.storage[key];
|
||||
} else {
|
||||
window.sessionStorage.removeItem(key);
|
||||
}
|
||||
}
|
||||
setItem(key: string, data: string): void {
|
||||
if(this.secureKey(key)) {
|
||||
this.storage[key]=data;
|
||||
} else {
|
||||
window.sessionStorage.setItem(key,data);
|
||||
}
|
||||
}
|
||||
}
|
@ -18,8 +18,8 @@ import { StoreRouterConnectingModule} from '@ngrx/router-store';
|
||||
import {AppRoutingModule} from './app-routing.module';
|
||||
import { LogoComponent } from './logo/logo.component';
|
||||
import { MenuComponent } from './menu/menu.component';
|
||||
import { LocalAuthconfigFactory} from './localAuthconfigFactory';
|
||||
import { AuthConfig } from 'angular-oauth2-oidc';
|
||||
import { SecureOAuthStorage} from '@farmmaps/common';
|
||||
import { OAuthStorage } from 'angular-oauth2-oidc';
|
||||
|
||||
export const BOOTSTRAP_EFFECTS = new InjectionToken('Bootstrap Effects');
|
||||
|
||||
@ -62,7 +62,11 @@ export function provideBootstrapEffects(effects: Type<any>[]) {
|
||||
EffectsModule.forRoot([])
|
||||
],
|
||||
providers: [
|
||||
AuthConfigFactory
|
||||
AuthConfigFactory,
|
||||
{
|
||||
provide:OAuthStorage,
|
||||
useClass:SecureOAuthStorage
|
||||
}
|
||||
// {
|
||||
// provide:AuthConfigFactory,
|
||||
// useClass:LocalAuthconfigFactory
|
||||
|
Loading…
Reference in New Issue
Block a user