think.studio/laravel-temporal-key

Create and retrieve random string key in database for any purposes.

1.1.0 2023-08-20 06:21 UTC

This package is auto-updated.

Last update: 2024-12-20 09:34:02 UTC


README

Packagist License Packagist Version Total Downloads Build Status Code Coverage Scrutinizer Code Quality

Create temporal random string key in database for any purposes. Key will be removed after expiration time or after max retrieve attempts.

Installation

Install the package via composer:

composer require think.studio/laravel-temporal-key

Optionally you can publish the config file with:

php artisan vendor:publish --provider="TemporalKey\ServiceProvider" --tag="config"

Migrate database

php artisan migrate

Add prune command to console kernel

$schedule->command('temporal-key:prune')->everyTenMinutes();

Usage

Default usage

Create key:

$key = \TemporalKey\Manager\TmpKey::create()->key()
// Customize default expiration datetime
$key = \TemporalKey\Manager\TmpKey::create(validUntil: \Carbon\Carbon::now()->addDay())->key()
// Add metadata
$key = \TemporalKey\Manager\TmpKey::create(['email' => 'user@email.com'])->key()
// Customise custom maximal retrieve count.
$key = \TemporalKey\Manager\TmpKey::create(usageMax: 22)->key()

Retrieve key

$temporalKey = \TemporalKey\Manager\TmpKey::find('testkey');

$temporalKey?->key();
$temporalKey?->meta();

Crete custom key type

use TemporalKey\Manager\TmpKey;

class ImagePreviewTmpKey extends TmpKey
{
    public static string $type = 'image-preview';
    public static int $defaultValidSeconds = 60 * 60;
    public static int $defaultUsageMax = 0; // unlimited
}

$key = ImagePreviewTmpKey::create()->key()
$temporalKey = ImagePreviewTmpKey::find('testkey');

Credits

  • Think Studio