courier-otp
v1.1.0
Published
Send and Verify OTP using Courier & Redis
Maintainers
Readme
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: '[email protected]',
type: 'email',
})
console.log(result)
// verify otp
const verifyResult = await courierOtp.verifyOtp({
to: '[email protected]',
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 thetofield. It can be eitheremailorphone_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 theotpvariable 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 thetofield. It can be eitheremailorphone_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 beSUCCESS,INVALID_OTPorERROR.
License
MIT
Contributing
Contributions are welcome! Just open an issue or a pull request.
