Front and Back ends of login and sign up completed

This commit is contained in:
Aravind142857
2023-06-25 15:10:39 -05:00
parent b700ef7423
commit 7641f45abf
5 changed files with 180 additions and 102 deletions

View File

@@ -10,6 +10,7 @@
<h1 id="head" class="ml-4 text-5xl font-narrow">Link Shortener</h1>
<p class="ml-4 font-fingerpaint">Hello There!</p>
<nav class="flex items-center justify-between flex-wrap bg-gray-500 p-6 shadow-lg shadow-black/50 sticky top-0"> <!--dark:bg-black-->
<div class="flex items-center flex-shrink-0 text-white mr-6">
<svg id="logo" class="fill-current h-8 w-8 mr-2" width="54" height="54" viewBox="0 0 54 54" xmlns="http://www.w3.org/2000/svg"><path d="M13.5 22.1c1.8-7.2 6.3-10.8 13.5-10.8 10.8 0 12.15 8.1 17.55 9.45 3.6.9 6.75-.45 9.45-4.05-1.8 7.2-6.3 10.8-13.5 10.8-10.8 0-12.15-8.1-17.55-9.45-3.6-.9-6.75.45-9.45 4.05zM0 38.3c1.8-7.2 6.3-10.8 13.5-10.8 10.8 0 12.15 8.1 17.55 9.45 3.6.9 6.75-.45 9.45-4.05-1.8 7.2-6.3 10.8-13.5 10.8-10.8 0-12.15-8.1-17.55-9.45-3.6-.9-6.75.45-9.45 4.05z"/></svg>
@@ -51,6 +52,7 @@
</script>
</nav>
<div id="root">
<form id="form" action="/__add" method="post" onsubmit="return validate()">
<div class="flex flex-wrap">

View File

@@ -69,6 +69,9 @@
<p id="length" class="hidden text-red-800 text-xs">
Minimum <b>10 characters</b>
</p>
<p id="auth" class="hidden text-red-800 text-xs">
Incorrect Email or password
</p>
</div>
<div>
<button type="submit" class="flex w-full justify-center rounded-md bg-indigo-600 px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600">Log in</button>

View File

@@ -12,7 +12,7 @@
</div>
<div class="mt-10 sm:mx-auto sm:w-full sm:max-w-sm">
<form class="space-y-6" action="/__login" method="POST"> <!--Change to php-->
<form class="space-y-6" action="/__signup" method="POST"> <!--Change to php-->
<div>
<label for="email" class="block text-sm font-medium leading-6 text-gray-900">Email address</label>
<div class="mt-2">
@@ -69,10 +69,10 @@
</div>
<div>
<div class="flex items-center justify-between">
<label for="check-password" class="block text-sm font-medium leading-6 text-gray-900">Retype Password</label>
<label for="verify" class="block text-sm font-medium leading-6 text-gray-900">Retype Password</label>
</div>
<div class="mt-2 relative block">
<input id="check-password" name="check-password" type="password" autocomplete="off" required class="block w-11/12 rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6">
<input id="verify" name="verify" type="password" autocomplete="off" required class="block w-11/12 rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6">
<span id="check-pswd-invisible" class="absolute inset-y-0 right-0 flex items-center px-1 rounded-r-md">
<svg class="w-6 h-6 m-auto" fill="none" stroke="currentColor" viewBox="0 0 24 24"
@@ -96,6 +96,7 @@
<p id="check-password-error" class="hidden text-red-800 text x-s">
Passwords <b>do not</b> match
</p>
</div>
<div>
<button type="submit" class="flex w-full justify-center rounded-md bg-indigo-600 px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600">Sign up</button>

View File

