Search by

hansdeboeck / socialite-exactonline

hansdeboeck

Exact Online OAuth2 Provider for Laravel Socialite

Package info

github.com/hansdeboeck/socialite-exactonline

pkg:composer/hansdeboeck/socialite-exactonline

Statistics

Installs: 48

Dependents: 0

Suggesters: 0

Stars: 0

v1.0.0 2026-09-21 12:56 UTC

This package is auto-updated.

Last update: 2026-09-21 15:01:27 UTC


README

Exact Online als OAuth2-provider voor Laravel Socialite. Hiermee zet je een "aanmelden met Exact Online" in een applicatie: de klant meldt zich aan bij Exact zelf, en je krijgt zijn gebruiker, zijn administratie en een token terug.

Requirements

  • PHP 8.3 of hoger
  • Laravel 12 of 13
  • laravel/socialite 5 met socialiteproviders/manager 4

Laravel 11 wordt niet meer ondersteund: die versie is sinds 12 maart 2026 volledig end-of-life, ook voor security fixes.

Installatie

composer require hansdeboeck/socialite-exactonline

De service provider van socialiteproviders/manager wordt automatisch ontdekt. Er is niets toe te voegen aan bootstrap/providers.php.

De provider aanhaken

In de boot() van app/Providers/AppServiceProvider.php:

use HansDeBoeck\SocialiteExactonline\ExactonlineExtendsSocialite;
use Illuminate\Support\Facades\Event;
use SocialiteProviders\Manager\SocialiteWasCalled;

public function boot(): void
{
    Event::listen(SocialiteWasCalled::class, ExactonlineExtendsSocialite::class);
}

Configuratie

In config/services.php:

'exactonline' => [
    'client_id' => env('EXACTONLINE_CLIENT_ID'),
    'client_secret' => env('EXACTONLINE_CLIENT_SECRET'),
    'redirect' => env('EXACTONLINE_CALLBACK_URL'),
    'base_url' => env('EXACTONLINE_BASE_URL'),
],

En in .env:

EXACTONLINE_CLIENT_ID=
EXACTONLINE_CLIENT_SECRET=
EXACTONLINE_CALLBACK_URL=https://jouw-app.be/auth/exactonline/callback
EXACTONLINE_BASE_URL=https://start.exactonline.be

Het land staat in het adres

Exact draait per land op een eigen domein. base_url bepaalt waar zowel de aanmelding als de token-uitwisseling naartoe gaan:

Land base_url
Belgie https://start.exactonline.be
Nederland https://start.exactonline.nl
Duitsland https://start.exactonline.de
VK https://start.exactonline.co.uk

Laat je base_url weg, dan gebruikt de provider het Belgische adres.

Gebruik

use Laravel\Socialite\Facades\Socialite;

Route::get('/auth/exactonline', fn () => Socialite::driver('exactonline')->redirect());

Route::get('/auth/exactonline/callback', function () {
    $user = Socialite::driver('exactonline')->user();

    $user->getId();      // UserID
    $user->getName();    // FullName
    $user->getEmail();   // Email
    $user->getAvatar();  // PictureUrl

    $user->token;        // toegangstoken, tien minuten geldig
    $user->refreshToken; // verversing, dertig dagen geldig
    $user->expiresIn;

    $user->getRaw()['CurrentDivision']; // de administratie waarin hij zit
});

Verversen gaat via Socialite zelf:

$token = Socialite::driver('exactonline')->refreshToken($refreshToken);

Elke verversing bij Exact maakt de vorige ongeldig, dus schrijf de nieuwe weg in dezelfde transactie waarin je ze gebruikt.

Upgraden naar 1.0

De namespace is veranderd. Vervang in je applicatie Michielfb\SocialiteExactonline\ (0.1.x) of DeboeckDEV\SocialiteExactonline\ (master voor 1.0) door HansDeBoeck\SocialiteExactonline\.

Verder in deze versie:

  • PHP 8.3 en Laravel 12 of 13 zijn de ondergrens.
  • Provider::IDENTIFIER is EXACTONLINE in plaats van exactonline. De naam van de driver en de sleutel in config/services.php blijven exactonline.
  • base_url stuurt nu ook de token-uitwisseling. Wie op een ander land dan Belgie zat, kreeg de aanmelding wel op het juiste domein, maar het token nog altijd van start.exactonline.be.
  • Het registreren via EventServiceProvider en het weghalen van de standaard SocialiteServiceProvider uit config/app.php zijn vervallen: haak aan met Event::listen en laat auto-discovery de rest doen.

Licentie

MIT.