Skip to content

Commit

Permalink
🔐 refactor: Unverified User Verification Logic (#4482)
Browse files Browse the repository at this point in the history
  • Loading branch information
danny-avila committed Oct 27, 2024
1 parent b918854 commit d8defc6
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 3 deletions.
5 changes: 3 additions & 2 deletions api/server/services/AuthService.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const {
deleteUserById,
} = require('~/models/userMethods');
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 { hashToken } = require('~/server/utils/crypto');
const isDomainAllowed = require('./isDomainAllowed');
Expand Down Expand Up @@ -188,7 +188,8 @@ const registerUser = async (user, additionalData = {}) => {
};

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;
if (emailEnabled && !newUser.emailVerified) {
await sendVerificationEmail({
Expand Down
7 changes: 6 additions & 1 deletion api/strategies/localStrategy.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,12 @@ async function passportLogin(req, email, password, done) {
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 });
logger.error(`[Login] [Login failed] [Username: ${email}] [Request-IP: ${req.ip}]`);
return done(null, user, { message: 'Email not verified.' });
Expand Down

0 comments on commit d8defc6

Please sign in to comment.