Skip to content
Snippets Groups Projects
Unverified Commit e02e1c18 authored by Tom Robinson's avatar Tom Robinson
Browse files

Fix auth failure loop when session expires. Resolves #4660

parent 80f4b6d1
No related branches found
No related tags found
No related merge requests found
......@@ -16,6 +16,7 @@ import { getStore } from './store'
import { refreshSiteSettings } from "metabase/redux/settings";
import { setErrorPage } from "metabase/redux/app";
import { clearCurrentUser } from "metabase/redux/user";
import { Router, browserHistory } from "react-router";
import { push, syncHistoryWithStore } from 'react-router-redux'
......@@ -64,6 +65,7 @@ function _init(reducers, getRoutes, callback) {
if (url === "/api/user/current") {
return
}
store.dispatch(clearCurrentUser());
store.dispatch(push("/auth/login"));
});
......
......@@ -6,7 +6,8 @@ import { CLOSE_QB_NEWB_MODAL } from "metabase/query_builder/actions";
import { UserApi } from "metabase/services";
export const refreshCurrentUser = createAction("REFRESH_CURRENT_USER", () => {
export const REFRESH_CURRENT_USER = "metabase/user/REFRESH_CURRENT_USER";
export const refreshCurrentUser = createAction(REFRESH_CURRENT_USER, () => {
try {
return UserApi.current();
} catch (e) {
......@@ -14,7 +15,8 @@ export const refreshCurrentUser = createAction("REFRESH_CURRENT_USER", () => {
}
});
export const loadCurrentUser = createThunkAction("LOAD_CURRENT_USER", () =>
export const LOAD_CURRENT_USER = "metabase/user/LOAD_CURRENT_USER";
export const loadCurrentUser = createThunkAction(LOAD_CURRENT_USER, () =>
async (dispatch, getState) => {
if (!getState().currentUser) {
await dispatch(refreshCurrentUser());
......@@ -22,8 +24,12 @@ export const loadCurrentUser = createThunkAction("LOAD_CURRENT_USER", () =>
}
)
export const CLEAR_CURRENT_USER = "metabase/user/CLEAR_CURRENT_USER"
export const clearCurrentUser = createAction(CLEAR_CURRENT_USER)
export const currentUser = handleActions({
["REFRESH_CURRENT_USER"]: { next: (state, { payload }) => payload },
["AUTH_LOGOUT"]: { next: (state, { payload }) => null },
[CLEAR_CURRENT_USER]: { next: (state, payload) => null },
[REFRESH_CURRENT_USER]: { next: (state, { payload }) => payload },
[CLEAR_CURRENT_USER]: { next: (state, { payload }) => null },
[CLOSE_QB_NEWB_MODAL]: { next: (state, { payload }) => ({ ...state, is_qbnewb: false }) },
}, null);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment