From 03249787040e5a2490aa3ab6b251e430a1a146d9 Mon Sep 17 00:00:00 2001
From: Gabriel Silva Hermida <gash18@inf.ufpr.br>
Date: Wed, 30 Sep 2020 10:57:38 -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 ++--------
 .../JornalFolder/FormFieldSelect.js           | 15 +++--
 src/components/header/header.jsx              |  1 -
 src/pages/ListForms.js                        |  1 -
 src/pages/SignUp.js                           |  1 -
 src/routes.js                                 | 58 +++++++++++++++++++
 6 files changed, 70 insertions(+), 37 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/fieldsGetForm/JornalFolder/FormFieldSelect.js b/src/components/fieldsGetForm/JornalFolder/FormFieldSelect.js
index d83bf41..db34cfe 100644
--- a/src/components/fieldsGetForm/JornalFolder/FormFieldSelect.js
+++ b/src/components/fieldsGetForm/JornalFolder/FormFieldSelect.js
@@ -8,21 +8,21 @@ import Typography from "@material-ui/core/Typography";
 
 import FieldFooterOptions from "./FieldFooterOptions";
 
-const useStyles = makeStyles(theme => ({
+const useStyles = makeStyles((theme) => ({
   paper: {
     padding: theme.spacing(3),
     width: theme.spacing(100),
     marginBottom: "2%",
     ["@media (max-width: 896px)"]: {
-      width: "300px"
-    }
+      width: "300px",
+    },
   },
   questionsGrid: {
-    marginBottom: "20px"
+    marginBottom: "20px",
   },
   text: {
-    color: "black"
-  }
+    color: "black",
+  },
 }));
 
 function FormFieldSelect(props) {
@@ -32,9 +32,8 @@ function FormFieldSelect(props) {
    * Function to handle the selected answer.
    */
   function handleProps() {
-    console.log(props.answer);
     if (props.answer) {
-      return props.answer.filter(each => {
+      return props.answer.filter((each) => {
         return each.value === "true";
       })[0].placement;
     } else {
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/ListForms.js b/src/pages/ListForms.js
index 08788a3..c65df33 100644
--- a/src/pages/ListForms.js
+++ b/src/pages/ListForms.js
@@ -79,7 +79,6 @@ export default function ListForms() {
    * @param string - the string value to be searched.
    */
   function searching(string) {
-    console.log(string);
     setAuxForms(
       [...forms].filter(value => {
         return value.title.toLowerCase().includes(string.toLowerCase());
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..42bab39
--- /dev/null
+++ b/src/routes.js
@@ -0,0 +1,58 @@
+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;
+  rest.path === "/list/:id" &&
+    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