import React from 'react'; import { Redirect } from 'react-router-dom'; import { useCookies } from 'react-cookie'; //utilities const validateEmail = require('../../../common/utilities/validate-email.js'); const LogIn = props => { const [cookies, setCookie] = useCookies(['loggedin']); //check for logged in redirect if (cookies['loggedin']) { return ; } //refs let emailElement, passwordElement; return (

Login

{ evt.preventDefault(); handleSubmit(emailElement.value, passwordElement.value) .then(res => res ? alert(res) : null) .then(() => emailElement.value = passwordElement.value = '') //clear input .then(() => { window.location.reload(true); }) //BUFGIX: force reload of the header element .catch(e => console.error(e)) ; } }>
emailElement = e} />
passwordElement = e} />
); }; const handleSubmit = async (email, password) => { email = email.trim(); const err = handleValidation(email, password); if (err) { return err; } //generate a new formdata payload let formData = new FormData(); formData.append('email', email); formData.append('password', password); const result = await fetch('/api/accounts/login', { method: 'POST', body: formData }); if (result.ok) { return result.text(); } else { return result.text(); } }; //returns an error message, or null on success const handleValidation = (email, password) => { if (!validateEmail(email)) { return 'invalid email'; } if (password.length < 8) { return 'invalid password (Must be at least 8 characters long)'; } return null; }; export default LogIn;