Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8" />
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <title>Document</title>
- </head>
- <body>
- <div id="loginForm">
- <h1>Login</h1>
- <label for="loginEmail">Email: </label>
- <input type="email" name="loginEmail" id="loginEmail" />
- <br /><br />
- <label for="loginPassword">Password: </label>
- <input type="password" name="loginPassword" id="loginPassword" />
- <br /><br />
- <input type="submit" name="login" id="login" value="Login" />
- <p>
- If you want to register <a href="#" id="wantToRegister">Click Here</a>
- </p>
- </div>
- <div id="registerForm">
- <h1>Register</h1>
- <label for="registrationEmail">Enter your email: </label>
- <input type="email" name="registerEmail" id="registerEmail" required />
- <br /><br />
- <label for="confirmEmail">Re-enter your email</label>
- <input type="email" name="confirmEmail" id="confirmEmail" required />
- <br /><br />
- <label for="registerPassword">Enter your password: </label>
- <input type="text" name="registerPassword" id="registerPassword" />
- <div id="regErrors"></div>
- <br /><br />
- <input type="submit" name="register" id="register" value="Register" />
- <p>If you want to login <a href="#" id="wantToLogin">Click Here</a></p>
- </div>
- <script>
- /*
- let users = []
- 1. Login Form
- - email (validate if its an email, [email protected] [email protected] )
- - password (hidden with *)
- - login button
- After login attempt check if user exists and give back response
- - if email is matched, but password isnt, say "Wrong password"
- - if no email exists, say "Account with that email doesnt exist"
- 2. Register Form
- - email (validate if its an email, [email protected] [email protected])
- (onblur)
- (email is already used by another person)
- - confirm email (to be the same as above)
- - setPassword (rules, 1 special char, 1 number, 1 upperCase, min 8 char)
- - register button
- - disable button if email is already used
- - alert if succesful login/reigster
- */
- let loginForm = document.getElementById("loginForm");
- let registerForm = document.getElementById("registerForm");
- let linkToRegister = document.getElementById("wantToRegister");
- let linkToLogin = document.getElementById("wantToLogin");
- let loginButton = document.getElementById("login");
- let registerButton = document.getElementById("register");
- //Navigation
- //Default no register form
- registerForm.style.display = "none";
- linkToRegister.addEventListener("click", () => {
- loginForm.style.display = "none";
- registerForm.style.display = "block";
- });
- linkToLogin.addEventListener("click", () => {
- loginForm.style.display = "block";
- registerForm.style.display = "none";
- });
- //Registration
- let usersFromLS = localStorage.getItem("users");
- let users;
- if (usersFromLS) {
- users = JSON.parse(usersFromLS);
- } else {
- users = [];
- }
- function checkEmail(email) {
- return String(email)
- .toLowerCase()
- .match(
- /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
- );
- }
- class User {
- constructor(email, password) {
- this.email = email;
- this.password = password;
- }
- }
- //Validate password
- let registerPassword = document.getElementById("registerPassword");
- registerPassword.onkeyup = function (event) {
- let value = event.target.value;
- let errors = {
- badLength: "Password must have at least 8 charachters",
- noCapital: "The password must have at least one capital letter",
- noNumber: "The password must have at least one number",
- noSpecial: "The password must have at least one special character",
- };
- let hasBadLength = value.length < 8;
- let hasCapital = /[A-Z]/g.test(value);
- let hasNumber = /[0-9]/.test(value);
- let hasSpecialCase = /[`!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]/.test(
- value
- );
- let errorDiv = document.getElementById("regErrors");
- errorDiv.innerHTML = "";
- let errorStrings = [];
- if (hasBadLength) {
- errorStrings.push(errors.badLength);
- }
- if (!hasCapital) {
- errorStrings.push(errors.noCapital);
- }
- if (!hasNumber) {
- errorStrings.push(errors.noNumber);
- }
- if (!hasSpecialCase) {
- errorStrings.push(errors["noSpecial"]);
- }
- console.log("hi", errorStrings);
- if (value.length) {
- for (const errorText of errorStrings) {
- let errorNode = document.createElement("small");
- errorNode.innerText = errorText;
- errorNode.style.color = "red";
- errorNode.style.display = "block";
- errorDiv.append(errorNode);
- }
- }
- let validPassword =
- hasSpecialCase && hasNumber && hasCapital && !hasBadLength;
- if (!validPassword) {
- registerButton.setAttribute("disabled", "disabled");
- } else {
- registerButton.removeAttribute("disabled");
- }
- };
- //Add errors as default and onkeydown change them
- let email2 = document.getElementById("confirmEmail");
- let email1 = document.getElementById("registerEmail");
- email2.onkeyup = function () {
- if (email1.value !== email2.value) {
- email2.style.border = "1px solid red";
- // dodavame kod
- // email2.after()
- } else {
- email2.style.border = "1px solid black";
- }
- };
- //Validate email and make new User
- registerButton.addEventListener("click", () => {
- let email1 = document.getElementById("registerEmail");
- let email2 = document.getElementById("confirmEmail");
- let regPassword = document.getElementById("registerPassword");
- if (checkEmail(email1.value) && email1.value === email2.value) {
- if (true || validatePassword(regPassword.value)) {
- users.push(new User(email1.value, regPassword.value));
- localStorage.setItem("users", JSON.stringify(users));
- email1.value = "";
- email2.value = "";
- regPassword.value = "";
- for (const error of errorP) {
- error.style.color = "red";
- }
- registerForm.style.display = "none";
- loginForm.style.display = "block";
- alert("Succesfully registered");
- } else {
- alert("Please enter a valid password");
- }
- } else {
- alert(
- "Enter valid email and the email must be the same with confirmation email"
- );
- }
- });
- //Login
- loginButton.addEventListener("click", () => {
- let loginEmail = document.getElementById("loginEmail");
- let loginPassword = document.getElementById("loginPassword");
- const userExists = users.find(
- (user) => user.email === loginEmail.value
- );
- const okPassword = userExists.password === loginPassword.value;
- console.log(userExists, users, loginEmail.value);
- if (userExists && userExists.email === loginEmail.value) {
- alert("Congratulations you are logged in");
- } else if (!okPassword) {
- alert("wrong password");
- } else {
- alert("There is no such user, wrong email");
- }
- // login
- });
- </script>
- </body>
- </html>
Advertisement