load user, if valid token exists

This commit is contained in:
Delucse 2020-12-03 15:38:47 +01:00
parent 80fd112658
commit 31dbda57df
3 changed files with 57 additions and 51 deletions

View File

@ -1,10 +1,11 @@
import React from 'react'; import React, { Component } from 'react';
import { BrowserRouter as Router } from 'react-router-dom'; import { BrowserRouter as Router } from 'react-router-dom';
import { createBrowserHistory } from "history"; import { createBrowserHistory } from "history";
import { Provider } from 'react-redux'; import { Provider } from 'react-redux';
import store from './store'; import store from './store';
import { loadUser } from './actions/authActions';
import './App.css'; import './App.css';
@ -27,10 +28,14 @@ const theme = createMuiTheme({
} }
}); });
const customHistory = createBrowserHistory(); class App extends Component {
componentDidMount(){
store.dispatch(loadUser());
}
function App() { render() {
const customHistory = createBrowserHistory();
return ( return (
<ThemeProvider theme={theme}> <ThemeProvider theme={theme}>
<Provider store={store}> <Provider store={store}>
@ -45,6 +50,7 @@ function App() {
</Provider> </Provider>
</ThemeProvider> </ThemeProvider>
); );
}
} }
export default App; export default App;

View File

@ -4,36 +4,36 @@ import axios from 'axios';
import { returnErrors, returnSuccess } from './messageActions' import { returnErrors, returnSuccess } from './messageActions'
// // Check token & load user // Check token & load user
// export const loadUser = () => (dispatch) => { export const loadUser = () => (dispatch) => {
// // user loading // user loading
// dispatch({ dispatch({
// type: USER_LOADING type: USER_LOADING
// }); });
// const config = { const config = {
// success: res => { success: res => {
// dispatch({ dispatch({
// type: USER_LOADED, type: USER_LOADED,
// payload: res.data.user payload: res.data.user
// }); });
// }, },
// error: err => { error: err => {
// if(err.response){ if(err.response){
// dispatch(returnErrors(err.response.data.message, err.response.status)); dispatch(returnErrors(err.response.data.message, err.response.status));
// } }
// dispatch({ dispatch({
// type: AUTH_ERROR type: AUTH_ERROR
// }); });
// } }
// }; };
// axios.get('/api/v1/user/me', config, dispatch(authInterceptor())) axios.get(`${process.env.REACT_APP_BLOCKLY_API}/user`, config, dispatch(authInterceptor()))
// .then(res => { .then(res => {
// res.config.success(res); res.config.success(res);
// }) })
// .catch(err => { .catch(err => {
// err.config.error(err); err.config.error(err);
// }); });
// }; };
var logoutTimerId; var logoutTimerId;
@ -49,7 +49,7 @@ export const login = ({ email, password }) => (dispatch) => {
}; };
// Request Body // Request Body
const body = JSON.stringify({ email, password }); const body = JSON.stringify({ email, password });
axios.post('https://api.opensensemap.org/users/sign-in', body, config) axios.post(`${process.env.REACT_APP_BLOCKLY_API}/user`, body, config)
.then(res => { .then(res => {
// Logout automatically if refreshToken "expired" // Logout automatically if refreshToken "expired"
const logoutTimer = () => setTimeout( const logoutTimer = () => setTimeout(
@ -92,7 +92,7 @@ export const logout = () => (dispatch) => {
clearTimeout(logoutTimerId); clearTimeout(logoutTimerId);
} }
}; };
axios.post('https://api.opensensemap.org/users/sign-out', {}, config, dispatch(authInterceptor())) axios.post('https://api.opensensemap.org/users/sign-out', {}, config)
.then(res => { .then(res => {
res.config.success(res); res.config.success(res);
}) })
@ -140,7 +140,7 @@ export const authInterceptor = () => (dispatch, getState) => {
originalRequest._retry = true; originalRequest._retry = true;
const refreshToken = getState().auth.refreshToken; const refreshToken = getState().auth.refreshToken;
// request to refresh the token, in request-body is the refreshToken // request to refresh the token, in request-body is the refreshToken
axios.post('/api/v1/user/token/refresh', {"refreshToken": refreshToken}) axios.post('https://api.opensensemap.org/users/refresh-auth', {"token": refreshToken})
.then(res => { .then(res => {
if (res.status === 200) { if (res.status === 200) {
clearTimeout(logoutTimerId); clearTimeout(logoutTimerId);

View File

@ -30,7 +30,7 @@ export default function(state = initialState, action){
console.log(action.payload); console.log(action.payload);
return { return {
...state, ...state,
user: action.payload.data.user, user: action.payload.user,
token: action.payload.token, token: action.payload.token,
refreshToken: action.payload.refreshToken, refreshToken: action.payload.refreshToken,
isAuthenticated: true, isAuthenticated: true,