blink/frontend/vanilla/html/login.html

67 lines
1.9 KiB
HTML

<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<title>HTML5 Login Form with validation Example</title>
<link rel="stylesheet" href="../css/login-register.css">
</head>
<body>
<!-- partial:index.partial.html -->
<div id="login-form-wrap">
<h2>Login</h2>
<form id="login-form" method="POST">
<p>
<input type="email" id="email" name="email" placeholder="Email Address" required><i class="validation"><span></span><span></span></i>
</p>
<p>
<input type="password" id="password" name="password" placeholder="Password" required><i class="validation"><span></span><span></span></i>
</p>
<p>
<button type="button" onclick="login()">Login</button>
</p>
</form>
<div id="create-account-wrap">
<p>Not a member? <a href="./register.html">Create Account</a><p>
</div>
</div>
<script>
async function login() {
const email = document.getElementById("email").value;
const password = document.getElementById("password").value;
if(!email || !password){
alert('Please fill in all fields');
return;
}
const response = await fetch("http://localhost:3000/api/login", {
method: "POST",
body: JSON.stringify({
email: email,
password: password }),
headers: {
"Content-type": "application/json; charset=UTF-8"
}
});
const data = await response.json();
if(response.status != 200){
if(response.status == 401){
alert('Login has failed');
}
else{
alert('Internal server error');
}
}
else{
alert("Login was successful. Token will be stored in a cookie");
document.cookie = `token=${data.token};`;
}
}
</script>
</body>
</html>