fix: use local storage for oauth (#1421)

the angular-oauth2-oidc library uses session storage by default. This
means that once you've closed the tab, the info is lost and you must log
in again. This change switches it to local storage so that it can be
persisted.

Fixes #1379
This commit is contained in:
Taylor Southwick
2025-10-23 12:24:48 -07:00
committed by GitHub
parent d94d69b90a
commit 9d08b6effa

View File

@@ -13,9 +13,14 @@ import Aura from '@primeng/themes/aura';
import {routes} from './app/app.routes'; import {routes} from './app/app.routes';
import {AuthInterceptorService} from './app/core/security/auth-interceptor.service'; import {AuthInterceptorService} from './app/core/security/auth-interceptor.service';
import {AuthService, websocketInitializer} from './app/shared/service/auth.service'; import {AuthService, websocketInitializer} from './app/shared/service/auth.service';
import {provideOAuthClient} from 'angular-oauth2-oidc'; import {OAuthStorage, provideOAuthClient} from 'angular-oauth2-oidc';
import {APP_INITIALIZER, provideAppInitializer} from '@angular/core'; import {APP_INITIALIZER, provideAppInitializer} from '@angular/core';
import {initializeAuthFactory} from './app/core/security/auth-initializer'; import {initializeAuthFactory} from './app/core/security/auth-initializer';
export function storageFactory(): OAuthStorage {
return localStorage;
}
import {StartupService} from './app/shared/service/startup.service'; import {StartupService} from './app/shared/service/startup.service';
import {provideCharts, withDefaultRegisterables} from 'ng2-charts'; import {provideCharts, withDefaultRegisterables} from 'ng2-charts';
import ChartDataLabels from 'chartjs-plugin-datalabels'; import ChartDataLabels from 'chartjs-plugin-datalabels';
@@ -37,6 +42,11 @@ bootstrapApplication(AppComponent, {
}, },
provideHttpClient(withInterceptors([AuthInterceptorService])), provideHttpClient(withInterceptors([AuthInterceptorService])),
provideOAuthClient(), provideOAuthClient(),
// Configure OAuth to use localStorage instead of sessionStorage
{
provide: OAuthStorage,
useFactory: storageFactory
},
provideAppInitializer(initializeAuthFactory()), provideAppInitializer(initializeAuthFactory()),
provideRouter(routes), provideRouter(routes),
DialogService, DialogService,