improvement: keep user data on login fails

This commit is contained in:
canove
2021-01-12 20:30:31 -03:00
parent 96e92e6079
commit 2bec877e4f
3 changed files with 25 additions and 14 deletions

View File

@@ -63,9 +63,8 @@ const useAuth = () => {
setLoading(false); setLoading(false);
}, []); }, []);
const handleLogin = async (e, user) => { const handleLogin = async user => {
setLoading(true); setLoading(true);
e.preventDefault();
try { try {
const { data } = await api.post("/auth/login", user); const { data } = await api.post("/auth/login", user);
@@ -78,11 +77,11 @@ const useAuth = () => {
setIsAuth(true); setIsAuth(true);
toast.success(i18n.t("auth.toasts.success")); toast.success(i18n.t("auth.toasts.success"));
history.push("/tickets"); history.push("/tickets");
setLoading(false);
} catch (err) { } catch (err) {
toastError(err); toastError(err);
setLoading(false);
} }
setLoading(false);
}; };
const handleLogout = e => { const handleLogout = e => {

View File

@@ -61,6 +61,11 @@ const Login = () => {
setUser({ ...user, [e.target.name]: e.target.value }); setUser({ ...user, [e.target.name]: e.target.value });
}; };
const handlSubmit = e => {
e.preventDefault();
handleLogin(user);
};
return ( return (
<Container component="main" maxWidth="xs"> <Container component="main" maxWidth="xs">
<CssBaseline /> <CssBaseline />
@@ -71,11 +76,7 @@ const Login = () => {
<Typography component="h1" variant="h5"> <Typography component="h1" variant="h5">
{i18n.t("login.title")} {i18n.t("login.title")}
</Typography> </Typography>
<form <form className={classes.form} noValidate onSubmit={handlSubmit}>
className={classes.form}
noValidate
onSubmit={e => handleLogin(e, user)}
>
<TextField <TextField
variant="outlined" variant="outlined"
margin="normal" margin="normal"

View File

@@ -7,19 +7,30 @@ import BackdropLoading from "../components/BackdropLoading";
const RouteWrapper = ({ component: Component, isPrivate = false, ...rest }) => { const RouteWrapper = ({ component: Component, isPrivate = false, ...rest }) => {
const { isAuth, loading } = useContext(AuthContext); const { isAuth, loading } = useContext(AuthContext);
if (loading) return <BackdropLoading />;
if (!isAuth && isPrivate) { if (!isAuth && isPrivate) {
return ( return (
<Redirect to={{ pathname: "/login", state: { from: rest.location } }} /> <>
{loading && <BackdropLoading />}
<Redirect to={{ pathname: "/login", state: { from: rest.location } }} />
</>
); );
} }
if (isAuth && !isPrivate) { if (isAuth && !isPrivate) {
return <Redirect to={{ pathname: "/", state: { from: rest.location } }} />; return (
<>
{loading && <BackdropLoading />}
<Redirect to={{ pathname: "/", state: { from: rest.location } }} />;
</>
);
} }
return <Route {...rest} component={Component} />; return (
<>
{loading && <BackdropLoading />}
<Route {...rest} component={Component} />
</>
);
}; };
export default RouteWrapper; export default RouteWrapper;