PHPackages                             obrainwave/auth-fusion - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. obrainwave/auth-fusion

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

obrainwave/auth-fusion
======================

Unified authentication package for Laravel supporting Sanctum, JWT, and Passport

1.0.0(6mo ago)31MITPHPPHP ^8.0

Since Oct 31Pushed 6mo agoCompare

[ Source](https://github.com/Obrainwave/auth-fusion)[ Packagist](https://packagist.org/packages/obrainwave/auth-fusion)[ RSS](/packages/obrainwave-auth-fusion/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (6)Versions (2)Used By (0)

Auth Fusion 🔐
=============

[](#auth-fusion-)

[![Latest Version on Packagist](https://camo.githubusercontent.com/f99a21dbbaa13e5c9e29dfe764063b8c5191a2c1df9b29dcbd522111ac479fa4/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6f627261696e776176652f617574682d667573696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/obrainwave/auth-fusion)[![Total Downloads](https://camo.githubusercontent.com/7988fabfcf93d59d33de99eee6c0151a5d5e6a3a71349b74527493514825cf81/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6f627261696e776176652f617574682d667573696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/obrainwave/auth-fusion)[![License](https://camo.githubusercontent.com/aa1b1ea56bc0876b000e85f764f9d595f0d7edd91ecb66bdff67b57e21f49f0f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6f627261696e776176652f617574682d667573696f6e2e7376673f7374796c653d666c61742d737175617265)](LICENSE.md)

A unified authentication package for Laravel that seamlessly integrates **Sanctum**, **JWT**, and **Passport** into a single, flexible API.

Features
--------

[](#features)

- 🎯 **Unified API** - Single interface for all authentication drivers
- 🔄 **Driver Swapping** - Switch between Sanctum, JWT, and Passport on the fly
- 🔧 **Flexible** - Use the driver that best fits your needs
- 📦 **Laravel 10-12** - Full support for Laravel 10, 11, and 12
- 🐘 **PHP 8.0+** - Modern PHP support
- 🎨 **Extensible** - Create custom drivers with ease

Requirements
------------

[](#requirements)

- PHP 8.0 or higher
- Laravel 10, 11, or 12
- One or more of the following authentication packages:
    - [Laravel Sanctum](https://laravel.com/docs/sanctum)
    - [tymon/jwt-auth](https://github.com/tymondesigns/jwt-auth)
    - [Laravel Passport](https://laravel.com/docs/passport)

Installation
------------

[](#installation)

```
composer require obrainwave/auth-fusion
```

For Laravel 11+, the service provider and aliases will be auto-discovered. For Laravel 10, manually register in `config/app.php` if needed.

Publish the configuration file:

```
php artisan vendor:publish --tag=auth-fusion-config
```

### Easy Driver Installation

[](#easy-driver-installation)

Use our artisan command to automatically install and configure drivers:

```
# Install Sanctum driver
php artisan auth-fusion:install sanctum

# Install JWT driver
php artisan auth-fusion:install jwt

# Install Passport driver
php artisan auth-fusion:install passport

# Install all drivers at once
php artisan auth-fusion:install all

# Install with custom model name
php artisan auth-fusion:install sanctum --model=Admin
```

The command will:

- ✅ Install the authentication package via composer
- ✅ Publish configuration files
- ✅ Run necessary migrations
- ✅ Add required traits to your User model
- ✅ Configure `.env` automatically

Configure your default driver in `.env`:

```
AUTH_FUSION_DRIVER=sanctum
```

Quick Start
-----------

[](#quick-start)

### Basic Usage

[](#basic-usage)

```
use AuthFusion;

// Or use the full namespace:
// use Obrainwave\AuthFusion\Facades\AuthFusion;

// Login with default driver
$result = AuthFusion::driver()->login([
    'email' => 'user@example.com',
    'password' => 'password'
]);

return response()->json([
    'token' => $result['token'],
    'user' => $result['user']
]);

// Validate token
if (AuthFusion::driver()->validate($token)) {
    $user = AuthFusion::driver()->getUser($token);
}

// Logout
AuthFusion::driver()->logout($token);
```

### Using Specific Drivers

[](#using-specific-drivers)

```
// Use Sanctum
AuthFusion::driver('sanctum')->login($credentials);

// Use JWT
AuthFusion::driver('jwt')->login($credentials);

// Use Passport
AuthFusion::driver('passport')->login($credentials);
```

### Advanced Usage

[](#advanced-usage)

#### Sanctum with Custom Options

[](#sanctum-with-custom-options)

```
$result = AuthFusion::driver('sanctum')->login(
    $credentials,
    [
        'device_name' => 'iPhone 15',
        'abilities' => ['read', 'write'],
        'expires_at' => now()->addWeek()
    ]
);
```

#### JWT Token Refresh

[](#jwt-token-refresh)

```
try {
    $newToken = AuthFusion::driver('jwt')->refresh($oldToken);
    return response()->json(['token' => $newToken['token']]);
} catch (\Illuminate\Auth\AuthenticationException $e) {
    return response()->json(['error' => 'Invalid token'], 401);
}
```

#### Switching Default Driver

[](#switching-default-driver)

```
// Change default driver at runtime
AuthFusion::setDefaultDriver('jwt');

// Now all calls use JWT by default
AuthFusion::driver()->login($credentials);
```

Available Methods
-----------------

[](#available-methods)

All drivers implement the `AuthDriverInterface` which provides:

MethodDescription`login(array $credentials, array $options = [])`Authenticate user and return token`logout($token)`Logout user and invalidate token`refresh($token)`Refresh an access token`validate($token)`Check if token is valid`getUser($token)`Get authenticated user from token`getName()`Get the driver nameDriver-Specific Features
------------------------

[](#driver-specific-features)

### Sanctum

[](#sanctum)

- ✅ Plain text token support
- ✅ Token abilities/scopes
- ✅ Custom expiration times
- ✅ Device name tracking
- ⚠️ No built-in refresh (creates new token)

### JWT

[](#jwt)

- ✅ Stateless tokens
- ✅ Token refresh support
- ✅ Token invalidation
- ✅ Full JWT feature set

### Passport

[](#passport)

- ✅ OAuth2 support
- ✅ Token scopes
- ✅ Client credentials
- ⚠️ Refresh requires OAuth2 flow

Creating Custom Drivers
-----------------------

[](#creating-custom-drivers)

You can create custom drivers by extending the `AuthDriverInterface`:

```
