X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/06d87a1bfa835b10193b9ecf87f62f7a707d55fa..becf93a5f9d1f7d96a3ce868c9b70c3d0094cf45:/src/store/store.ts diff --git a/src/store/store.ts b/src/store/store.ts index 030b657662..517368aa43 100644 --- a/src/store/store.ts +++ b/src/store/store.ts @@ -6,6 +6,7 @@ import { createStore, applyMiddleware, compose, Middleware, combineReducers, Sto import { routerMiddleware, routerReducer } from "react-router-redux"; import thunkMiddleware from 'redux-thunk'; import { History } from "history"; +import { handleRedirects } from '../common/redirect-to'; import { authReducer } from "./auth/auth-reducer"; import { authMiddleware } from "./auth/auth-middleware"; @@ -68,6 +69,7 @@ import { ownerNameReducer } from '~/store/owner-name/owner-name-reducer'; import { SubprocessMiddlewareService } from '~/store/subprocess-panel/subprocess-panel-middleware-service'; import { SUBPROCESS_PANEL_ID } from '~/store/subprocess-panel/subprocess-panel-actions'; import { ALL_PROCESSES_PANEL_ID } from './all-processes-panel/all-processes-panel-action'; +import { Config } from '~/common/config'; const composeEnhancers = (process.env.NODE_ENV === 'development' && @@ -79,7 +81,7 @@ export type RootState = ReturnType>; export type RootStore = Store & { dispatch: Dispatch }; -export function configureStore(history: History, services: ServiceRepository): RootStore { +export function configureStore(history: History, services: ServiceRepository, config: Config): RootStore { const rootReducer = createRootReducer(services); const projectPanelMiddleware = dataExplorerMiddleware( @@ -130,6 +132,15 @@ export function configureStore(history: History, services: ServiceRepository): R const subprocessMiddleware = dataExplorerMiddleware( new SubprocessMiddlewareService(services, SUBPROCESS_PANEL_ID) ); + const redirectToMiddleware = (store: any) => (next: any) => (action: any) => { + const state = store.getState(); + + if (state.auth && state.auth.apiToken) { + handleRedirects(state.auth.apiToken, config); + } + + return next(action); + }; const middlewares: Middleware[] = [ routerMiddleware(history), @@ -150,9 +161,10 @@ export function configureStore(history: History, services: ServiceRepository): R apiClientAuthorizationMiddlewareService, publicFavoritesMiddleware, collectionsContentAddress, - subprocessMiddleware + subprocessMiddleware, ]; - const enhancer = composeEnhancers(applyMiddleware(...middlewares)); + + const enhancer = composeEnhancers(applyMiddleware(redirectToMiddleware, ...middlewares)); return createStore(rootReducer, enhancer); }