11
MarMost web applications need an OTP(one-time-password) or secure code to validate their users. Laravel OTP(One-Time Password) is a package that allows you to send/resend and validate OTP for the users authentication with user-friendly methods.
You can install the package via composer:
composer require fouladgar/laravel-otp
As next step, let’s publish config file config/otp.php
by executing:
php artisan vendor:publish --provider="Fouladgar\OTP\ServiceProvider" --tag="config"
<?php
/**
* Send OTP via SMS.
*/
OTP()->send('+989389599530');
// or
OTP('+989389599530');
/**
* Send OTP via channels.
*/
OTP()->channel(['otp_sms', 'mail', \App\Channels\CustomSMSChannel::class])
->send('+989389599530');
// or
OTP('+989389599530', ['otp_sms', 'mail', \App\Channels\CustomSMSChannel::class]);
/**
* Send OTP for specific user provider
*/
OTP()->useProvider('admins')
->send('+989389599530');
/**
* Validate OTP
*/
OTP()->validate('+989389599530', 'token_123');
// or
OTP('+989389599530', 'token_123');
// or
OTP()->useProvider('users')
->validate('+989389599530', 'token_123');
Token Storage
The package enables you to store the generated one-time password on either cache or database driver, default is cache.
You can change the preferred driver through the config file that we published earlier:
// config/otp.php
<?php
return [
/**
|Supported drivers: "cache", "database"
*/
'token_storage' => 'cache',
];
Cache
Note that the Laravel OTP package uses the already configured cache driver to storage token, if you have not configured one yet or have not planned to do it you can use the database instead.
User providers
You may wish to use the OTP for variant users. Laravel OTP allows you to define and manage many user providers that you need. In order to set up, you should open config/otp.php
file and define your providers:
// config/otp.php
<?php
return [
//...
'default_provider' => 'users',
'user_providers' => [
'users' => [
'table' => 'users',
'model' => \App\Models\User::class,
'repository' => \Fouladgar\OTP\NotifiableRepository::class,
],
// 'admins' => [
// 'model' => \App\Models\Admin::class,
// 'repository' => \Fouladgar\OTP\NotifiableRepository::class,
// ],
],
//...
];
Note: You may also change the default repository and replace your own repository. however, every repository must implement Fouladgar\OTP\Contracts\NotifiableRepositoryInterface
interface.
This package has a lot of features and customization options. If you want to dig more you can visit its complete documentation and source code on Github.
Published at : 11-03-2022
I am a highly results-driven professional with 12+ years of collective experience in the grounds of web application development especially in laravel, native android application development in java, and desktop application development in the dot net framework. Now managing a team of expert developers at Codebrisk.
Launch project