EN-99: feat, return JWT after confirmation of account and populate company

This commit is contained in:
Josepablo C
2024-03-18 13:52:29 -06:00
parent 17ca6bcba5
commit 5466589803
2 changed files with 42 additions and 36 deletions

View File

@@ -43,18 +43,14 @@ const confirm_password_recover_schema = {
required : [ 'email', 'password', 'otp', 'checksum' ]//Different requirements required : [ 'email', 'password', 'otp', 'checksum' ]//Different requirements
}; };
const AuthorizeJWT = async(req, res) => { async function AuthorizeJWT_email_pwd( email , password ){
try{
if( validator.validate( req.body , login_account_schema ).valid ){
const { email, password } = req.body;
const user = await login( email, password ); const user = await login( email, password );
if( !user ){ if( !user ){
return res.status(401).send( { error : "Invalid credentials" } ); return null;
} }
const current_date = new Date(); const current_date = new Date();
const iat = Math.floor( (current_date.getTime())/1000 ); const iat = Math.floor( (current_date.getTime())/1000 );
const renewal_exp = ( iat + 3600*jwtRenewalTimeout ) * 1000; const renewal_exp = ( iat + 3600*jwtRenewalTimeout ) * 1000;
/** /**
* Renew session token on every login event. * Renew session token on every login event.
* Previous session token is lost * Previous session token is lost
@@ -64,7 +60,6 @@ const AuthorizeJWT = async(req, res) => {
user.session_token = session_token; user.session_token = session_token;
user.session_token_exp = session_token_exp; user.session_token_exp = session_token_exp;
await user.save(); await user.save();
const payload = { const payload = {
iat: iat, iat: iat,
exp: iat + jwtTimeout * 3600, exp: iat + jwtTimeout * 3600,
@@ -73,13 +68,24 @@ const AuthorizeJWT = async(req, res) => {
sub: user.id, sub: user.id,
}; };
const jwt = jsonwebtoken.sign( payload , jwtSecret ); const jwt = jsonwebtoken.sign( payload , jwtSecret );
return res.status(200).send( { return {
accessToken : jwt, accessToken : jwt,
payload : payload, payload : payload,
session_token, session_token,
session_token_exp, session_token_exp,
user : user user : user
} ); };
}
const AuthorizeJWT = async(req, res) => {
try{
if( validator.validate( req.body , login_account_schema ).valid ){
const { email, password } = req.body;
const retVal = await AuthorizeJWT_email_pwd( email , password );
if( !retVal ){
return res.status(401).send( { error : "Invalid credentials" } );
}
return res.send( retVal );
}else{ }else{
return res.status(400).send( { error : "Invalid request" } ); return res.status(400).send( { error : "Invalid request" } );
} }
@@ -185,10 +191,10 @@ const ConfirmAccount = async(req, res) => {
const content = { user_name : email }; const content = { user_name : email };
const receiver = email; const receiver = email;
await emailEvent( EMAIL_EVENTS.ACCOUNT_CONFIRMED , receiver , content ); await emailEvent( EMAIL_EVENTS.ACCOUNT_CONFIRMED , receiver , content );
console.log(
content const retVal = await AuthorizeJWT_email_pwd( email , password );
);
return res.status(200).send( { msg : "User created successfully!" } ); return res.send( retVal );
}else{ }else{
return res.status(400).send( { error : "Invalid request" } ); return res.status(400).send( { error : "Invalid request" } );
} }

View File

@@ -64,7 +64,7 @@ async function login( email , password ){
let safe_password = toSha256( password + pwd_secret ); let safe_password = toSha256( password + pwd_secret );
const user = await UserModel.findOne({ const user = await UserModel.findOne({
email , password : safe_password email , password : safe_password
},{ password : 0 , session_token : 0 , session_token_exp : 0 }); },{ password : 0 , session_token : 0 , session_token_exp : 0 }).populate('company');
return user; return user;
} }