This commit is contained in:
Rakshit 2025-12-16 00:00:55 +01:00 committed by GitHub
commit c06781f102
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 11 additions and 3 deletions

View file

@ -81,6 +81,9 @@ const createTokenHash = () => {
* @returns {Promise<void>}
*/
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}]`);

View file

@ -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:

View file

@ -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