client/src/misc/AuthenticatedRoute.js
author ymh <ymh.work@gmail.com>
Tue, 13 Nov 2018 16:46:15 +0100
changeset 172 4b780ebbedc6
parent 168 ea92f4fe783d
permissions -rw-r--r--
- Upgrade libraries - Make things work again
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';
168
ea92f4fe783d - move SlateEditor and dependencies to its own folder
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
     6
import { isAuthenticated } from '../selectors/authSelectors';
105
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     7
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     8
const AuthenticatedRoute = ({component, ...props}) => {
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     9
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    10
  const { store } = props;
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    11
  const state = store.getState();
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    12
168
ea92f4fe783d - move SlateEditor and dependencies to its own folder
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
    13
  if (isAuthenticated(state)) {
105
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;