client/src/misc/AuthenticatedRoute.js
author Riwad Salim
Wed, 15 Aug 2018 23:39:02 +0200
changeset 145 5d2bc8c877ea
parent 129 d48946d164c6
child 168 ea92f4fe783d
permissions -rw-r--r--
Adding class for specific css in App, Navbar and SessionList components
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
105
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     1
// see https://gist.github.com/fdidron/ebcf52dc1ed62ff7d80725854d631a9e
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     2
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     3
import PropTypes from 'prop-types';
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     4
import React from 'react';
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     5
import { Redirect, Route } from 'react-router';
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     6
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     7
const AuthenticatedRoute = ({component, ...props}) => {
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     8
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     9
  const { store } = props;
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    10
  const state = store.getState();
129
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 105
diff changeset
    11
  const isAuthenticated = state.getIn(['authStatus', 'isAuthenticated']);
105
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    12
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    13
  if (isAuthenticated) {
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    14
    return <Route { ...props } component={ component } />;
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    15
  }
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    16
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    17
  return <Redirect to="/login" />;
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    18
};
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    19
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    20
AuthenticatedRoute.propTypes = {
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    21
  component: PropTypes.oneOfType([
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    22
    PropTypes.element,
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    23
    PropTypes.func
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    24
  ])
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    25
};
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    26
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    27
export default AuthenticatedRoute;