1.0.0 • Published 3 years ago

forgot-password v1.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

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

this project is still under development

Please report any bugs you find at:

khanamankhan1973@gmail.com

Thanks :)

1.0.0

3 years ago