Skip to content

Commit 041dcbf

Browse files
committed
Fixing bug with expired token cookie.
1 parent 5458948 commit 041dcbf

2 files changed

Lines changed: 19 additions & 3 deletions

File tree

src/redux/middleware/authMiddleware.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { setLang } from '../modules/app.js';
88
import { CALL_API } from './apiMiddleware.js';
99
import { safeGet, canUseDOM } from '../../helpers/common.js';
1010
import { getConfigVar } from '../../helpers/config.js';
11+
import { decode, isTokenValid } from '../helpers/token';
1112

1213
const PERSISTENT_TOKENS_KEY_PREFIX = getConfigVar('PERSISTENT_TOKENS_KEY_PREFIX') || 'recodex';
1314

@@ -67,6 +68,19 @@ export const getToken = () => {
6768
return null;
6869
};
6970

71+
const checkAccessTokenCookie = token => {
72+
const cookieToken = cookies.get(TOKEN_COOKIES_KEY);
73+
const decodedCookieToken = cookieToken && decode(cookieToken);
74+
if (!decodedCookieToken || !isTokenValid(decodedCookieToken)) {
75+
const decodedToken = token && decode(token);
76+
if (decodedToken && isTokenValid(decodedToken)) {
77+
storeToken(token);
78+
} else {
79+
removeToken();
80+
}
81+
}
82+
};
83+
7084
/**
7185
* Store instance ID to both local storage and cookies.
7286
*/
@@ -155,6 +169,8 @@ const middleware = store => next => action => {
155169
}
156170
}
157171

172+
checkAccessTokenCookie(action.request.accessToken);
173+
158174
break;
159175
}
160176

src/redux/modules/auth.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ export const selectInstance = createAction(actionTypes.SELECT_INSTANCE, instance
139139

140140
/**
141141
* Authentication reducer.
142-
* @param {string} accessToken An access token to initialise the reducer
143-
* @return {function} The initialised reducer
142+
* @param {string} accessToken An access token to initialize the reducer
143+
* @return {function} The initialized reducer
144144
*/
145145
const auth = (accessToken, instanceId, now = Date.now()) => {
146146
const decodedToken = decodeAndValidateAccessToken(accessToken, now);
@@ -168,7 +168,7 @@ const auth = (accessToken, instanceId, now = Date.now()) => {
168168

169169
[actionTypes.LOGIN_FULFILLED]: (state, { payload: { accessToken, user }, meta: { service, popupWindow } }) => {
170170
closeAuthPopupWindow(popupWindow);
171-
return state.getIn(['status', service]) === statusTypes.LOGGING_IN // this should prevent re-login, when explicit logout ocurred whilst refreshing token
171+
return state.getIn(['status', service]) === statusTypes.LOGGING_IN // this should prevent re-login, when explicit logout occurred whilst refreshing token
172172
? state
173173
.setIn(['status', service], statusTypes.LOGGED_IN)
174174
.deleteIn(['errors', service])

0 commit comments

Comments
 (0)