Custom OTP package for sending OTP via SMS and Email and verifying OTP. This package is built on top of Courier and Redis.
Using npm:
$ npm install --save courier-otp
Using yarn:
$ yarn add courier-otp
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()
Creates a new instance of CourierOtp
.
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.
Sends an OTP to the given email or phone number.
options
- An object containing the following fields:to
- The email or phone number to send the OTP to.type
- The type of theto
field. It can be eitheremail
orphone_number
.otpOptions
- An object containing the following fields:length
- The length of the OTP. Default is6
.expiry
- The expiry of the OTP in seconds. Default is300
(5 minutes).
courierVariables
- An object containing the variables to be replaced in the courier template. Note that theotp
variable is reserved for the OTP code.
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.
Verifies the given OTP.
options
- An object containing the following fields:to
- The email or phone number to send the OTP to.type
- The type of theto
field. It can be eitheremail
orphone_number
.otp
- The OTP to verify.
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 beSUCCESS
,INVALID_OTP
orERROR
.
MIT
Contributions are welcome! Just open an issue or a pull request.