diff --git a/api/server/services/AuthService.js b/api/server/services/AuthService.js index 816a0eac5b..f40d4e26ec 100644 --- a/api/server/services/AuthService.js +++ b/api/server/services/AuthService.js @@ -91,6 +91,9 @@ const createTokenHash = () => { * @returns {Promise} */ const sendVerificationEmail = async (user) => { + const appConfig = await getAppConfig(); + const emailVerificationExpiry = appConfig?.registration?.emailVerificationExpiry || 900; + const [verifyToken, hash] = createTokenHash(); const verificationLink = `${ @@ -113,7 +116,7 @@ const sendVerificationEmail = async (user) => { email: user.email, token: hash, createdAt: Date.now(), - expiresIn: 900, + expiresIn: emailVerificationExpiry, }); logger.info(`[sendVerificationEmail] Verification link issued. [Email: ${user.email}]`); @@ -574,6 +577,9 @@ const setOpenIDAuthTokens = (tokenset, req, res, userId, existingRefreshToken) = const resendVerificationEmail = async (req) => { try { const { email } = req.body; + const appConfig = await getAppConfig(); + const emailVerificationExpiry = appConfig?.registration?.emailVerificationExpiry || 900; + await deleteTokens({ email }); const user = await findUser({ email }, 'email _id name'); @@ -605,7 +611,7 @@ const resendVerificationEmail = async (req) => { email: user.email, token: hash, createdAt: Date.now(), - expiresIn: 900, + expiresIn: emailVerificationExpiry, }); logger.info(`[resendVerificationEmail] Verification link issued. [Email: ${user.email}]`); diff --git a/librechat.example.yaml b/librechat.example.yaml index 92206c4b6e..79fa286988 100644 --- a/librechat.example.yaml +++ b/librechat.example.yaml @@ -144,6 +144,7 @@ registration: socialLogins: ['github', 'google', 'discord', 'openid', 'facebook', 'apple', 'saml'] # allowedDomains: # - "gmail.com" + # emailVerificationExpiry: 900 # Email verification link expiry time in seconds (default: 900 = 15 minutes) # Example Balance settings # balance: diff --git a/packages/data-provider/src/config.ts b/packages/data-provider/src/config.ts index ca40ec2c8c..a72d70cd91 100644 --- a/packages/data-provider/src/config.ts +++ b/packages/data-provider/src/config.ts @@ -1079,8 +1079,9 @@ export const configSchema = z.object({ .object({ socialLogins: z.array(z.string()).optional(), allowedDomains: z.array(z.string()).optional(), + emailVerificationExpiry: z.number().default(900), }) - .default({ socialLogins: defaultSocialLogins }), + .default({ socialLogins: defaultSocialLogins, emailVerificationExpiry: 900 }), balance: balanceSchema.optional(), transactions: transactionsSchema.optional(), speech: z