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