Fix: persist SSO auth token on root route loader (#12784)

### What problem does this PR solve?

This PR fixes SSO/OIDC login persistence after the Vite migration
#12568. Because wrappers are ignored by React Router, the OAuth callback
never stored the auth token in localStorage, causing auth to only work
while ?auth= stayed in the URL. We move that logic into a route loader
and remove the Bearer prefix for the signed token so the backend accepts
it.

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)

Contribution during my time at RAGcon GmbH.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This commit is contained in:
Levi
2026-02-12 03:09:35 +01:00
committed by GitHub
parent 67937a668e
commit 4b50b8c579
2 changed files with 13 additions and 5 deletions

View File

@ -1,7 +1,8 @@
import { lazy, memo, Suspense } from 'react';
import { createBrowserRouter, Navigate, type RouteObject } from 'react-router';
import { createBrowserRouter, Navigate, redirect, type RouteObject } from 'react-router';
import FallbackComponent from './components/fallback-component';
import { IS_ENTERPRISE } from './pages/admin/utils';
import authorizationUtil from './utils/authorization-util';
export enum Routes {
Root = '/',
@ -141,7 +142,16 @@ const routeConfigOptions = [
path: Routes.Root,
layout: false,
Component: () => import('@/layouts/next'),
wrappers: ['@/wrappers/auth'],
loader: ({ request }) => {
const url = new URL(request.url);
const auth = url.searchParams.get('auth');
if (auth) {
authorizationUtil.setAuthorization(auth);
url.searchParams.delete('auth');
return redirect(`${url.pathname}${url.search}`);
}
return null;
},
children: [
{
path: Routes.Root,

View File

@ -49,9 +49,7 @@ const storage = {
export const getAuthorization = () => {
const auth = getSearchValue('auth');
const authorization = auth
? 'Bearer ' + auth
: storage.getAuthorization() || '';
const authorization = auth ? auth : storage.getAuthorization() || '';
return authorization;
};