Upload files to "templates"

This commit is contained in:
2024-11-29 14:35:49 -05:00
parent 007ce3959d
commit 48463d414b
4 changed files with 114 additions and 143 deletions

View File

@ -3,32 +3,7 @@
{% block content %}
<h1>Create an Account</h1>
<form method="POST">
<div>
<label for="username">Username</label>
<input type="text" id="username" name="username" required>
</div>
<div>
<label for="email">Email</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="password">Password</label>
<input type="password" id="password" name="password" required>
<small>Password must be at least 10 characters, contain 1 uppercase letter, 1 special character, and 1 number.</small>
</div>
<div>
<label for="confirm_password">Confirm Password</label>
<input type="password" id="confirm_password" name="confirm_password" required>
</div>
<button type="submit" id="submit" disabled>Create Account</button>
</form>
<div id="password-requirements">
<div id="password-requirements" class="hidden">
<ul>
<li id="min-length">Minimum 10 characters: ❌</li>
<li id="uppercase">At least 1 uppercase letter: ❌</li>
@ -38,45 +13,51 @@
</ul>
</div>
<form method="POST">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
<label for="confirm_password">Confirm Password:</label>
<input type="password" id="confirm_password" name="confirm_password" required>
<button type="submit">Register</button>
</form>
<script>
const passwordInput = document.getElementById('password');
const confirmPasswordInput = document.getElementById('confirm_password');
const submitButton = document.getElementById('submit');
const passwordField = document.getElementById('password');
const confirmPasswordField = document.getElementById('confirm_password');
const passwordRequirements = document.getElementById('password-requirements');
const minLengthRequirement = document.getElementById('min-length');
const uppercaseRequirement = document.getElementById('uppercase');
const specialCharRequirement = document.getElementById('special-char');
const numberRequirement = document.getElementById('number');
const matchRequirement = document.getElementById('match');
function showRequirements() {
passwordRequirements.classList.remove('hidden');
}
function validatePassword() {
const password = passwordInput.value;
const confirmPassword = confirmPasswordInput.value;
// Regex pattern for password validation
const passwordPattern = /^(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{10,}$/;
const passwordValid = passwordPattern.test(password);
const passwordsMatch = password === confirmPassword;
// Check each validation rule and update the corresponding list item
minLengthRequirement.textContent = password.length >= 10 ? "Minimum 10 characters: ✔" : "Minimum 10 characters: ❌";
uppercaseRequirement.textContent = /[A-Z]/.test(password) ? "At least 1 uppercase letter: ✔" : "At least 1 uppercase letter: ❌";
specialCharRequirement.textContent = /[\W_]/.test(password) ? "At least 1 special character: ✔" : "At least 1 special character: ❌";
numberRequirement.textContent = /\d/.test(password) ? "At least 1 number: ✔" : "At least 1 number: ❌";
matchRequirement.textContent = passwordsMatch ? "Passwords match: ✔" : "Passwords match: ❌";
// Enable submit button only if all conditions are met
if (passwordValid && passwordsMatch) {
submitButton.disabled = false;
} else {
submitButton.disabled = true;
function hideRequirements() {
if (!passwordField.value && !confirmPasswordField.value) {
passwordRequirements.classList.add('hidden');
}
}
// Event listeners for password input and confirmation
passwordInput.addEventListener('input', validatePassword);
confirmPasswordInput.addEventListener('input', validatePassword);
// Event listeners for showing and hiding the requirements
passwordField.addEventListener('focus', showRequirements);
passwordField.addEventListener('blur', hideRequirements);
confirmPasswordField.addEventListener('focus', showRequirements);
confirmPasswordField.addEventListener('blur', hideRequirements);
// Prevent hiding on invalid form submission
document.querySelector('form').addEventListener('submit', (event) => {
if (!passwordField.value || !confirmPasswordField.value) {
passwordRequirements.classList.remove('hidden');
}
});
</script>
{% endblock %}