mst-server-common2
Version:
MST backend project-ийн tools
1 lines • 2.96 kB
JavaScript
const e=require("jsonwebtoken"),s=require("../helpers/dateHelper"),r=(r,o,t)=>{try{var n=r.headers.authorization;if(null==n)return o.status(403).json({error:!0,message:"Token дамжуулаагүй байна."});if(null==(n=n.split(" ")[1]))return o.status(403).json({error:!0,message:"Token буруу дамжуулсан байна."});const i=e.verify(n,process.env.JWT_SECRET);if(!i)return o.status(401).json({error:!0,message:"Хандах эрх байхгүй байна"});const d=new Date(1e3*i.exp),g=s.getDiffSeconds(d,s.getNowTime());if(r.expireTime=d,r.expireLeftSeconds=g,r.loggedUser=i._id,r.loggedUser){const e=s.dateToString(new Date,"yyyy/MM/dd HH:mm:ss"),o=new Date;r.loggedUser.updateInfo={dateStr:e,date:o,userUuid:r.loggedUser.userUuid,userId:r.loggedUser.userId,userName:r.loggedUser.userName};var a=r.headers["current-org-index"];null==a&&(a=0),r.loggedUser.currentOrgIndex=a;let t=r.loggedUser.organizations;if(Array.isArray(t)){let e=t.length;e<=a&&(a=0);let s=t[a];r.loggedUser.currentOrg=s,r.loggedUser.currentOrgIndex=a,r.loggedUser.organizationUuid=s._id,r.loggedUser.isMultipleOrg=e>1}}t()}catch(e){return"jwt expired"===e.message?o.status(401).json({message:"JWT expired session"}):"invalid signature"===e.message?o.status(401).json({message:"JWT secret key ins invalid"}):(console.log(e.stack),o.status(401).json({message:"JWT auth failed"}))}},o=(r,o,t)=>{try{var n=r.headers.authorization;if(null==n)throw new Error("Token дамжуулаагүй байна.");if(null==(n=n.split(" ")[1]))throw new Error("Token буруу дамжуулсан байна.");const o=e.verify(n,process.env.JWT_SECRET);if(!o)throw new Error("Хандах эрх байхгүй байна");if(r.loggedUser=o._id,r.loggedUser){const e=s.dateToString(new Date,"yyyy/MM/dd HH:mm:ss"),o=new Date;r.loggedUser.updateInfo={dateStr:e,date:o,userUuid:r.loggedUser.userUuid,userId:r.loggedUser.userId,userName:r.loggedUser.userName}}t()}catch(e){t()}},t=s=>e.sign({_id:{userUuid:s._id??s.userUuid,userId:s.userId,userName:s.userName,phoneNumber:s.phoneNumber,firstName:s.firstName,lastName:s.lastName,organizationUuid:s.organizationUuid,parentOrganizationUuid:s.parentOrganizationUuid,organizationInfo:s.organizationInfo,organizations:s.organizations,otpPass:s.otpPass,roles:s.roles,systems:s.systems,email:s.email,systemId:s.systemId,systemVersion:s.systemVersion}},process.env.JWT_SECRET,{expiresIn:"24h"}),n=(s,r)=>e.sign({_id:{userUuid:s._id??s.userUuid,userId:s.userId,userName:s.userName,phoneNumber:s.phoneNumber,firstName:s.firstName,lastName:s.lastName,organizationUuid:s.organizationUuid,parentOrganizationUuid:s.parentOrganizationUuid,organizationInfo:s.organizationInfo,organizations:s.organizations,otpPass:s.otpPass,roles:s.roles,systems:s.systems,email:s.email,systemId:s.systemId,systemVersion:s.systemVersion}},process.env.JWT_SECRET,{expiresIn:r});module.exports={checkAuth:r,getUserToken:t,getUserTokenCustom:n,checkAuthNoError:o};