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

v1.1.1 2025-11-29 07:44 UTC

This package is auto-updated.

Last update: 2025-11-29 07:46:21 UTC


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.