diff --git a/src/App.js b/src/App.js index be756c9983346e16424539128e0c21d3ded3871d..a0e2b1b33990c4bac80e3562ec47720f37c8d240 100644 --- a/src/App.js +++ b/src/App.js @@ -1,5 +1,5 @@ import React from "react"; -import { HashRouter, Route } from "react-router-dom"; +import { HashRouter, Route, Redirect } from "react-router-dom"; import "./global.css"; import CreateForm from "./pages/CreateForm"; import AnswerForm from "./pages/AnswerForm"; @@ -15,12 +15,15 @@ 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="/SignUp" component={SignUp} /> - <Route path="/SignIn" component={SignIn} /> <Route path="/list/:id" component={ListForms} /> <Route path="/form/:id" component={GetForm} /> <Footer /> diff --git a/src/components/fieldsListForms/ShareButton.jsx b/src/components/fieldsListForms/ShareButton.jsx index 0040628df9a2c0b29e4df4bafc5b0e469f6e79b0..3d94dd628c9303758aaecdfe4115009c4422918e 100644 --- a/src/components/fieldsListForms/ShareButton.jsx +++ b/src/components/fieldsListForms/ShareButton.jsx @@ -40,7 +40,7 @@ function ShareButton(props) { </DialogTitle> <DialogContent> <DialogContentText id="alert-dialog-description"> - https://www.genforms.c3sl.ufpr.br/#/answer/{props.id} + https://genforms.c3sl.ufpr.br/#/answer/{props.id} </DialogContentText> </DialogContent> </Dialog> diff --git a/src/pages/ListForms.js b/src/pages/ListForms.js index 2c97add4d596d51aed0a295100f47411ff6e054f..70732de9e1e28a7484a5510c9d213b45388cf0e3 100644 --- a/src/pages/ListForms.js +++ b/src/pages/ListForms.js @@ -12,6 +12,12 @@ import Tab from "../components/fieldsListForms/Tab.jsx"; const useStyles = makeStyles(theme => ({ body: { marginBottom: "15%" + }, + + Forms: { + textAlign: "center", + marginBottom: "3%", + fontSize: "20px" } })); export default function ListForms() { @@ -97,24 +103,27 @@ export default function ListForms() { }, []); return isLoaded ? ( - <div> - <Tab sort={sort} searching={searching} /> - <Container> - <Grid container spacing={3} className={classes.body}> - {auxForms.map(form => ( - <Grid item xl={4} lg={4} md={4} sm={6} xs={12} zeroMinWidth> - <CardForm - id={form.id} - title={form.title} - description={form.description} - numberOfAnswers={form.answersNumber} - date={form.date} - /> - </Grid> - ))} - </Grid> - </Container> - </div> + <> + <div> + <Tab sort={sort} searching={searching} /> + <Container> + <Grid className={classes.Forms}>Seus Formulários:</Grid> + <Grid container spacing={3} className={classes.body}> + {auxForms.map(form => ( + <Grid item xl={4} lg={4} md={4} sm={6} xs={12} zeroMinWidth> + <CardForm + id={form.id} + title={form.title} + description={form.description} + numberOfAnswers={form.answersNumber} + date={form.date} + /> + </Grid> + ))} + </Grid> + </Container> + </div> + </> ) : ( <Grid justify="center"> <p>loading...</p> diff --git a/src/pages/SignIn.js b/src/pages/SignIn.js index c86bc000112568a5b870ab5d72e29d15ccf8a975..f34aacc99ed2e9096480619246cd40c8ac3fe124 100644 --- a/src/pages/SignIn.js +++ b/src/pages/SignIn.js @@ -1,5 +1,6 @@ import React from "react"; import { useHistory } from "react-router-dom"; +import { Redirect } from "react-router-dom"; import Grid from "@material-ui/core/Grid"; import { createMuiTheme, MuiThemeProvider } from "@material-ui/core"; import IconButton from "@material-ui/core/IconButton"; @@ -34,6 +35,9 @@ const useStyles = makeStyles((theme) => ({ alignItems: "center", textAlign: "center", }, + noAcc: { + marginTop: "10px" + }, button: { type: "submit", width: "30%", @@ -53,6 +57,9 @@ const useStyles = makeStyles((theme) => ({ export default function SignIn() { const classes = useStyles(); const history = useHistory(); + const [isLoged, setIsLoged] = React.useState( + window.sessionStorage.getItem("token") + ); const [values, setValues] = React.useState({ email: "", password: "", @@ -138,7 +145,9 @@ export default function SignIn() { }, }, }); - return ( + return isLoged ? ( + <Redirect to={`/list/${window.sessionStorage.getItem("userId")}`} /> + ) : ( <MuiThemeProvider theme={theme}> <Paper className={classes.register} justify="center"> <strong className={classes.custom_strong}> @@ -159,6 +168,11 @@ export default function SignIn() { <Grid> <FormInput label="Senha" param="password" onUpdate={handleChange} /> </Grid> + <Grid className={classes.noAcc}> + <a href="https://genforms.c3sl.ufpr.br/#/signup"> + Não é cadastrado? + </a> + </Grid> <Grid> <IconButton type="submit" diff --git a/src/pages/SignUp.js b/src/pages/SignUp.js index f4706397fb004cda5f34e7fafff0c221a2ecd342..ef6b53173dfe2225fe7334353d3deb2e3a804302 100644 --- a/src/pages/SignUp.js +++ b/src/pages/SignUp.js @@ -1,5 +1,6 @@ import React, { useEffect } from "react"; import Grid from "@material-ui/core/Grid"; +import { Redirect } from "react-router-dom"; import { createMuiTheme, MuiThemeProvider } from "@material-ui/core"; import IconButton from "@material-ui/core/IconButton"; import { useHistory } from "react-router-dom"; @@ -9,7 +10,7 @@ import FormInput from "../components/fieldsSignUp/FormInput"; import Paper from "@material-ui/core/Paper"; import api from "../api"; -const useStyles = makeStyles((theme) => ({ +const useStyles = makeStyles(theme => ({ register: { maxWidth: "1000px", background: "#ffffff", @@ -17,21 +18,24 @@ const useStyles = makeStyles((theme) => ({ padding: "2% 1%", marginTop: "3%", margin: "0 auto", - width: "95%", + width: "95%" }, custom_strong: { fontSize: "25px", textAlign: "center", display: "block", - color: "#46525d", + color: "#46525d" }, strong_description: { fontSize: "14px", - color: "#c2c6ca", + color: "#c2c6ca" }, form: { alignItems: "center", - textAlign: "center", + textAlign: "center" + }, + alreadyAcc: { + marginTop: "10px" }, button: { type: "submit", @@ -43,24 +47,26 @@ const useStyles = makeStyles((theme) => ({ padding: "10px 20px", fontSize: "18px", "&:hover": { - backgroundColor: "rgb(25, 109, 23)", + backgroundColor: "rgb(25, 109, 23)" }, ["@media (max-width:550px)"]: { - width: "55%", - }, - }, + width: "55%" + } + } })); export default function SignUp() { const history = useHistory(); const classes = useStyles(); - + const [isLoged, setIsLoged] = React.useState( + window.sessionStorage.getItem("token") + ); const [values, setValues] = React.useState({ name: "", email: "", password: "", password_confirm: "", nameError: false, - emailError: false, + emailError: false }); useEffect(() => { !checkName() ? (values.nameError = true) : (values.nameError = false); @@ -69,7 +75,7 @@ export default function SignUp() { !checkEmail() ? (values.emailError = true) : (values.emailError = false); }, [values.email]); - const handleChange = (prop) => (event) => { + const handleChange = prop => event => { setValues({ ...values, [prop]: event.target.value }); }; function checkPassword() { @@ -87,6 +93,7 @@ export default function SignUp() { : false : true; } + function checkEmail() { return values.email ? /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(values.email) @@ -126,15 +133,15 @@ export default function SignUp() { .post(`/user/signUp`, { email: values.email, name: values.name, - hash: values.password, + hash: values.password }) - .then(function (error) { + .then(function(error) { if (!error.response) { let path = `signin`; history.push(path); } }) - .catch(function (error) { + .catch(function(error) { if (error.response) { switch (error.response.data.error) { case 'duplicate key value violates unique constraint "form_user_name_key"': @@ -162,21 +169,23 @@ export default function SignUp() { const theme = createMuiTheme({ overrides: { root: { - color: "white", + color: "white" }, MuiInput: { underline: { "&:before": { - borderBottom: "1px solid #35c7fc", + borderBottom: "1px solid #35c7fc" }, "&:after": { - borderBottom: "1px solid #3f51b5", - }, - }, - }, - }, + borderBottom: "1px solid #3f51b5" + } + } + } + } }); - return ( + return isLoged ? ( + <Redirect to="/signin" /> + ) : ( <MuiThemeProvider theme={theme}> <Paper className={classes.register} justify="center"> <strong className={classes.custom_strong}> @@ -219,6 +228,11 @@ export default function SignUp() { } /> </Grid> + <Grid className={classes.alreadyAcc}> + <a href="https://genforms.c3sl.ufpr.br/#/signin"> + Já é cadastrado? + </a> + </Grid> <Grid> <IconButton type="submit"