fix: AWS SES configuration and email verification flow

Changes:
- Updated AWS_REGION to eu-central-1 in env examples
- Fixed email verification to return new JWT token with updated emailVerified status
- Added updateUser function to AuthContext for token refresh
- Updated frontend to save new token after email verification
- Fixed variable naming conflict (token vs jwtToken) in verification endpoints
- Changed WSDC ID placeholder from 26997 to 12345

This ensures the verification banner disappears immediately after
email verification without requiring re-login.
This commit is contained in:
Radosław Gierwiało
2025-11-13 18:59:28 +01:00
parent 3ff966defc
commit 27ee0ae365
5 changed files with 43 additions and 5 deletions

View File

@@ -191,7 +191,7 @@ async function verifyEmailByToken(req, res, next) {
}
// Update user - mark as verified and clear tokens
await prisma.user.update({
const updatedUser = await prisma.user.update({
where: { id: user.id },
data: {
emailVerified: true,
@@ -208,9 +208,19 @@ async function verifyEmailByToken(req, res, next) {
console.error('Failed to send welcome email:', emailError);
}
// Generate new JWT token with updated emailVerified status
const jwtToken = generateToken({ userId: updatedUser.id });
// Remove sensitive data
const { passwordHash, verificationToken, verificationCode, verificationTokenExpiry, resetToken, resetTokenExpiry, ...userWithoutPassword } = updatedUser;
res.status(200).json({
success: true,
message: 'Email verified successfully!',
data: {
user: userWithoutPassword,
token: jwtToken,
},
});
} catch (error) {
next(error);
@@ -261,7 +271,7 @@ async function verifyEmailByCode(req, res, next) {
}
// Update user - mark as verified and clear tokens
await prisma.user.update({
const updatedUser = await prisma.user.update({
where: { id: user.id },
data: {
emailVerified: true,
@@ -278,9 +288,19 @@ async function verifyEmailByCode(req, res, next) {
console.error('Failed to send welcome email:', emailError);
}
// Generate new JWT token with updated emailVerified status
const jwtToken = generateToken({ userId: updatedUser.id });
// Remove sensitive data
const { passwordHash, verificationToken, verificationCode, verificationTokenExpiry, resetToken, resetTokenExpiry, ...userWithoutPassword } = updatedUser;
res.status(200).json({
success: true,
message: 'Email verified successfully!',
data: {
user: userWithoutPassword,
token: jwtToken,
},
});
} catch (error) {
next(error);