Skip to content

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

License

Notifications You must be signed in to change notification settings

dev-think-one/laravel-temporal-key

Repository files navigation

Laravel temporal key.

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

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages