edstevo / laravel-integration-credentials
A small package to store integration credentials against Laravel models
Fund package maintenance!
edstevo
Installs: 125
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/edstevo/laravel-integration-credentials
Requires
- php: ^8.4
- illuminate/contracts: ^11.0||^12.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.8
- orchestra/testbench: ^10.0.0||^9.0.0
- pestphp/pest: ^4.0
- pestphp/pest-plugin-arch: ^4.0
- pestphp/pest-plugin-laravel: ^4.0
README
Store integration credentials (provider/key/value) against any Eloquent model through a polymorphic relationship.
Installation
composer require edstevo/laravel-integration-credentials
Migrations are auto-discovered and run with your normal php artisan migrate flow.
If you prefer publishing package migrations first:
php artisan vendor:publish --tag="laravel-integration-credentials-migrations"
php artisan migrate
Usage
Add the trait to any model that should own credentials:
<?php namespace App\Models; use EdStevo\LaravelIntegrationCredentials\Models\Concerns\MorphManyIntegrationCredentials; use Illuminate\Database\Eloquent\Model; class Store extends Model { use MorphManyIntegrationCredentials; }
Set and read credentials:
$store->setIntegrationCredential('shopify', 'access_token', 'token_123'); $credential = $store->getIntegrationCredential('shopify', 'access_token'); $value = $store->getIntegrationCredentialValue('shopify', 'access_token');
Use expirations:
$store->setIntegrationCredential( provider: 'shopify', key: 'access_token', value: 'token_123', expiresAt: now()->addHour(), ); $validValue = $store->getIntegrationCredentialValue('shopify', 'access_token'); $includeExpired = $store->getIntegrationCredentialValue('shopify', 'access_token', allowExpired: true);
Delete one credential or all credentials for a provider:
$store->forgetIntegrationCredential('shopify', 'access_token'); $store->forgetIntegrationProvider('shopify');
Query models by integration credential value:
$store = Store::whereHasIntegrationCredentialValue('shopify', 'shop_id', '12345')->first(); $storeIncludingExpired = Store::whereHasIntegrationCredentialValue( provider: 'shopify', key: 'shop_id', value: '12345', mustBeValid: false, )->first();
Testing
composer test
Changelog
See CHANGELOG.md.
Contributing
See CONTRIBUTING.md.
Security
See SECURITY.md.
License
The MIT License (MIT). See LICENSE.md.