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

v1.0.7 2026-01-22 16:24 UTC

This package is auto-updated.

Last update: 2026-02-19 14:14:19 UTC


README

Latest Version on Packagist Tests Total Downloads

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.