Add JWT configuration and improve email error handling
All checks were successful
Build And Push Image / docker (push) Successful in 2m51s
All checks were successful
Build And Push Image / docker (push) Successful in 2m51s
- Add jwtSecret to runtime config with fallback to sessionSecret - Enhance email error tracking in portal account creation API - Fix jsonwebtoken imports and improve type safety - Include detailed email error information in API responses
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { sign, verify } from 'jsonwebtoken';
|
||||
import jwt from 'jsonwebtoken';
|
||||
|
||||
export interface EmailVerificationTokenPayload {
|
||||
userId: string;
|
||||
@@ -27,7 +27,7 @@ export async function generateEmailVerificationToken(userId: string, email: stri
|
||||
iat: Date.now()
|
||||
};
|
||||
|
||||
const token = sign(payload, runtimeConfig.jwtSecret, {
|
||||
const token = jwt.sign(payload, runtimeConfig.jwtSecret as string, {
|
||||
expiresIn: '24h',
|
||||
issuer: 'monacousa-portal',
|
||||
audience: 'email-verification'
|
||||
@@ -62,10 +62,10 @@ export async function verifyEmailToken(token: string): Promise<{ userId: string;
|
||||
|
||||
try {
|
||||
// Verify JWT signature and expiration
|
||||
const decoded = verify(token, runtimeConfig.jwtSecret, {
|
||||
const decoded = jwt.verify(token, runtimeConfig.jwtSecret as string, {
|
||||
issuer: 'monacousa-portal',
|
||||
audience: 'email-verification'
|
||||
}) as EmailVerificationTokenPayload;
|
||||
}) as any as EmailVerificationTokenPayload;
|
||||
|
||||
// Validate token purpose
|
||||
if (decoded.purpose !== 'email-verification') {
|
||||
@@ -118,10 +118,10 @@ export async function isTokenValid(token: string): Promise<boolean> {
|
||||
return false;
|
||||
}
|
||||
|
||||
const decoded = verify(token, runtimeConfig.jwtSecret, {
|
||||
const decoded = jwt.verify(token, runtimeConfig.jwtSecret as string, {
|
||||
issuer: 'monacousa-portal',
|
||||
audience: 'email-verification'
|
||||
}) as EmailVerificationTokenPayload;
|
||||
}) as any as EmailVerificationTokenPayload;
|
||||
|
||||
return decoded.purpose === 'email-verification' && activeTokens.has(token);
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user