import { Express } from 'express' import config from '../config' import { prismaClient as prisma } from '../prismaClient' export default (server: Express) => { server.get('/auth/resetPassword', async (req, res) => { const { token } = req.query try { if (!token) { throw new Error('Invalid token') } const user = ( await prisma.user.findMany({ where: { resetPasswordToken: token as string }, take: 1, select: { id: true, preferedLanguage: true, role: true, resetPasswordToken: true, phone: { select: { number: true, }, }, }, }) )[0] if (!user) { // To use FR or EN we will need to pass the userId in the req.query... return res.render('already-reset-password', { layout: 'default', managingCompanyLogoUrl: 'https://res.cloudinary.com/din7dm84v/image/upload/v1573754550/walter/logos/Icon-256.png', }) } // Reset password flow for web const redirectUri = user.role === 'RESIDENT' ? `${config.residentWebHostName}/auth/reset-password?token=${token}` : `${config.managerWebHostName}/auth/reset-password?token=${token}` return res.status(200).redirect(redirectUri) } catch (error) { return res.status(400).send(error?.message || 'Invalid. Please try again.') } }) }