diff --git a/api/server/services/AuthService.js b/api/server/services/AuthService.js index 72bda67322..128ccabd82 100644 --- a/api/server/services/AuthService.js +++ b/api/server/services/AuthService.js @@ -81,6 +81,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 = `${ @@ -103,7 +106,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}]`); @@ -486,6 +489,9 @@ const setOpenIDAuthTokens = (tokenset, 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'); @@ -517,7 +523,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 2d0cb80abd..fc18e9bd6d 100644 --- a/librechat.example.yaml +++ b/librechat.example.yaml @@ -132,6 +132,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 bcbcb58cc2..fb5e3fc8fc 100644 --- a/packages/data-provider/src/config.ts +++ b/packages/data-provider/src/config.ts @@ -862,8 +862,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