mirror of
https://github.com/PretendoNetwork/website.git
synced 2026-08-19 15:21:37 -05:00
feat: add captcha to forgot password requests
This commit is contained in:
@@ -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) => {
|
||||
|
||||
13
src/util.js
13
src/util.js
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user