mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-11 07:55:47 +01:00
reset the redux state if the token is expired and the user still uses the web ui
This commit is contained in:
@@ -24,14 +24,14 @@
|
||||
|
||||
import thunk from "redux-thunk";
|
||||
import logger from "redux-logger";
|
||||
import { applyMiddleware, combineReducers, compose, createStore } from "redux";
|
||||
import { AnyAction, applyMiddleware, combineReducers, compose, createStore } from "redux";
|
||||
import users from "./users/modules/users";
|
||||
import repos from "./repos/modules/repos";
|
||||
import repositoryTypes from "./repos/modules/repositoryTypes";
|
||||
import changesets from "./repos/modules/changesets";
|
||||
import sources from "./repos/sources/modules/sources";
|
||||
import groups from "./groups/modules/groups";
|
||||
import auth from "./modules/auth";
|
||||
import auth, { isAuthenticated } from "./modules/auth";
|
||||
import pending from "./modules/pending";
|
||||
import failure from "./modules/failure";
|
||||
import permissions from "./repos/permissions/modules/permissions";
|
||||
@@ -40,13 +40,15 @@ import roles from "./admin/roles/modules/roles";
|
||||
import namespaceStrategies from "./admin/modules/namespaceStrategies";
|
||||
import indexResources from "./modules/indexResource";
|
||||
import plugins from "./admin/plugins/modules/plugins";
|
||||
import { apiClient } from "@scm-manager/ui-components";
|
||||
|
||||
import branches from "./repos/branches/modules/branches";
|
||||
import { UnauthorizedError } from "@scm-manager/ui-components/src";
|
||||
|
||||
function createReduxStore() {
|
||||
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
|
||||
|
||||
const reducer = combineReducers({
|
||||
const appReducer = combineReducers({
|
||||
pending,
|
||||
failure,
|
||||
indexResources,
|
||||
@@ -65,7 +67,28 @@ function createReduxStore() {
|
||||
plugins
|
||||
});
|
||||
|
||||
return createStore(reducer, composeEnhancers(applyMiddleware(thunk, logger)));
|
||||
const reducer = (state: any, action: AnyAction) => {
|
||||
console.log(action.type, state?.tokenExpired);
|
||||
if (state?.tokenExpired && action.type.indexOf("FAILURE") === -1) {
|
||||
console.log("reset state");
|
||||
return appReducer({}, action);
|
||||
}
|
||||
|
||||
if (action.type === "API_CLIENT_UNAUTHORIZED" && isAuthenticated(state)) {
|
||||
return { ...state, tokenExpired: true };
|
||||
}
|
||||
|
||||
return { ...appReducer(state, action), tokenExpired: state?.tokenExpired };
|
||||
};
|
||||
|
||||
const store = createStore(reducer, composeEnhancers(applyMiddleware(thunk, logger)));
|
||||
apiClient.onError(error => {
|
||||
if (error instanceof UnauthorizedError) {
|
||||
store.dispatch({ type: "API_CLIENT_UNAUTHORIZED", error });
|
||||
}
|
||||
});
|
||||
|
||||
return store;
|
||||
}
|
||||
|
||||
export default createReduxStore;
|
||||
|
||||
Reference in New Issue
Block a user