From dbc1cb0a7776372d8105cd2fe90d856af1dac8cb Mon Sep 17 00:00:00 2001 From: Michael Thomas Date: Tue, 12 Nov 2024 10:50:23 -0500 Subject: [PATCH] style(usersettings): improve syntax & performance of user password checks --- server/routes/user/usersettings.ts | 38 +++++++++++++----------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/server/routes/user/usersettings.ts b/server/routes/user/usersettings.ts index 6bba393fb..6ee0f8937 100644 --- a/server/routes/user/usersettings.ts +++ b/server/routes/user/usersettings.ts @@ -366,9 +366,13 @@ userSettingsRoutes.delete<{ id: string }>( } try { - const user = await userRepository.findOne({ - where: { id: Number(req.params.id) }, - }); + const user = await userRepository + .createQueryBuilder('user') + .addSelect('user.password') + .where({ + id: Number(req.params.id), + }) + .getOne(); if (!user) { return res.status(404).json({ message: 'User not found.' }); @@ -381,14 +385,7 @@ userSettingsRoutes.delete<{ id: string }>( }); } - const hasPassword = !!( - await userRepository.findOne({ - where: { id: user.id }, - select: ['id', 'password'], - }) - )?.password; - - if (!user.email || !hasPassword) { + if (!user.email || !user.password) { return res.status(400).json({ message: 'User does not have a local email or password set.', }); @@ -524,9 +521,13 @@ userSettingsRoutes.delete<{ id: string }>( } try { - const user = await userRepository.findOne({ - where: { id: Number(req.params.id) }, - }); + const user = await userRepository + .createQueryBuilder('user') + .addSelect('user.password') + .where({ + id: Number(req.params.id), + }) + .getOne(); if (!user) { return res.status(404).json({ message: 'User not found.' }); @@ -539,14 +540,7 @@ userSettingsRoutes.delete<{ id: string }>( }); } - const hasPassword = !!( - await userRepository.findOne({ - where: { id: user.id }, - select: ['id', 'password'], - }) - )?.password; - - if (!user.email || !hasPassword) { + if (!user.email || !user.password) { return res.status(400).json({ message: 'User does not have a local email or password set.', });