@@ -2,9 +2,8 @@ let email = document.getElementById("email");
let password = document.getElementById("password");
let pswd_visible = document.getElementById("pswd-visible");
let pswd_invisible = document.getElementById("pswd-invisible");
let check_pswd_visible = document.getElementById("check-pswd-visible");
let check_pswd_invisible = document.getElementById("check-pswd-invisible");
let check_password = document.getElementById("check-password");
console.log(window.location.pathname);
pswd_visible.addEventListener('click', () => {
pswd_visible.classList.add("hidden");
pswd_invisible.classList.remove("hidden");
@@ -15,16 +14,21 @@ pswd_invisible.addEventListener('click', () => {
pswd_visible.classList.remove("hidden");
password.type = "text";
});
check_pswd_visible.addEventListener('click', () => {
check_pswd_visible.classList.add("hidden");
check_pswd_invisible.classList.remove("hidden");
check_password.type = "password";
});
check_pswd_invisible.addEventListener('click', () => {
check_pswd_invisible.classList.add("hidden");
check_pswd_visible.classList.remove("hidden");
check_password.type = "text";
});
if (window.location.pathname === '/signup.html') {
let check_pswd_visible = document.getElementById("check-pswd-visible");
let check_pswd_invisible = document.getElementById("check-pswd-invisible");
let check_password = document.getElementById("verify");
check_pswd_visible.addEventListener('click', () => {
check_pswd_visible.classList.add("hidden");
check_pswd_invisible.classList.remove("hidden");
check_password.type = "password";
});
check_pswd_invisible.addEventListener('click', () => {
check_pswd_invisible.classList.add("hidden");
check_pswd_visible.classList.remove("hidden");
check_password.type = "text";
});
}
let emailRX = new RegExp("^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z]+)+$");
let domainError = document.getElementById("domain");
let domainRX = new RegExp("^[a-zA-Z0-9!@#$%^&*]*$");
@@ -39,9 +43,20 @@ let symbolRX = new RegExp(".*[!@#$%^&*]+");
let symbolError = document.getElementById("symbol");
let MIN_LENGTH = 10;
let lenError = document.getElementById("length");
let check_password_error = document.getElementById("check-password-error");
if (window.location.pathname === '/login.html') {
let auth_error = document.getElementById("auth");
let query = window.location.search;
const urlParams = new URLSearchParams(query);
const errorType = urlParams.get('error');
console.log(window.location.pathname);
if (errorType === 'auth') {
auth_error.classList.add('block');
auth_error.classList.remove('hidden');
} else {
auth_error.classList.remove('block');
auth_error.classList.add('hidden');
}
}
email.addEventListener('keyup', function(event) {
if (emailRX.test(email.value)) {
console.log("email valid");
@@ -64,79 +79,90 @@ email.addEventListener('keyup', function(event) {
}
});
password.addEventListener('keyup', () => {
let pswd = password.value;
if (!capsRX.test(pswd)) {
capsError.classList.remove("hidden");
capsError.classList.add("block");
if (document.location.pathname === '/login.html') {
if (document.getElementById('auth').classList.contains('block')) {
document.getElementById('auth').classList.remove('block');
document.getElementById('auth').classList.add('hidden');
}
} else {
capsError.classList.add("hidden");
capsError.classList.remove("block");
}
if (!lowRX.test(pswd)) {
lowError.classList.remove("hidden");
lowError.classList.add("block");
} else {
lowError.classList.add("hidden");
lowError.classList.remove("block");
}
if (!numRX.test(pswd)) {
numError.classList.remove("hidden");
numError.classList.add("block");
} else {
numError.classList.add("hidden");
numError.classList.remove("block");
}
if (!symbolRX.test(pswd)) {
symbolError.classList.remove("hidden");
symbolError.classList.add("block");
} else {
symbolError.classList.add("hidden");
symbolError.classList.remove("block");
}
if (!domainRX.test(pswd)) {
domainError.classList.remove("hidden");
domainError.classList.add("block");
} else {
domainError.classList.add("hidden");
domainError.classList.remove("block");
}
if (pswd.length < MIN_LENGTH) {
lenError.classList.remove("hidden");
lenError.classList.add("block");
} else {
lenError.classList.add("hidden");
lenError.classList.remove("block");
}
if (capsError.classList.contains("block") || lowError.classList.contains("block") || numError.classList.contains("block") || symbolError.classList.contains("block") || lenError.classList.contains("block")) {
password.classList.remove("ring-green-400");
password.classList.remove("focus:ring-green-400");
password.classList.add("ring-red-400");
password.classList.add("focus:ring-red-400");
} else {
password.classList.add("ring-green-400");
password.classList.add("focus:ring-green-400");
password.classList.remove("ring-red-400");
password.classList.remove("focus:ring-red-400");
let pswd = password.value;
if (!capsRX.test(pswd)) {
capsError.classList.remove("hidden");
capsError.classList.add("block");
} else {
capsError.classList.add("hidden");
capsError.classList.remove("block");
}
if (!lowRX.test(pswd)) {
lowError.classList.remove("hidden");
lowError.classList.add("block");
} else {
lowError.classList.add("hidden");
lowError.classList.remove("block");
}
if (!numRX.test(pswd)) {
numError.classList.remove("hidden");
numError.classList.add("block");
} else {
numError.classList.add("hidden");
numError.classList.remove("block");
}
if (!symbolRX.test(pswd)) {
symbolError.classList.remove("hidden");
symbolError.classList.add("block");
} else {
symbolError.classList.add("hidden");
symbolError.classList.remove("block");
}
if (!domainRX.test(pswd)) {
domainError.classList.remove("hidden");
domainError.classList.add("block");
} else {
domainError.classList.add("hidden");
domainError.classList.remove("block");
}
if (pswd.length < MIN_LENGTH) {
lenError.classList.remove("hidden");
lenError.classList.add("block");
} else {
lenError.classList.add("hidden");
lenError.classList.remove("block");
}
if (capsError.classList.contains("block") || lowError.classList.contains("block") || numError.classList.contains("block") || symbolError.classList.contains("block") || lenError.classList.contains("block")) {
password.classList.remove("ring-green-400");
password.classList.remove("focus:ring-green-400");
password.classList.add("ring-red-400");
password.classList.add("focus:ring-red-400");
} else {
password.classList.add("ring-green-400");
password.classList.add("focus:ring-green-400");
password.classList.remove("ring-red-400");
password.classList.remove("focus:ring-red-400");
}
}
});
check_password.addEventListener("keyup", () => {
let check = check_password.value;
if (check !== password.value) {
check_password_error.classList.remove("hidden");
check_password_error.classList.add("block");
} else {
check_password_error.classList.add("hidden");
check_password_error.classList.remove("block")
}
if (check_password_error.classList.contains("block")) {
check_password.classList.remove("ring-green-400");
check_password.classList.remove("focus:ring-green-400");
check_password.classList.add("ring-red-400");
check_password.classList.add("focus:ring-red-400");
} else {
check_password.classList.add("ring-green-400");
check_password.classList.add("focus:ring-green-400");
check_password.classList.remove("ring-red-400");
check_password.classList.remove("focus:ring-red-400");
}
});
if (window.location.pathname === '/signup.html') {
let check_password = document.getElementById("verify");
let check_password_error = document.getElementById("check-password-error");
check_password.addEventListener("keyup", () => {
let check = check_password.value;
if (check !== password.value) {
check_password_error.classList.remove("hidden");
check_password_error.classList.add("block");
} else {
check_password_error.classList.add("hidden");
check_password_error.classList.remove("block")
}
if (check_password_error.classList.contains("block")) {
check_password.classList.remove("ring-green-400");
check_password.classList.remove("focus:ring-green-400");
check_password.classList.add("ring-red-400");
check_password.classList.add("focus:ring-red-400");
} else {
check_password.classList.add("ring-green-400");
check_password.classList.add("focus:ring-green-400");
check_password.classList.remove("ring-red-400");
check_password.classList.remove("focus:ring-red-400");
}
});
}