From c7d4bcff9eece7ed3ae0fcde3f2b46d533c0c85c Mon Sep 17 00:00:00 2001 From: Richard Heise <rfhf19@inf.ufpr.br> Date: Thu, 17 Sep 2020 12:11:35 -0300 Subject: [PATCH] Issue/47: FIX BUG: Token is now deleted if it expires Signed-off-by: Richard Heise <rfhf19@inf.ufpr.br> --- .../JornalFolder/FormFieldSubform.js | 10 ++++- .../SummaryFolder/FormFieldSubform.js | 10 ++++- .../fieldsVisualizeForm/FormFieldSubform.js | 20 +++++++--- src/contexts/FormContext.js | 2 + src/contexts/useForm.js | 37 ++++++++++++------- src/pages/AnswerForm.js | 9 +++++ src/pages/GetForm.js | 16 ++++++-- src/pages/ListForms.js | 2 + src/pages/VisualizeForm.js | 2 + 9 files changed, 82 insertions(+), 26 deletions(-) diff --git a/src/components/fieldsGetForm/JornalFolder/FormFieldSubform.js b/src/components/fieldsGetForm/JornalFolder/FormFieldSubform.js index 980d51d..78d14e5 100644 --- a/src/components/fieldsGetForm/JornalFolder/FormFieldSubform.js +++ b/src/components/fieldsGetForm/JornalFolder/FormFieldSubform.js @@ -1,5 +1,5 @@ import React, { useState, useEffect } from "react"; -import { useParams } from "react-router-dom"; +import { useParams, useHistory } from "react-router-dom"; import { makeStyles } from "@material-ui/core/styles"; import Grid from "@material-ui/core/Grid"; import Button from "@material-ui/core/Button"; @@ -23,6 +23,7 @@ const useStyles = makeStyles(theme => ({ function FormFieldSubform(props) { const classes = useStyles(); + const history = useHistory(); /** Subform id */ const id = props.id; @@ -38,6 +39,13 @@ function FormFieldSubform(props) { setFormData(res.data); }) .catch(error => { + if (error.response.status === 401) { + window.sessionStorage.removeItem("token"); + window.sessionStorage.removeItem("userId"); + let path = `/signin`; + history.push(path); + return; + } alert( "Um erro inesperado ocorreu ao tentar obter o subform na tela de Jornal." ); diff --git a/src/components/fieldsGetForm/SummaryFolder/FormFieldSubform.js b/src/components/fieldsGetForm/SummaryFolder/FormFieldSubform.js index 50d40f9..b784f80 100644 --- a/src/components/fieldsGetForm/SummaryFolder/FormFieldSubform.js +++ b/src/components/fieldsGetForm/SummaryFolder/FormFieldSubform.js @@ -1,5 +1,5 @@ import React, { useState, useEffect } from "react"; -import { useParams } from "react-router-dom"; +import { useParams, useHistory } from "react-router-dom"; import { makeStyles } from "@material-ui/core/styles"; import Grid from "@material-ui/core/Grid"; import api from "../../../api"; @@ -22,6 +22,7 @@ const useStyles = makeStyles(theme => ({ function FormFieldSubform(props) { const classes = useStyles(); + const history = useHistory(); /** Subform id */ const id = props.id; @@ -37,6 +38,13 @@ function FormFieldSubform(props) { setFormData(res.data); }) .catch(error => { + if (error.response.status === 401) { + window.sessionStorage.removeItem("token"); + window.sessionStorage.removeItem("userId"); + let path = `/signin`; + history.push(path); + return; + } alert( "Um erro inesperado ocorreu ao tentar obter o subform na tela de resumo." ); diff --git a/src/components/fieldsVisualizeForm/FormFieldSubform.js b/src/components/fieldsVisualizeForm/FormFieldSubform.js index 5812a36..ce45234 100644 --- a/src/components/fieldsVisualizeForm/FormFieldSubform.js +++ b/src/components/fieldsVisualizeForm/FormFieldSubform.js @@ -1,5 +1,5 @@ import React, { useState, useEffect } from "react"; -import { useParams } from "react-router-dom"; +import { useParams, useHistory } from "react-router-dom"; import { makeStyles } from "@material-ui/core/styles"; import Grid from "@material-ui/core/Grid"; import Button from "@material-ui/core/Button"; @@ -10,19 +10,20 @@ import FormFieldSelect from "./FormFieldSelect"; import FormFieldRadio from "./FormFieldRadio"; import FormFieldCheckbox from "./FormFieldCheckbox"; -const useStyles = makeStyles((theme) => ({ +const useStyles = makeStyles(theme => ({ menu: { width: theme.spacing(6), minheight: theme.spacing(15), position: "fixed", top: theme.spacing(10), left: "90%", - padding: theme.spacing(1), - }, + padding: theme.spacing(1) + } })); function FormFieldSubform(props) { const classes = useStyles(); + const history = useHistory(); /** Subform id */ const id = props.id; @@ -34,10 +35,17 @@ function FormFieldSubform(props) { async function getForm(id) { const res = await api .get(`/form/${id}`) - .then(function (res) { + .then(function(res) { setFormData(res.data); }) - .catch((error) => { + .catch(error => { + if (error.response.status === 401) { + window.sessionStorage.removeItem("token"); + window.sessionStorage.removeItem("userId"); + let path = `/signin`; + history.push(path); + return; + } alert("Um erro inesperado ocorreu ao tentar obter o subform."); }); } diff --git a/src/contexts/FormContext.js b/src/contexts/FormContext.js index 015c9e9..e49b2a1 100644 --- a/src/contexts/FormContext.js +++ b/src/contexts/FormContext.js @@ -39,6 +39,8 @@ const FormProvider = props => { }) .catch(error => { if (error.response.status === 401) { + window.sessionStorage.removeItem("token"); + window.sessionStorage.removeItem("userId"); let path = `/signin`; history.push(path); return; diff --git a/src/contexts/useForm.js b/src/contexts/useForm.js index 54e8174..f9ad274 100644 --- a/src/contexts/useForm.js +++ b/src/contexts/useForm.js @@ -8,7 +8,7 @@ import { selectOptionsTesting, testSubformSchema, selectOptionTextTesting, - testTextValidation, + testTextValidation } from "../components/fieldsDisplayForm/utils/schemas"; import { pushTitle, @@ -16,7 +16,7 @@ import { pushSelect, pushRadio, pushCheckbox, - pushSubform, + pushSubform } from "../components/fieldsDisplayForm/utils/FormComposition"; import api from "../api"; @@ -237,7 +237,7 @@ const useForm = () => { */ async function setId() { const fetchData = async () => { - await api.get(`/form/${routeId}`).then(async function (res) { + await api.get(`/form/${routeId}`).then(async function(res) { let backForm = createFrontendForm(res.data); for (let i = 1; i < backForm.length; i++) { for (let j = 1; j < form.length; j++) { @@ -247,13 +247,13 @@ const useForm = () => { "question", "description", "options", - "subformId", + "subformId" ]) !== JSON.stringify(form[j], [ "question", "description", "options", - "subformId", + "subformId" ]) || differentValidation(backForm[i], form[j]) ) { @@ -278,18 +278,20 @@ const useForm = () => { const post_response = await api .put(`/form/${routeId}`, data, { headers: { - authorization: `bearer ${window.sessionStorage.getItem("token")}`, - }, + authorization: `bearer ${window.sessionStorage.getItem("token")}` + } }) - .then(function (error) { + .then(function(error) { if (!error.response) { alert("Seu formulário foi atualizado com sucesso."); let path = `/signin`; history.push(path); } }) - .catch(function (error) { + .catch(function(error) { if (error.response.status === 401) { + window.sessionStorage.removeItem("token"); + window.sessionStorage.removeItem("userId"); let path = `/signin`; history.push(path); return; @@ -306,17 +308,24 @@ const useForm = () => { const post_response = await api .post(`/form`, await createBackendForm(form), { headers: { - authorization: `bearer ${window.sessionStorage.getItem("token")}`, - }, + authorization: `bearer ${window.sessionStorage.getItem("token")}` + } }) - .then(function (error) { + .then(function(error) { if (!error.response) { alert("Seu formulário foi criado com sucesso."); let path = `/signin`; history.push(path); } }) - .catch(function (error) { + .catch(function(error) { + if (error.response.status === 401) { + window.sessionStorage.removeItem("token"); + window.sessionStorage.removeItem("userId"); + let path = `/signin`; + history.push(path); + return; + } alert("Um erro ocorreu."); }); } @@ -342,7 +351,7 @@ const useForm = () => { setValidationValue, removeValidation, onDragEnd, - submit, + submit }; }; diff --git a/src/pages/AnswerForm.js b/src/pages/AnswerForm.js index e4b535e..f86d909 100644 --- a/src/pages/AnswerForm.js +++ b/src/pages/AnswerForm.js @@ -153,6 +153,13 @@ function AnwserForm() { alert("Formulário respondido!"); }) .catch(error => { + if (error.response.status === 401) { + window.sessionStorage.removeItem("token"); + window.sessionStorage.removeItem("userId"); + let path = `/signin`; + history.push(path); + return; + } alert("Ocorreu um erro ao responder seu formulário."); return; }); @@ -199,6 +206,8 @@ function AnwserForm() { }) .catch(error => { if (error.response.status === 401) { + window.sessionStorage.removeItem("token"); + window.sessionStorage.removeItem("userId"); let path = `/signin`; history.push(path); return; diff --git a/src/pages/GetForm.js b/src/pages/GetForm.js index fb24c5f..b9eabe1 100644 --- a/src/pages/GetForm.js +++ b/src/pages/GetForm.js @@ -1,5 +1,5 @@ import React, { useState, useEffect } from "react"; -import { useParams, Route, Redirect } from "react-router-dom"; +import { useParams, Route, Redirect, useHistory } from "react-router-dom"; import { makeStyles } from "@material-ui/core/styles"; import Grid from "@material-ui/core/Grid"; import api from "../api"; @@ -95,6 +95,7 @@ const theme = createMuiTheme({ function GetForm() { const classes = useStyles(); + const history = useHistory(); /** Form id got from the browser's URL */ const { id } = useParams(); @@ -140,6 +141,8 @@ function GetForm() { }) .catch(error => { if (error.response.status === 401) { + window.sessionStorage.removeItem("token"); + window.sessionStorage.removeItem("userId"); setToLogin(true); return; } @@ -166,9 +169,14 @@ function GetForm() { setAnswerNum(res.data.answerNumber); }) .catch(error => { - alert( - "Um erro inesperado ocorreu. Contate os desenvolvedores (código 500-2)" - ); + if (error.response.status === 401) { + window.sessionStorage.removeItem("token"); + window.sessionStorage.removeItem("userId"); + let path = `/signin`; + history.push(path); + return; + } + alert("Um erro inesperado ocorreu. Contate os desenvolvedores"); }); setIsReady(true); } diff --git a/src/pages/ListForms.js b/src/pages/ListForms.js index d609b39..0f71c7a 100644 --- a/src/pages/ListForms.js +++ b/src/pages/ListForms.js @@ -93,6 +93,8 @@ export default function ListForms() { }) .catch(error => { if (error.response.status === 401) { + window.sessionStorage.removeItem("token"); + window.sessionStorage.removeItem("userId"); let path = `/signin`; history.push(path); return; diff --git a/src/pages/VisualizeForm.js b/src/pages/VisualizeForm.js index 1408c85..81c2279 100644 --- a/src/pages/VisualizeForm.js +++ b/src/pages/VisualizeForm.js @@ -79,6 +79,8 @@ function VisualizeForm() { }) .catch((error) => { if (error.response.status === 401) { + window.sessionStorage.removeItem("token"); + window.sessionStorage.removeItem("userId"); let path = `/signin`; history.push(path); return; -- GitLab