Ajout d'une redirection automatique sur la page "referer" en cas de

perte de session
This commit is contained in:
wpetit 2020-05-19 22:22:37 +02:00
parent 44182fd1cd
commit fbb2b3f8da
4 changed files with 32 additions and 0 deletions

View File

@ -1,9 +1,11 @@
import { GiteaUnauthorizedError } from "../../util/gitea"; import { GiteaUnauthorizedError } from "../../util/gitea";
import { put } from 'redux-saga/effects'; import { put } from 'redux-saga/effects';
import { logout } from '../actions/logout'; import { logout } from '../actions/logout';
import { saveReferer } from "../../util/referer";
export function* failuresSaga(action) { export function* failuresSaga(action) {
if (action.error instanceof GiteaUnauthorizedError) { if (action.error instanceof GiteaUnauthorizedError) {
saveReferer();
yield put(logout()); yield put(logout());
} }
} }

View File

@ -0,0 +1,9 @@
import { hasReferer, getReferer, clearReferer } from '../../util/referer';
export function* navigateToRefererSaga() {
if (!hasReferer()) return;
const referer = getReferer();
console.log("Redirecting to referer", referer);
clearReferer();
window.location.hash = referer;
}

View File

@ -10,9 +10,11 @@ import { LOGOUT_REQUEST, LOGOUT_SUCCESS } from '../actions/logout';
import { logoutSaga, logoutSuccessSaga } from './logout'; import { logoutSaga, logoutSuccessSaga } from './logout';
import { BUILD_KANBOARD_REQUEST, MOVE_CARD } from '../actions/kanboards'; import { BUILD_KANBOARD_REQUEST, MOVE_CARD } from '../actions/kanboards';
import { buildKanboardSaga, moveCardSaga, refreshKanboardSaga } from './kanboards'; import { buildKanboardSaga, moveCardSaga, refreshKanboardSaga } from './kanboards';
import { navigateToRefererSaga } from './referer';
export function* rootSaga() { export function* rootSaga() {
yield all([ yield all([
navigateToRefererSaga(),
takeEvery(patternFromRegExp(/^.*_FAILURE/), failuresSaga), takeEvery(patternFromRegExp(/^.*_FAILURE/), failuresSaga),
takeLatest(FETCH_BOARDS_REQUEST, fetchBoardsSaga), takeLatest(FETCH_BOARDS_REQUEST, fetchBoardsSaga),
takeLatest(BUILD_KANBOARD_REQUEST, buildKanboardSaga), takeLatest(BUILD_KANBOARD_REQUEST, buildKanboardSaga),

View File

@ -0,0 +1,19 @@
const localStorage = window.localStorage;
const refererKey = 'referer';
export function getReferer() {
return localStorage.getItem(refererKey);
}
export function saveReferer() {
console.log("Saving referer", window.location.hash);
localStorage.setItem(refererKey, window.location.hash);
}
export function hasReferer() {
return !!getReferer();
}
export function clearReferer() {
localStorage.removeItem(refererKey);
}