# mongoose-otp-handler

> mongoose-otp-handler

Latest version **1.0.8** (published 2022-06-29) · ISC license · 0 weekly downloads

## Install

```sh
npm install mongoose-otp-handler
pnpm add mongoose-otp-handler
yarn add mongoose-otp-handler
bun add mongoose-otp-handler
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.8 |
| Published | 2022-06-29 |
| First published | 2022-06-28 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 6.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Prabhutva Bisht |
| Maintainers | prabhutva711 |
| Keywords | mongoose, nodejs |

## Links

- npm: https://www.npmjs.com/package/mongoose-otp-handler
- Repository: https://github.com/Prabhutva711/mongoose-otp-handler
- Homepage: https://github.com/Prabhutva711/mongoose-otp-handler#readme
- Issues: https://github.com/Prabhutva711/mongoose-otp-handler/issues
- npm.io page: https://npm.io/package/mongoose-otp-handler

## Dependencies (1)

- [mongoose](https://npm.io/package/mongoose.md) ^6.4.1

## Alternatives

- [angular-pipes](https://npm.io/package/angular-pipes.md) — 5.6K weekly downloads
- [@ng-web-apis/midi](https://npm.io/package/@ng-web-apis/midi.md) — 2.6K weekly downloads
- [happn-3](https://npm.io/package/happn-3.md) — 1.6K weekly downloads
- [@opensip-cli/lang-go](https://npm.io/package/@opensip-cli/lang-go.md) — 1.2K weekly downloads
- [mongoose-typescript](https://npm.io/package/mongoose-typescript.md) — 85 weekly downloads

## Recent versions

- 1.0.8 (latest) — 2022-06-29
- 1.0.7 — 2022-06-28
- 1.0.6 — 2022-06-28
- 1.0.5 — 2022-06-28
- 1.0.4 — 2022-06-28
- 1.0.3 — 2022-06-28
- 1.0.2 — 2022-06-28
- 1.0.1 — 2022-06-28
- 1.0.0 — 2022-06-28

## README

# mongoose-otp-handler

A package for making otp collection in mongodb with expiry time,
generation of OTP and verification of OTPS
 



[![shields.io](https://img.shields.io/badge/Github-repo-brightgreen)](https://github.com/Prabhutva711/mongoose-otp-handler)
## Installation

Install my-project with npm

```bash
  npm install mongoose-otp-handler
  
```
    
## Importing

```javascript
  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.

```javascript
  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
```javascript
  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

```javascript
  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

```javascript
  const result=await handler.verifyOtpGen(otpModel,req.body.otp,req.body.mobileNo);
```

verifyOtpGen is an async function that returns the json object of format

```javascript
// {
//   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
// }
```

## Authors

- [@prabhutva711](https://github.com/Prabhutva711)

---
_Source: https://npm.io/package/mongoose-otp-handler · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
