From d703ba63a0048a32848437aab2408650bee74b86 Mon Sep 17 00:00:00 2001 From: "Josepablo C." Date: Wed, 15 Nov 2023 20:04:06 -0600 Subject: [PATCH] feat: Adding check-account endpoint --- src/apps/public/account/routes.js | 2 ++ src/apps/public/account/services.js | 15 +++++++++++++-- src/lib/Handlers/Account/index.js | 23 ++++++++++++++++++++++- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/apps/public/account/routes.js b/src/apps/public/account/routes.js index 2a7c784..814329b 100644 --- a/src/apps/public/account/routes.js +++ b/src/apps/public/account/routes.js @@ -5,6 +5,8 @@ const services= require('./services.js'); router.post('/authorize', services.AuthorizeJWT); router.get('/authorize/:session_token', services.RenewJWT); +router.get('/check-account/:email', services.checkAccount ); + router.post('/signup', services.TryCreateAccount); router.patch('/signup', services.ConfirmAccount); diff --git a/src/apps/public/account/services.js b/src/apps/public/account/services.js index cb93d3f..ebc0006 100644 --- a/src/apps/public/account/services.js +++ b/src/apps/public/account/services.js @@ -4,7 +4,7 @@ const { API_CONFIG, ROOT_PATH, LIB_PATH, HANDLERS_PATH } = process.env; const apiConfig = require( `${ROOT_PATH}/${API_CONFIG}` ); const { genKey, toSha256 } = require( `${ROOT_PATH}/${LIB_PATH}/Misc.js` ); const { emailEvent , EMAIL_EVENTS } = require( `${ROOT_PATH}/${HANDLERS_PATH}/MailClient` ); -const { create_account, already_exists, login, login_with_session_token, reset_password } = require( `${ROOT_PATH}/${HANDLERS_PATH}/Account` ); +const { create_account, already_exists, verify_driver_account, login, login_with_session_token, reset_password } = require( `${ROOT_PATH}/${HANDLERS_PATH}/Account` ); const { Validator } = require( "jsonschema" ); const jwtSecret = apiConfig.authentication.jwtSecret; @@ -259,4 +259,15 @@ const ConfirmRecoverPwd = async(req, res) => { } }; -module.exports = { AuthorizeJWT, RenewJWT, TryCreateAccount, ConfirmAccount, RecoverPwd, ConfirmRecoverPwd}; +const checkAccount = async(req, res) => { + try{ + const email = req.params.email; + const driver_account_val = await verify_driver_account( email ); + return res.status(200).send( driver_account_val ); + } catch ( err ){ + console.error( err ); + return res.status(500).send({ error : "AuthManagement: Internal error" }); + } +}; + +module.exports = { AuthorizeJWT, RenewJWT, TryCreateAccount, ConfirmAccount, RecoverPwd, ConfirmRecoverPwd, checkAccount}; diff --git a/src/lib/Handlers/Account/index.js b/src/lib/Handlers/Account/index.js index 20787c3..dad886d 100644 --- a/src/lib/Handlers/Account/index.js +++ b/src/lib/Handlers/Account/index.js @@ -33,6 +33,27 @@ async function already_exists( email ){ } } +async function verify_driver_account( email ){ + const user = await UserModel.findOne( { email } ); + const retVal = { + has_account:false, + isVerified:false, + has_password:false + }; + + if( !user ){ + retVal.has_account = false; + retVal.isVerified = false; + retVal.has_password = false; + }else{ + retVal.has_account = true; + retVal.isVerified = user.isVerified; + retVal.has_password = ( !user.password )? false : true; + } + + return retVal; +} + async function login( email , password ){ let safe_password = toSha256( password + pwd_secret ); const user = await UserModel.findOne({ @@ -49,4 +70,4 @@ async function login_with_session_token( session_token ){ return user; } -module.exports = { create_account, already_exists, login, login_with_session_token, reset_password }; +module.exports = { create_account, already_exists, verify_driver_account, login, login_with_session_token, reset_password };