Logout is working ^_^

This commit is contained in:
Clayton Wilson 2019-10-07 20:46:28 -04:00
parent 8179b51844
commit 9eb4f603df
3 changed files with 23 additions and 22 deletions

View File

@ -12,6 +12,11 @@ import store from "./redux/store";
import MuiThemeProvider from '@material-ui/core/styles/MuiThemeProvider'; import MuiThemeProvider from '@material-ui/core/styles/MuiThemeProvider';
import createMuiTheme from '@material-ui/core/styles/createMuiTheme'; import createMuiTheme from '@material-ui/core/styles/createMuiTheme';
import themeObject from './util/theme'; import themeObject from './util/theme';
import { SET_AUTHENTICATED } from './redux/types';
import { logoutUser, getUserData } from './redux/actions/userActions';
// Components
import AuthRoute from "./util/AuthRoute";
// Pages // Pages
import home from './pages/Home'; import home from './pages/Home';
@ -21,24 +26,23 @@ import user from './pages/user';
import writeMicroblog from "./Writing_Microblogs.js"; import writeMicroblog from "./Writing_Microblogs.js";
import edit from "./pages/edit.js"; import edit from "./pages/edit.js";
import userLine from "./Userline.js"; import userLine from "./Userline.js";
import axios from "axios";
// Components const theme = createMuiTheme(themeObject);
import AuthRoute from "./util/AuthRoute";
let authenticated;
const token = localStorage.FBIdToken; const token = localStorage.FBIdToken;
if (token) { if (token) {
const decodedToken = jwtDecode(token); const decodedToken = jwtDecode(token);
if (decodedToken.exp * 1000 < Date.now()) { if (decodedToken.exp * 1000 < Date.now()) {
store.dispatch(logoutUser);
window.location.href = "/login"; window.location.href = "/login";
authenticated = false;
} else { } else {
authenticated = true; store.dispatch({ type: SET_AUTHENTICATED });
axios.defaults.headers.common['Authorization'] = token;
store.dispatch(getUserData());
} }
} }
const theme = createMuiTheme(themeObject);
class App extends Component { class App extends Component {
render() { render() {
@ -52,22 +56,16 @@ class App extends Component {
<div className="app"> <div className="app">
<Switch> <Switch>
{/* <AuthRoute exact path="/" component={home} authenticated={authenticated}/> */} {/* AuthRoute checks if the user is logged in and if they are it redirects them to /home */}
<AuthRoute exact path="/register" component={register} authenticated={authenticated}/> <AuthRoute exact path="/register" component={register} />
<AuthRoute exact path="/login" component={login} authenticated={authenticated}/> <AuthRoute exact path="/login" component={login} />
<AuthRoute exact path="/user" component={user} authenticated={authenticated}/> <Route exact path="/user" component={user} />
<AuthRoute exact path="/home" component={writeMicroblog} authenticated={authenticated}/> <Route exact path="/home" component={writeMicroblog} />
<AuthRoute exact path="/edit" component={edit} authenticated={authenticated}/> <Route exact path="/edit" component={edit} />
<AuthRoute exact path="/user" component={userLine} authenticated={authenticated}/> <Route exact path="/user" component={userLine} />
<Route exact path="/" component={home}/> <Route exact path="/" component={home}/>
{/* <Route exact path="/register" component={register}/>
<Route exact path="/login" component={login}/>
<Route exact path="/user" component={user}/>
<Route exact path="/home" component={writeMicroblog}/>
<Route exact path="/edit" component={edit}/>
<Route exact path="/user" component={userLine}/> */}
</Switch> </Switch>
</div> </div>

View File

@ -1,7 +1,6 @@
/* eslint-disable */ /* eslint-disable */
import React, { Component } from 'react'; import React, { Component } from 'react';
import '../App.css'; import '../App.css';
import axios from 'axios';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import logo from '../images/twistter-logo.png'; import logo from '../images/twistter-logo.png';
@ -157,6 +156,8 @@ export class Login extends Component {
} }
} }
// Proptypes just confirms that all data in it exists and is of the type that it
// is declared to be
Login.propTypes = { Login.propTypes = {
classes: PropTypes.object.isRequired, classes: PropTypes.object.isRequired,
loginUser: PropTypes.func.isRequired, loginUser: PropTypes.func.isRequired,
@ -176,5 +177,7 @@ Login.propTypes = {
classes: PropTypes.object.isRequired classes: PropTypes.object.isRequired
}; };
// This mapStateToProps is just synchronizing the 'state' to 'this.props' so we can access it
// The state contains info about the current logged in user
export default connect(mapStateToProps, mapActionsToProps)(withStyles(styles)(Login)); export default connect(mapStateToProps, mapActionsToProps)(withStyles(styles)(Login));

View File

@ -7,7 +7,7 @@ const AuthRoute = ({ component: Component, authenticated, ...rest }) => (
<Route <Route
{...rest} {...rest}
render={(props) => render={(props) =>
authenticated === true ? <Redirect to="/" /> : <Component {...props} /> authenticated === true ? <Redirect to="/home" /> : <Component {...props} />
} }
/> />
); );