From e163048934005606226c54fb179cd27a58a98fa4 Mon Sep 17 00:00:00 2001
From: Gabriel Silva Hermida <gash18@inf.ufpr.br>
Date: Wed, 30 Sep 2020 10:17:01 -0300
Subject: [PATCH] =?UTF-8?q?Issue=20#49:=20Adicionar=20seguran=C3=A7a=20nas?=
 =?UTF-8?q?=20rotas?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Gabriel Silva Hermida <gash18@inf.ufpr.br>
---
 src/App.js                       | 31 +++-------------
 src/components/header/header.jsx |  1 -
 src/pages/SignUp.js              |  1 -
 src/routes.js                    | 62 ++++++++++++++++++++++++++++++++
 4 files changed, 67 insertions(+), 28 deletions(-)
 create mode 100644 src/routes.js

diff --git a/src/App.js b/src/App.js
index a0e2b1b..269c83b 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,33 +1,12 @@
 import React from "react";
-import { HashRouter, Route, Redirect } from "react-router-dom";
 import "./global.css";
-import CreateForm from "./pages/CreateForm";
-import AnswerForm from "./pages/AnswerForm";
-import Header from "./components/header/header";
-import Footer from "./components/footer/footer";
-import SignUp from "./pages/SignUp";
-import SignIn from "./pages/SignIn";
-import ListForms from "./pages/ListForms";
-import EditForm from "./pages/EditForm";
-import GetForm from "./pages/GetForm";
-import VisualizeForm from "./pages/VisualizeForm";
+import Routes from "./routes";
+import { BrowserRouter as Router } from "react-router-dom";
 function App() {
   return (
-    <HashRouter>
-      <Header />
-      <Route exact path="/">
-        <Redirect to="/SignIn" />
-      </Route>
-      <Route path="/SignUp" component={SignUp} />
-      <Route path="/SignIn" component={SignIn} />
-      <Route path="/visualize/:id" component={VisualizeForm} />
-      <Route path="/create" component={CreateForm} />
-      <Route path="/answer/:id" component={AnswerForm} />
-      <Route path="/edit/:id" component={EditForm} />
-      <Route path="/list/:id" component={ListForms} />
-      <Route path="/form/:id" component={GetForm} />
-      <Footer />
-    </HashRouter>
+    <Router>
+      <Routes />
+    </Router>
   );
 }
 
diff --git a/src/components/header/header.jsx b/src/components/header/header.jsx
index 696c62b..61c014d 100644
--- a/src/components/header/header.jsx
+++ b/src/components/header/header.jsx
@@ -70,7 +70,6 @@ export default function Header() {
     return false;
   }
   useEffect(() => {
-    console.log("O TOKEN MUDOU");
     setIsLoged(!isLoged);
   }, [window.sessionStorage.getItem("token")]);
 
diff --git a/src/pages/SignUp.js b/src/pages/SignUp.js
index 8b3ac05..ae6891b 100644
--- a/src/pages/SignUp.js
+++ b/src/pages/SignUp.js
@@ -262,7 +262,6 @@ export default function SignUp() {
           </Grid>
           <Grid>
             <IconButton
-              type="submit"
               size="medium"
               className={classes.button}
               id="whiteTextedButton"
diff --git a/src/routes.js b/src/routes.js
new file mode 100644
index 0000000..a54616a
--- /dev/null
+++ b/src/routes.js
@@ -0,0 +1,62 @@
+import React, { useEffect } from "react";
+import CreateForm from "./pages/CreateForm";
+import AnswerForm from "./pages/AnswerForm";
+import Header from "./components/header/header";
+import Footer from "./components/footer/footer";
+import SignUp from "./pages/SignUp";
+import SignIn from "./pages/SignIn";
+import ListForms from "./pages/ListForms";
+import EditForm from "./pages/EditForm";
+import GetForm from "./pages/GetForm";
+import VisualizeForm from "./pages/VisualizeForm";
+import { BrowserRouter, Route, Switch, Redirect } from "react-router-dom";
+
+const PrivateRoute = ({ component: Component, ...rest }) => {
+  let usr;
+  console.log(rest);
+  if (rest.path === "/list/:id") {
+    if (
+      rest.computedMatch.params.id === window.sessionStorage.getItem("userId")
+    ) {
+      usr = true;
+    }
+  }
+  return (
+    <Route
+      {...rest}
+      render={(props) =>
+        usr && window.sessionStorage.getItem("token") !== null ? (
+          <Component {...props} />
+        ) : (
+          <Redirect to={{ pathname: "/" }} />
+        )
+      }
+    />
+  );
+};
+
+const Routes = () => (
+  <BrowserRouter>
+    <Header />
+    <Switch>
+      <Route exact path="/">
+        <Redirect to="/SignIn" />
+      </Route>
+      <Route exact path="/SignUp" component={SignUp} />
+      <Route exact path="/SignIn" component={SignIn} />
+      <PrivateRoute
+        exact
+        path="/visualize/:id"
+        component={() => <VisualizeForm />}
+      />
+      <PrivateRoute exact path="/create" component={() => <CreateForm />} />
+      <PrivateRoute exact path="/answer/:id" component={() => <AnswerForm />} />
+      <PrivateRoute exact path="/edit/:id" component={() => <EditForm />} />
+      <PrivateRoute exact path="/list/:id" component={() => <ListForms />} />
+      <PrivateRoute exact path="/form/:id" component={() => <GetForm />} />
+    </Switch>
+    <Footer />
+  </BrowserRouter>
+);
+
+export default Routes;
-- 
GitLab