feat: add captcha to forgot password requests

This commit is contained in:
Daniloch
2024-05-31 03:42:35 -03:00
parent 5facbdacdf
commit d4e7d32410
6 changed files with 67 additions and 35 deletions

View File

@@ -152,12 +152,37 @@ router.get('/logout', async (_request, response) => {
});
router.get('/forgot-password', async (request, response) => {
response.render('account/forgot-password');
const renderData = {
input: request.cookies.input,
success_message: request.cookies.success_message,
error_message: request.cookies.error_message,
}
response.clearCookie('input', { domain: '.pretendo.network' });
response.render('account/forgot-password', renderData);
});
router.post('/forgot-password', async (request, response) => {
const apiResponse = await util.apiPostRequest('/v1/forgot-password', {}, request.body);
response.json(apiResponse.body);
const { input, 'h-captcha-response': hCaptchaResponse } = request.body;
response.cookie('input', input, { domain: '.pretendo.network' });
try {
await util.forgotPassword({
input,
hCaptchaResponse
})
response.clearCookie('input', { domain: '.pretendo.network' });
response.cookie('success_message', 'An email has been sent.', { domain: '.pretendo.network' });
response.redirect(request.redirect || '/account/forgot-password');
} catch (error) {
response.cookie('error_message', error.message, { domain: '.pretendo.network' });
return response.redirect('/account/forgot-password');
}
});
router.get('/reset-password', async (request, response) => {

View File

@@ -130,6 +130,16 @@ async function login(username, password) {
return apiResponse.body;
}
async function forgotPassword(forgotPasswordData) {
const apiResponse = await apiPostRequest('/v1/forgot-password', {}, forgotPasswordData);
if (apiResponse.statusCode !== 200) {
throw new Error(apiResponse.body.error);
}
return apiResponse.body;
}
async function refreshLogin(request, response) {
const apiResponse = await apiPostRequest('/v1/login', {}, {
refresh_token: request.cookies.refresh_token,
@@ -260,7 +270,8 @@ module.exports = {
apiPostRequest,
apiDeleteRequest,
register,
login,
login,
forgotPassword,
refreshLogin,
getUserAccountData,
updateDiscordConnection,