clarity-tech/laravel-otp-generator

a lightweight implementation of generating OTP and validating backed by Cache Storage for Laravel

v1.0.0-rc 2022-07-31 08:50 UTC

README

When you use Redis or any Cache driver it will self destruct things

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

This is where your description should go. Limit it to a paragraph or two. Consider adding a small example.

Support us

We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products.

Installation

You can install the package via composer:

composer require clarity-tech/laravel-otp-generator

You can publish the config file with:

php artisan vendor:publish --tag="laravel-otp-generator-config"

This is the contents of the published config file:

// config for ClarityTech/LaravelOtpGenerator
return [
    'debug' => false,
    'expiry' => env('OTP_EXPIRY', 15 * 60),
    'length' => env('OTP_LENGTH', 6),
];

Usage

use ClarityTech\LaravelOtpGenerator\Facades\AugmentedOTP;

$otp     =  AugmentedOTP::generateWithKey(9706353416);

$isValid =  AugmentedOTP::withKey(9706353416)->validate(123456);

$isValid =  AugmentedOTP::withKey(9706353416)->verify(123456);//does not trigger exception

The validate methods throws two exceptions based on which you can handle in your use case and modify the response to give for the user output as needed

use ClarityTech\LaravelOtpGenerator\Exceptions\OTPExpiredException;
use ClarityTech\LaravelOtpGenerator\Exceptions\OTPInvalidException;

And when you have request context available you can pass that too for more secure hash key generation internally which locks the OTP to be valid for that session / IP address only

$instance = AugmentedOTP::fromRequest(Request $request, string $mobileNo);

$otp = $instance->generate();

$otp = $instance->validate(123456);

you can determine whether provide code is valid or not

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.