update
This commit is contained in:
parent
30336bcb28
commit
694e76951d
@ -39,7 +39,7 @@ const transporter = nodemailer.createTransport({
|
||||
pass: process.env.epass
|
||||
},
|
||||
});
|
||||
console.log(process.env.euser);
|
||||
|
||||
app.use(bodyParser.urlencoded({ extended: true }));
|
||||
app.use(session({ secret: 'your_session_secret', resave: false, saveUninitialized: true }));
|
||||
app.set('view engine', 'ejs');
|
||||
@ -332,6 +332,7 @@ app.post('/forgot-password', (req, res) => {
|
||||
});
|
||||
});
|
||||
// Handle Reset Password request
|
||||
// Handle Reset Password request
|
||||
app.post('/reset-password/:token', async (req, res) => {
|
||||
const { token } = req.params;
|
||||
const { password, confirmPassword } = req.body;
|
||||
@ -345,17 +346,20 @@ app.post('/reset-password/:token', async (req, res) => {
|
||||
}
|
||||
|
||||
if (selectResults.length === 0) {
|
||||
return res.status(400).json({ error: 'Invalid or expired reset token' });
|
||||
// Pass the error to the template when rendering the reset-password page
|
||||
return res.render('reset-password', { token, resetError: 'Invalid or expired reset token' });
|
||||
}
|
||||
|
||||
// Check if passwords match
|
||||
if (password !== confirmPassword) {
|
||||
return res.render('reset-password', { token, error: 'Passwords do not match' });
|
||||
// Pass the error to the template when rendering the reset-password page
|
||||
return res.render('reset-password', { token, resetError: 'Passwords do not match' });
|
||||
}
|
||||
|
||||
// Check if the new password meets complexity requirements
|
||||
if (!isStrongPassword(password)) {
|
||||
return res.render('reset-password', { token, error: 'Password does not meet complexity requirements. It must be at least 10 characters long and include at least one uppercase letter, one lowercase letter, one digit, and one symbol.' });
|
||||
// Pass the error to the template when rendering the reset-password page
|
||||
return res.render('reset-password', { token, resetError: 'Password does not meet complexity requirements. It must be at least 10 characters long and include at least one uppercase letter, one lowercase letter, one digit, and one symbol.' });
|
||||
}
|
||||
|
||||
// Hash the new password
|
||||
@ -366,18 +370,24 @@ app.post('/reset-password/:token', async (req, res) => {
|
||||
mysqlConnection.query(updateQuery, [hashedPassword, token], (updateErr) => {
|
||||
if (updateErr) {
|
||||
console.error('Error updating password:', updateErr);
|
||||
res.status(500).json({ error: 'Error updating password' });
|
||||
// Pass the error to the template when rendering the reset-password page
|
||||
res.render('reset-password', { token, resetError: 'Error updating password' });
|
||||
} else {
|
||||
res.render('reset-password', { error: null, success: 'Password changed successfully', token });
|
||||
// Pass the success message to the template when rendering the reset-password page
|
||||
res.render('reset-password', { token, resetError: null, success: 'Password changed successfully' });
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
app.get('/reset-password/:token', (req, res) => {
|
||||
const { token } = req.params;
|
||||
const error = req.query.error || null; // Get error from query parameter
|
||||
res.render('reset-password', { token, error: null, success: null });
|
||||
// Assuming you have this line in your server code where you render the reset-password view
|
||||
res.render('reset-password', { token, passwordValidationError: null, resetError: null, success: null });
|
||||
|
||||
});
|
||||
|
||||
app.use(express.static('views'));
|
||||
|
@ -76,8 +76,8 @@
|
||||
<% } %>
|
||||
|
||||
<div class="input-box">
|
||||
<span class="details">Username or Email</span>
|
||||
<input type="text" name="usernameOrEmail" placeholder="Enter your username or email" required>
|
||||
<span class="details">Username</span>
|
||||
<input type="text" name="usernameOrEmail" placeholder="Enter your email" required>
|
||||
</div>
|
||||
|
||||
<div class="button">
|
||||
|
@ -57,7 +57,7 @@
|
||||
<td><%= user.email %></td>
|
||||
<td><%= user.password %></td>
|
||||
<td><%= new Date(user.lastLogin).toLocaleString('en-US', { timeZone: 'Asia/Singapore' }) %></td>
|
||||
<td><%= user.jobTitle %></td>
|
||||
<td><%= user.jobTitle %></td>
|
||||
</tr>
|
||||
<% }); %>
|
||||
<% } else { %>
|
||||
@ -254,6 +254,7 @@ document.getElementById('userForm').addEventListener('submit', function (event)
|
||||
console.error('No data available for download.');
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
</div>
|
||||
|
@ -10,13 +10,15 @@
|
||||
</head>
|
||||
<body>
|
||||
<div class="container mt-5">
|
||||
<% if (error) { %>
|
||||
<div class="alert alert-danger"><%= error %></div>
|
||||
<% if (resetError) { %>
|
||||
<div class="alert alert-danger mb-3"><%= resetError %></div>
|
||||
<% } else if (success) { %>
|
||||
<div class="alert alert-success"><%= success %></div>
|
||||
<div class="alert alert-success mb-3"><%= success %></div>
|
||||
<p>Password changed successfully. <a href="/login">Click here to log in</a>.</p>
|
||||
<% } else { %>
|
||||
<h2 class="mb-4">Reset Your Password</h2>
|
||||
<% if (passwordValidationError) { %>
|
||||
<div class="alert alert-danger mb-3"><%= passwordValidationError %></div>
|
||||
<% } %>
|
||||
<form action="/reset-password/<%= token %>" method="post">
|
||||
<div class="form-group">
|
||||
<label for="password">New Password:</label>
|
||||
@ -32,3 +34,9 @@
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user