mirror of
https://github.com/xfarrow/blink
synced 2025-02-11 07:30:35 +01:00
reset password complete
This commit is contained in:
parent
9561b874a2
commit
68dafe32d1
@ -48,7 +48,7 @@ async function resetPassword(password, secret) {
|
||||
|
||||
// Delete all the requests associated with that e-mail
|
||||
await tr('RequestResetPassword').where({
|
||||
email
|
||||
email: request.email
|
||||
}).del();
|
||||
});
|
||||
}
|
||||
|
@ -44,8 +44,8 @@ async function reset(req, res) {
|
||||
const diffMilliseconds = Date.now() - requester.time_of_request.getTime();
|
||||
// Check whether the request was not performed more than 30 minutes ago
|
||||
if (diffMilliseconds / (1000 * 60) <= 30) {
|
||||
const newPassword = await bcrypt.hash(req.body.password, 10);
|
||||
ResetPassword.resetPassword(newPassword, req.body.secret);
|
||||
const newPassword = await bcrypt.hash(req.body.password.trim(), 10);
|
||||
await ResetPassword.resetPassword(newPassword, req.body.secret);
|
||||
return res.status(204).send();
|
||||
}
|
||||
}
|
||||
|
@ -8,12 +8,11 @@
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="alert alert-success" role="alert" style="display: none;">
|
||||
An e-mail has been sent to reset your password
|
||||
<body style="display: none;">
|
||||
<div class="alert alert-success" role="alert" id="successAlert" style="display: none;">
|
||||
</div>
|
||||
<div class="alert alert-danger" role="alert" style="display: none;">
|
||||
This is a danger alert—check it out!
|
||||
|
||||
<div class="alert alert-danger" role="alert" id="errorAlert" style="display: none;">
|
||||
</div>
|
||||
<div class="container d-flex flex-column">
|
||||
<div class="row align-items-center justify-content-center
|
||||
@ -27,14 +26,18 @@
|
||||
<form>
|
||||
<div class="mb-3">
|
||||
<input type="password" id="password" class="form-control" name="password"
|
||||
placeholder="Your new password">
|
||||
placeholder="Your new password" onblur="passwordLosesFocus();">
|
||||
<div class="invalid-feedback" id="password-invalid-feedback">
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<input type="password" id="confirmPassword" class="form-control" name="confirmPassword"
|
||||
placeholder="Confirm password">
|
||||
placeholder="Confirm password" onblur="confirmPasswordLosesFocus();">
|
||||
<div class="invalid-feedback" id="confirmpassword-invalid-feedback">
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 d-grid">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<button type="button" class="btn btn-primary" onclick="resetPassword();">
|
||||
Reset
|
||||
</button>
|
||||
</div>
|
||||
@ -45,6 +48,105 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="../js/constants.js"></script>
|
||||
<script src="../js/utils.js"></script>
|
||||
|
||||
<script>
|
||||
window.addEventListener("load", function () {
|
||||
const secret = new URLSearchParams(window.location.search).get('secret');
|
||||
if(!secret){
|
||||
alert('Invalid URL');
|
||||
}
|
||||
else{
|
||||
document.body.style.display = "block"; // Show page
|
||||
}
|
||||
});
|
||||
|
||||
async function resetPassword() {
|
||||
if (!validateFields()) {
|
||||
return;
|
||||
}
|
||||
const password = document.getElementById("password").value;
|
||||
const secret = new URLSearchParams(window.location.search).get('secret');
|
||||
|
||||
const response = await fetch(`${API_URL}/resetpassword/reset`, {
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
password,
|
||||
secret
|
||||
}),
|
||||
headers: createHeaders(null)
|
||||
});
|
||||
if (response.ok) {
|
||||
showSuccessAlert('Your password has been changed. You can now <a href="/login.html">log in</a>');
|
||||
} else {
|
||||
showErrorAlert('URL either not valid or the link has expired. Please require another <a href="forgot-password.html">password reset</a>');
|
||||
}
|
||||
}
|
||||
|
||||
function passwordLosesFocus() {
|
||||
|
||||
}
|
||||
|
||||
function confirmPasswordLosesFocus() {
|
||||
|
||||
}
|
||||
|
||||
function validateFields() {
|
||||
const passwordField = document.getElementById("password");
|
||||
const confirmPasswordField = document.getElementById("confirmPassword");
|
||||
var isFormValid = true;
|
||||
|
||||
if (!passwordField.value) {
|
||||
passwordField.classList.add("is-invalid");
|
||||
document.getElementById('password-invalid-feedback').innerHTML = 'Please fill out this field';
|
||||
isFormValid = false;
|
||||
} else if (passwordField.value.length < 5) {
|
||||
passwordField.classList.add("is-invalid");
|
||||
document.getElementById('password-invalid-feedback').innerHTML =
|
||||
'Password must be at least 5 characters';
|
||||
isFormValid = false;
|
||||
} else if (passwordField.value != confirmPasswordField.value) {
|
||||
passwordField.classList.add("is-invalid");
|
||||
document.getElementById('password-invalid-feedback').innerHTML = 'Passwords do not match';
|
||||
isFormValid = false;
|
||||
}
|
||||
|
||||
if (!confirmPasswordField.value) {
|
||||
confirmPasswordField.classList.add("is-invalid");
|
||||
document.getElementById('confirmpassword-invalid-feedback').innerHTML = 'Please fill out this field';
|
||||
isFormValid = false;
|
||||
} else if (confirmPasswordField.value.length < 5) {
|
||||
confirmPasswordField.classList.add("is-invalid");
|
||||
document.getElementById('confirmpassword-invalid-feedback').innerHTML =
|
||||
'Password must be at least 5 characters';
|
||||
isFormValid = false;
|
||||
} else if (passwordField.value != confirmPasswordField.value) {
|
||||
confirmPasswordField.classList.add("is-invalid");
|
||||
document.getElementById('confirmpassword-invalid-feedback').innerHTML = 'Passwords do not match';
|
||||
isFormValid = false;
|
||||
}
|
||||
|
||||
if (isFormValid) {
|
||||
confirmPasswordField.classList.remove("is-invalid");
|
||||
passwordField.classList.remove("is-invalid");
|
||||
}
|
||||
return isFormValid;
|
||||
}
|
||||
|
||||
function showSuccessAlert(message) {
|
||||
const successAlert = document.getElementById('successAlert');
|
||||
successAlert.innerHTML = message;
|
||||
successAlert.style.display = 'block';
|
||||
}
|
||||
|
||||
function showErrorAlert(message) {
|
||||
const errorAlert = document.getElementById('errorAlert');
|
||||
errorAlert.innerHTML = message;
|
||||
errorAlert.style.display = 'block';
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
x
Reference in New Issue
Block a user