Lucas BEE e71c5bfb84 Add subtitles in frontend
Update backend to match polochon
2017-05-29 14:15:52 +02:00

60 lines
1.5 KiB
JavaScript

import jwtDecode from 'jwt-decode'
import Cookies from 'universal-cookie'
const defaultState = {
userLoading: false,
username: "",
isAdmin: false,
isLogged: false,
polochonToken: "",
polochonUrl: "",
};
export default function userStore(state = defaultState, action) {
switch (action.type) {
case 'USER_LOGIN_PENDING':
return Object.assign({}, state, {
userLoading: true,
})
case 'USER_LOGIN_FULFILLED':
if (action.payload.response.status === "error") {
return logoutUser(state)
}
return updateFromToken(state, action.payload.response.data.token)
case 'USER_SET_TOKEN':
return updateFromToken(state, action.payload.token)
case 'USER_LOGOUT':
return logoutUser(state)
case 'GET_USER_FULFILLED':
return Object.assign({}, state, {
polochonToken: action.payload.response.data.token,
polochonUrl: action.payload.response.data.url,
})
default:
return state;
}
}
function logoutUser(state) {
localStorage.removeItem('token');
const cookies = new Cookies();
cookies.remove('token');
return Object.assign({}, state, defaultState)
}
function updateFromToken(state, token) {
const decodedToken = jwtDecode(token);
localStorage.setItem('token', token);
const cookies = new Cookies();
cookies.set('token', token);
return Object.assign({}, state, {
userLoading: false,
isLogged: true,
isAdmin: decodedToken.isAdmin,
username: decodedToken.username,
})
}