mongoose-otp-handler v1.0.8
mongoose-otp-handler
A package for making otp collection in mongodb with expiry time, generation of OTP and verification of OTPS
Installation
Install my-project with npm
npm install mongoose-otp-handler
Importing
const otpHandler=require('mongoose-otp-handler');
Overview
First we need a model of exsisting users that are going to login the fields for user collection must have default mongoose _id field, mobile number that must be unique to every collection in the user which we wish to send otp to.
const otpHandler=require('mongoose-otp-handler');
const expiresIn=300;
const otpModel=otpHandler.createOtpModel(expiresIn);
We need to import the otpHandler and decalre otpModel at global level on the top of our code, this gives it an entry point and gets registered.
The expiresIn field duration sets the ttl(Tiem To Live) field for the otp and and should be a positve integer greater than 0.
OTPS model
otpModel register this schema. | Fields | Summary | | ----------------- | ------------------------------------------------------------------ | | userID |The _id field of user collection, type:Refrence, unirue:true | | otp | type:Number, required:true| | createdAt |type:Date, default:Date.now(), index:ttl | | mobileNo | type:String |
Verify OTP
let data=await otpHandler.verifyNumber(User,"mobileNo","0000000000");
let data_={...data._doc};
let id=data._id;
let mobileNo=data.;
verifyNumber is an async func that requires User model as an input, name of field with which your mobile number is registered(for eg here my is registered as mobile no) and the last is mobileNo in String format.
The function checks if the user with given mobile number actually exsists in the database, if so returns the user document if the user is not registered returns null.
queryOtpGen
const result=await otpHandler.queryOtpGen(otpModel,6,id,mobbileNo);
otpHandler is an async func that requires args with otpModel, length of otp to be generated, id of user for which otp has to be generated,and mobile number to which it has to be registered aginst. **Note: Please make sure that your store the id in variable name 'id' and variable named "mobileNo".
The async function returns the collection doc of otps table created.
verifyOtpGen
const result=await handler.verifyOtpGen(otpModel,req.body.otp,req.body.mobileNo);
verifyOtpGen is an async function that returns the json object of format
// {
// passed:boolean
// message:"sorry the otp has either expired!" || "Succesffully verified!" || "wrong otp entered!"
// id:ObjectId of user || null in case of passed is false
// }