🔐 refactor: Unverified User Verification Logic (#4482)

This commit is contained in:
Danny Avila 2024-10-21 07:51:45 -04:00 committed by GitHub
parent 4d4a6b53f1
commit f121439960
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 9 additions and 3 deletions

View file

@ -11,7 +11,7 @@ const {
deleteUserById, deleteUserById,
} = require('~/models/userMethods'); } = require('~/models/userMethods');
const { createToken, findToken, deleteTokens, Session } = require('~/models'); const { createToken, findToken, deleteTokens, Session } = require('~/models');
const { sendEmail, checkEmailConfig } = require('~/server/utils'); const { isEnabled, checkEmailConfig, sendEmail } = require('~/server/utils');
const { registerSchema } = require('~/strategies/validators'); const { registerSchema } = require('~/strategies/validators');
const { hashToken } = require('~/server/utils/crypto'); const { hashToken } = require('~/server/utils/crypto');
const isDomainAllowed = require('./isDomainAllowed'); const isDomainAllowed = require('./isDomainAllowed');
@ -188,7 +188,8 @@ const registerUser = async (user, additionalData = {}) => {
}; };
const emailEnabled = checkEmailConfig(); const emailEnabled = checkEmailConfig();
const newUser = await createUser(newUserData, false, true); const disableTTL = isEnabled(process.env.ALLOW_UNVERIFIED_EMAIL_LOGIN);
const newUser = await createUser(newUserData, disableTTL, true);
newUserId = newUser._id; newUserId = newUser._id;
if (emailEnabled && !newUser.emailVerified) { if (emailEnabled && !newUser.emailVerified) {
await sendVerificationEmail({ await sendVerificationEmail({

View file

@ -48,7 +48,12 @@ async function passportLogin(req, email, password, done) {
user.emailVerified = true; user.emailVerified = true;
} }
if (!user.emailVerified && !isEnabled(process.env.ALLOW_UNVERIFIED_EMAIL_LOGIN)) { const unverifiedAllowed = isEnabled(process.env.ALLOW_UNVERIFIED_EMAIL_LOGIN);
if (user.expiresAt && unverifiedAllowed) {
await updateUser(user._id, {});
}
if (!user.emailVerified && !unverifiedAllowed) {
logError('Passport Local Strategy - Email not verified', { email }); logError('Passport Local Strategy - Email not verified', { email });
logger.error(`[Login] [Login failed] [Username: ${email}] [Request-IP: ${req.ip}]`); logger.error(`[Login] [Login failed] [Username: ${email}] [Request-IP: ${req.ip}]`);
return done(null, user, { message: 'Email not verified.' }); return done(null, user, { message: 'Email not verified.' });