admin soft delete functionality, also fixed google sign in when user doesn't have first and last name

This commit is contained in:
jackiettran
2025-11-17 11:21:52 -05:00
parent 3a6da3d47d
commit e260992ef2
13 changed files with 580 additions and 33 deletions

View File

@@ -173,6 +173,7 @@ router.post(
firstName: user.firstName,
lastName: user.lastName,
isVerified: user.isVerified,
role: user.role,
},
verificationEmailSent,
// Don't send token in response body for security
@@ -269,6 +270,7 @@ router.post(
firstName: user.firstName,
lastName: user.lastName,
isVerified: user.isVerified,
role: user.role,
},
// Don't send token in response body for security
});
@@ -318,15 +320,36 @@ router.post(
const {
sub: googleId,
email,
given_name: firstName,
family_name: lastName,
given_name: givenName,
family_name: familyName,
picture,
} = payload;
if (!email || !firstName || !lastName) {
if (!email) {
return res
.status(400)
.json({ error: "Required user information not provided by Google" });
.json({ error: "Email not provided by Google" });
}
// Handle cases where Google doesn't provide name fields
// Generate fallback values from email or use placeholder
let firstName = givenName;
let lastName = familyName;
if (!firstName || !lastName) {
const emailUsername = email.split('@')[0];
// Try to split email username by common separators
const nameParts = emailUsername.split(/[._-]/);
if (!firstName) {
firstName = nameParts[0] ? nameParts[0].charAt(0).toUpperCase() + nameParts[0].slice(1) : 'Google';
}
if (!lastName) {
lastName = nameParts.length > 1
? nameParts[nameParts.length - 1].charAt(0).toUpperCase() + nameParts[nameParts.length - 1].slice(1)
: 'User';
}
}
// Check if user exists by Google ID first
@@ -422,6 +445,7 @@ router.post(
lastName: user.lastName,
profileImage: user.profileImage,
isVerified: user.isVerified,
role: user.role,
},
// Don't send token in response body for security
});
@@ -658,6 +682,7 @@ router.post("/refresh", async (req, res) => {
firstName: user.firstName,
lastName: user.lastName,
isVerified: user.isVerified,
role: user.role,
},
});
} catch (error) {