# forgot-password

> A simple package for implementing the forgot-password feature in web-apps!

Latest version **1.0.0** (published 2021-06-16) · MIT license · 0 weekly downloads

## Install

```sh
npm install forgot-password
pnpm add forgot-password
yarn add forgot-password
bun add forgot-password
```

## Health

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

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2021-06-16 |
| First published | 2021-06-16 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Dependencies | 3 |
| Unpacked size | 14.5 KB |
| Known vulnerabilities | 0 (+15 in 2 direct dependencies) |
| Install scripts | no |
| Author | Md. Aman Khan |
| Maintainers | amancodesinjs |

## Links

- npm: https://www.npmjs.com/package/forgot-password
- npm.io page: https://npm.io/package/forgot-password

## Dependencies (3)

- [cryptr](https://npm.io/package/cryptr.md) ^6.0.2
- [mongoose](https://npm.io/package/mongoose.md) ^5.12.13
- [nodemailer](https://npm.io/package/nodemailer.md) ^6.6.1

## Recent versions

- 1.0.0 (latest) — 2021-06-16

## README

# Forgot-Password

A simple package for implementing the forgot-password feature in web-apps!


## Installation 

Install forgot-password with npm

```
npm install forgot-password
```
    
or yarn

```
yarn add forgot-password 
```
## Usage/Examples

simple initialization with express

```
import { fpInitDB } from 'forgot-password'
import express from 'express'

const app = express()

fpInitDB('your mongo uri')
```

sending an OTP to validate user requesting password reset

```
import { sendOTP } from 'forgot-password'

app.post('/', async (req, res) => {
    const result = await sendOTP({
        email: 'your email here', // better to use dotenv here
        password: "email's password", // better to use dotenv here
        emailToSend: 'recievers email address',
        subject: 'subject of the email',
        companyName: 'YOUR-COMPANY',
        url: 'http://localhost:5000', // your app's base url
        validationUrl: '/auth/forgot-password', // the url where you want the OTP validation to occur
        email: '<b>{otp}</b>' // provide if you want to send a custom email, place {otp} where you want the otp to occur, we will replace it with the actual OTP and {token} to replace it with the token
    })
    // the result returns true or false based on, if the email was successfully sent
    if(result === true){
        res.send('SUCCESS')
    }else{
        res.send('FAILURE')
    }
})
```

validating the otp

the url is sent the email is something like: http://yourwebsiteurl.com/forgot-password?token=somegibberishandimportanttooken

it is based on your app's base url and validation url you can send the token, otp and new password to the backend in whichever way you like

```
app.post('/auth/forgot-password', async (req, res) => {
    const { token, otp, newPassword } = req.body
    const result = await validateOtp({hash: token, otp})

    // result returns true or false based on if the validation was successfull or not
    
    if(result === true){
        saveNewPassword(password)
        res.send('VALIDATED')
    }else{
        res.send('NOT VALIDATED')
    }
})
```

it is quite simple to use


## Authors

- [@aman2712](https://www.github.com/aman2712)

  
this project is still under development

Please report any bugs you find at:

khanamankhan1973@gmail.com

# Thanks :)

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