Finish password reset (hopefully)

This commit is contained in:
2024-11-03 21:54:54 +01:00
parent b9a7f9aa8e
commit 27d8c7cff6
4 changed files with 76 additions and 4 deletions

View File

@ -2,7 +2,7 @@ import { Application, Request, Response } from 'express'
import UserService from '../services/userService'
import jwt from 'jsonwebtoken'
import config from './config'
import { loginAccountSchema, registerAccountSchema, resetPasswordSchema } from './zodTypes'
import { loginAccountSchema, registerAccountSchema, resetPasswordSchema, newPasswordSchema } from './zodTypes'
import fs from 'fs'
import { httpLogger } from './logger'
import { getPublicPath } from './storage'
@ -85,6 +85,30 @@ async function addHttpRoutes(app: Application) {
return res.status(400).json({ message: 'Failed to send password reset request' })
})
/**
* New password
* @param req
* @param res
*/
app.post('/new-password', async (req: Request, res: Response) => {
const { urlToken, password } = req.body
try {
newPasswordSchema.parse({ password })
} catch (error: any) {
return res.status(400).json({ message: error.errors[0]?.message })
}
const userService = new UserService()
const resetPassword = await userService.newPassword( urlToken, password )
if (resetPassword) {
return res.status(200).json({ message: 'Password has been reset' })
}
return res.status(400).json({ message: 'Failed to set new password' })
})
/**
* Get all tiles from a zone as an array of ids
* @param req