Lightpack Secrets

Lightpack Secrets is a robust, framework-level solution for managing sensitive credentials (API keys, tokens, passwords, and more) with end-to-end encryption, explicit APIs, and full developer control.


Why Use Lightpack Secrets?


Encryption & Key Management


Data Model: secrets Table

Column Type Notes
id int PK, auto-increment
key string Unique secret key (per group/owner)
value text Encrypted secret value (JSON-encoded)
group string (default: 'global') Logical grouping
owner_id int (nullable) User/org ID
created_at timestamp Creation time
updated_at timestamp Last update time
UNIQUE KEY (key, group, owner_id)

Migration

Create schema migration file:

php console create:migration --support=secrets

Run migration:

php console migrate:up

Configuration

You can auto-generate APP_KEY using following command:

php console app:key

Never commit secrets keys to version control.


Core API (via Model Trait)

On any model using SecretsTrait:

class User extends Model
{
    use Lightpack\Secrets\SecretsTrait;
}
$user->secrets()->set('api_token', 'secret-value');
$user->secrets()->get('api_token');
$user->secrets()->delete('api_token');

Global/App Settings

Instantiate via container or you can type hint Secrets as your controller's method dependency.

Set a Secret

app('secrets')
    ->group('users')
    ->owner(42)
    ->set('api_token', 'secret-value');

Get a Secret

$token = app('secrets')
    ->group('users')
    ->owner(42)
    ->get('api_token');

Delete a Secret

app('secrets')
    ->group('users')
    ->owner(42)
    ->delete('api_token');

Change Group/Owner Scope

app('secrets')
    ->group('global')
    ->owner(null)
    ->set('service_key', 'xyz');

Key Rotation (Re-encrypt All Secrets)

Lightpack supports secrets rotation by exposing rotateKey() method:

$oldKey = get_env('OLD_SECRETS_KEY');
$newKey = get_env('NEW_SECRETS_KEY');

// Rotate secrets in batch size of 100 (optional)
$result = app('secrets')->rotateKey($oldKey, $newKey, 100); 

// $result = ['success' => <count>, 'fail' => <count>]
// log the result for inspection

Key Rotation Checklist


Advanced Usage

Security Model