From 34f56ae41b51bb683dbe15df05a52558ffbd773e Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Fri, 13 Nov 2020 17:35:41 -0500 Subject: [PATCH] Integrate API login and error handling --- src/components/LoginForm/LoginForm.js | 30 +++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/components/LoginForm/LoginForm.js b/src/components/LoginForm/LoginForm.js index ee4e902..daa43ab 100644 --- a/src/components/LoginForm/LoginForm.js +++ b/src/components/LoginForm/LoginForm.js @@ -1,17 +1,31 @@ import React, { useState } from "react"; import { Box, Paper, TextField, Button, Avatar, Typography, useTheme, makeStyles } from "@material-ui/core"; import { Redirect } from "react-router-dom"; -import { useLogin } from "../AuthProvider/"; +import { Alert } from '@material-ui/lab'; +import { useLogin, useLoginSetter, useTokenSetter } from "../AuthProvider/"; +import { login } from "../../auth/"; export default function LoginForm() { const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); + const [error, setError] = useState(false); const handleUsernameChange = (event) => setUsername(event.target.value); const handlePasswordChange = (event) => setPassword(event.target.value); - const handleSubmit = (event) => { + const setLogin = useLoginSetter(); + const setToken = useTokenSetter(); + const handleSubmit = async (event) => { event.preventDefault(); + let access_token = await login(username, password); + + if (!access_token){ + setError(true); + return false; + } + + setLogin(true); + setToken(access_token); return true; } @@ -30,6 +44,9 @@ export default function LoginForm() { width: theme.spacing(10), height: theme.spacing(10) }, + "alert_root": { + marginTop: theme.spacing(2) + }, "paper_root": { minWidth: theme.breakpoints.values.sm/2, padding: theme.spacing(3), @@ -49,6 +66,14 @@ export default function LoginForm() { return } + const LoginErrorAlert = _ => { + return ( + + Username or password is incorrect. + + ); + } + return (
@@ -60,6 +85,7 @@ export default function LoginForm() { Sign In + { error && }