1.1.0 • Published 3 years ago
courier-otp v1.1.0
Courier OTP
Custom OTP package for sending OTP via SMS and Email and verifying OTP. This package is built on top of Courier and Redis.
Installation
Using npm:
$ npm install --save courier-otpUsing yarn:
$ yarn add courier-otpUsage
To use this package, you need to have a Courier account and a Redis server.
IMPORTANT: In your Courier account, you need to create a new template with the
{otp} variable. This variable will be replaced with the OTP code. Otherwise, users won't receive the OTP code.
const { CourierOtp } = require('courier-otp')
const main = async () => {
  const courierOtp = new CourierOtp({
    redisUrl: '<redis-url>',
    courierApiKey: '<courier-api-key>',
    courierTemplateId: '<courier-template-id>',
  })
  // send otp
  const result = await courierOtp.sendOtp({
    to: 'you@example.com',
    type: 'email',
  })
  console.log(result)
  // verify otp
  const verifyResult = await courierOtp.verifyOtp({
    to: 'you@example.com',
    type: 'email',
    otp: '123456',
  })
  console.log(verifyResult)
}
main()API
new CourierOtp(options)
Creates a new instance of CourierOtp.
Arguments
- options- An object containing the following fields:- redisUrl- The url of the redis server.
- courierApiKey- The api key of the courier account.
- courierTemplateId- The template id of the courier account.
 
sendOtp(options)
Sends an OTP to the given email or phone number.
Arguments
- options- An object containing the following fields:- to- The email or phone number to send the OTP to.
- type- The type of the- tofield. It can be either- emailor- phone_number.
- otpOptions- An object containing the following fields:- length- The length of the OTP. Default is- 6.
- expiry- The expiry of the OTP in seconds. Default is- 300(5 minutes).
 
- courierVariables- An object containing the variables to be replaced in the courier template. Note that the- otpvariable is reserved for the OTP code.
 
Returns
An object containing the following fields:
- requestId- The request id from the courier api.
- otp- The generated OTP.
or null if the OTP is not sent.
verifyOtp(options)
Verifies the given OTP.
Arguments
- options- An object containing the following fields:- to- The email or phone number to send the OTP to.
- type- The type of the- tofield. It can be either- emailor- phone_number.
- otp- The OTP to verify.
 
Returns
An object containing the following fields:
- verify- A boolean indicating whether the OTP is valid or not.
- error- An error message if the OTP is invalid.
- type- Resend type. It can be- SUCCESS,- INVALID_OTPor- ERROR.
License
MIT
Contributing
Contributions are welcome! Just open an issue or a pull request.