hith / laravel-codeable
A lightweight Eloquent trait for generating, storing, expiring, and managing numeric codes (OTPs, tokens) on any model.
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/hith/laravel-codeable
Requires
- php: ^8.2
- illuminate/support: ^12.0
Requires (Dev)
- laravel/pint: ^1.25
- orchestra/testbench: ^10.6
- pestphp/pest: ^3.8
README
Laravel Codeable
Laravel Codeable focuses on Code generation for models such as OTPs.
Supported Laravel versions
| Laravel Version | Codeable Version |
|---|---|
| 12.x | 1.0+ |
Getting Started
Requires:
1: Use Composer to install laravel-codeable into your project:
composer require "hith/laravel-codeable"
2: Then, publish files:
php artisan vendor:publish --tag=codeable-migrations php artisan vendor:publish --tag=codeable-command php artisan vendor:publish --tag=codeable-config
For simplicity, you can publish all files at once:
php artisan vendor:publish --tag=codeable-files
3: Finally, use the package:
- By adding the trait directly to your models.
- By using the Codeable class.
- By using the Coder Facade.
Usage of HasCodes Trait:
In Model:
use Codeable\Traits\HasCodes; class User extends Model { use HasCodes; }
Then:
$user->createCode(); $code = $user->createCode(type:'code_type', length:6, timeToExpire:'15:m'); // or define the attributes you want $user->deleteCode($code); // delete by passing a Code model instance $user->deleteCode('code_type'); // delete by code type $user->deleteCode($code->id); // delete by code id
Usage of Codeable Class:
use Codeable\Codeable; $codeable = new Codeable(); $codeable->createCode(); $code = $codeable->createCode(type:'code_type', length:6, timeToExpire:'15:m'); $codeable->deleteCode($code); $codeable->deleteCode('code_type');
Usage of Coder Facade:
use Codeable\Facades\Coder; $code = Coder::createCode(); if(! $code->isValid()){ Coder::delete($code); } $code = Coder::codeByType('code_type'); if($code->isExpired()){ Coder::delete($code); }
Useful Methods
These methods let you easily retrieve codes. They can be used with the Model trait, the Codeable class, or the Coder Facade.
// Get a code by type or by code value $user->code('code_type'); $user->code(12345); // Or use explicit methods $user->codeByType('code_type'); $user->codeByCode(12345); // Or fetch it by ID $user->codeById($code->id);
Codeable: Delete Expired Command
This command removes all expired codes from the database.
Usage
Run the following in your terminal:
php artisan codes:delete-expired
Codeable Configuration
You can alter the behavior using the Codeable config file.
/** * min_length : int * The minimum number of digits allowed in a generated code. * */ 'min_length' => 3, /** * max_length : int * The maximum number of digits allowed in a generated code. * */ 'max_length' => 16, /** * max_attempts : int * The maximum number of attempts to generate a unique code before failing. * Example: 5 → after 5 unsuccessful tries, any code will be returned. * */ 'max_attempts' => 1, /** * valid_units : string[] * Allowed time units for setting the `expire_at` field in the database record. */ 'valid_units' => [ 's' => 'second', 'm' => 'minute', 'h' => 'hour', 'd' => 'day', ]
Contributing
Thank you for considering contributing to Laravel Codeable. All the contribution guidelines are mentioned here.
License
Laravel Codeable is an open-sourced software licensed under the MIT license.