From d9c74d25ab1f4e13cb980074e188ef6125d2d290 Mon Sep 17 00:00:00 2001
From: eug-vs <eug-vs@keemail.me>
Date: Fri, 7 Aug 2020 21:53:48 +0300
Subject: feat: setup initial routing

---
 src/pages/PrivateRoute.tsx | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
 create mode 100644 src/pages/PrivateRoute.tsx

(limited to 'src/pages/PrivateRoute.tsx')

diff --git a/src/pages/PrivateRoute.tsx b/src/pages/PrivateRoute.tsx
new file mode 100644
index 0000000..cdee67b
--- /dev/null
+++ b/src/pages/PrivateRoute.tsx
@@ -0,0 +1,36 @@
+import React from 'react';
+import { Redirect, Route } from 'react-router-dom';
+import { useAuth } from '../hooks/useAuth';
+
+const urls = {
+  home: '/',
+  login: '/login',
+  registration: '/registration',
+  profile: '/profile',
+  feed: '/feed',
+  notifications: '/notifications'
+};
+
+const PrivateRoute: React.FC<any> = ({ component: ProtectedComponent, ...rest }) => {
+  const { isAuthenticated } = useAuth();
+
+  const getComponent: React.FC<any> = (props) => {
+    if (props.match.path === urls.login || props.match.path === urls.registration) {
+      return isAuthenticated() ? (
+        <Redirect to={urls.profile} />
+      ) : (
+        <ProtectedComponent {...props} />
+      );
+    }
+
+    return isAuthenticated() ? (
+      <ProtectedComponent {...props} />
+    ) : (
+      <Redirect to={{ pathname: urls.login, state: { from: props.location } }} />
+    );
+  }
+
+  return <Route {...rest} render={getComponent} />;
+};
+
+export default PrivateRoute;
-- 
cgit v1.2.3

