From 415c9c3b77ffc6deb0680278bb6671cc4a9b17e7 Mon Sep 17 00:00:00 2001 From: kyle hoell Date: Thu, 3 Dec 2020 19:32:57 -0500 Subject: [PATCH] added disable email verification option --- backend/enviroment/env.ts | 2 ++ backend/middleware/auth.ts | 2 +- backend/middleware/authFullUser.ts | 2 +- backend/middleware/authNoEmailVerificication.ts | 2 +- backend/models/user.ts | 2 +- backend/services/UserService/index.ts | 4 ++-- src/actions/auth.js | 2 +- 7 files changed, 9 insertions(+), 7 deletions(-) diff --git a/backend/enviroment/env.ts b/backend/enviroment/env.ts index 47b905a..1c83bc9 100644 --- a/backend/enviroment/env.ts +++ b/backend/enviroment/env.ts @@ -18,6 +18,7 @@ export default { sendgridKey: process.env.SENDGRID_KEY, sendgridEmail: process.env.SENDGRID_EMAIL, remoteURL: process.env.REMOTE_URL, + disableEmailVerification: process.env.DISABLE_EMAIL_VERIFICATION } module.exports = { @@ -40,4 +41,5 @@ module.exports = { sendgridKey: process.env.SENDGRID_KEY, sendgridEmail: process.env.SENDGRID_EMAIL, remoteURL: process.env.REMOTE_URL, + disableEmailVerification: process.env.DISABLE_EMAIL_VERIFICATION } \ No newline at end of file diff --git a/backend/middleware/auth.ts b/backend/middleware/auth.ts index 158a536..3923a90 100644 --- a/backend/middleware/auth.ts +++ b/backend/middleware/auth.ts @@ -40,7 +40,7 @@ const auth = async(req: RequestType, res: Response, next: NextFunction) => { //console.log(user.email); if (!user) throw new Error("No User"); - if (!user.emailVerified) throw new Error("Email Not Verified") + if (!user.emailVerified && !env.disableEmailVerification) throw new Error("Email Not Verified") req.user = user; diff --git a/backend/middleware/authFullUser.ts b/backend/middleware/authFullUser.ts index 5dbb4dd..2ec4fa4 100644 --- a/backend/middleware/authFullUser.ts +++ b/backend/middleware/authFullUser.ts @@ -36,7 +36,7 @@ const authFullUser = async(req: RequestType, res: Response, next: NextFunction) const user = decoded.user; if (!user) throw new Error("No User"); - if (!user.emailVerified) throw new Error("Email Not Verified") + if (!user.emailVerified && !env.disableEmailVerification) throw new Error("Email Not Verified") const fullUser = await User.findById(user._id); diff --git a/backend/middleware/authNoEmailVerificication.ts b/backend/middleware/authNoEmailVerificication.ts index 314fb37..6bca60a 100644 --- a/backend/middleware/authNoEmailVerificication.ts +++ b/backend/middleware/authNoEmailVerificication.ts @@ -36,7 +36,7 @@ const auth = async(req: RequestType, res: Response, next: NextFunction) => { if (!user) throw new Error("No User"); - if (!user.emailVerified) { + if (!user.emailVerified && !env.disableEmailVerification) { const ipAddress = req.clientIp; user = await userUpdateCheck(res, user._id, ipAddress); } diff --git a/backend/models/user.ts b/backend/models/user.ts index b58b432..572d19e 100644 --- a/backend/models/user.ts +++ b/backend/models/user.ts @@ -302,7 +302,7 @@ userSchema.methods.generateAuthToken = async function(ipAddress: string | undefi const date = new Date(); const time = date.getTime(); - const userObj = {_id: user._id, emailVerified: user.emailVerified, email: user.email, s3Enabled: user.s3Enabled, googleDriveEnabled: user.googleDriveEnabled} + const userObj = {_id: user._id, emailVerified: user.emailVerified || env.disableEmailVerification, email: user.email, s3Enabled: user.s3Enabled, googleDriveEnabled: user.googleDriveEnabled} let accessToken = jwt.sign({user: userObj, iv}, env.passwordAccess!, {expiresIn: maxAgeAccess.toString()}); let refreshToken = jwt.sign({_id:user._id.toString(), iv, time}, env.passwordRefresh!, {expiresIn: maxAgeRefresh.toString()}); diff --git a/backend/services/UserService/index.ts b/backend/services/UserService/index.ts index ed6ca81..121a56a 100644 --- a/backend/services/UserService/index.ts +++ b/backend/services/UserService/index.ts @@ -106,7 +106,7 @@ class UserService { create = async(userData: any, ipAddress: string | undefined) => { - const user = new User({email: userData.email, password: userData.password}); + const user = new User({email: userData.email, password: userData.password, emailVerified: env.disableEmailVerification}); await user.save(); if (!user) throw new NotFoundError("User Not Found"); @@ -116,7 +116,7 @@ class UserService { const {accessToken, refreshToken} = await user.generateAuthToken(ipAddress); const emailToken = await user.generateEmailVerifyToken(); - await sendEmailVerification(user, emailToken); + if (!env.disableEmailVerification) await sendEmailVerification(user, emailToken); if (!accessToken || !refreshToken) throw new InternalServerError("Could Not Create New User Error"); diff --git a/src/actions/auth.js b/src/actions/auth.js index cc10751..751771a 100755 --- a/src/actions/auth.js +++ b/src/actions/auth.js @@ -67,7 +67,7 @@ export const startCreateAccount = (email, password) => { const id = response.data.user._id; const emailVerified = response.data.user.emailVerified; - window.localStorage.setItem("token", token); + // window.localStorage.setItem("token", token); if (emailVerified) { dispatch(setLoginFailed(false))