Laravel Sanctum
Note: The
sanctum
auth guard can't be used with user impersonation because user impersonation supports stateful guards only.
Laravel Sanctum works with Tenancy out of the box, with the exception of the sanctum.csrf-cookie
route. You can make some small changes to make the route work.
Making the csrf-cookie route work in the tenant app
To make the sanctum.csrf-cookie
route work in the tenant app, do the following:
- Add
'routes' => false
to thesanctum.php
config - Publish the Sanctum migrations and move them to
migrations/tenant
- Make Sanctum not use its migrations in the central app by adding
Sanctum::ignoreMigrations()
to theregister()
method in yourAuthServiceProvider
- Add the following code to
routes/tenant.php
to override the originalsanctum.csrf-cookie
route:
Route::group(['prefix' => config('sanctum.prefix', 'sanctum')], static function () {
Route::get('/csrf-cookie', [CsrfCookieController::class, 'show'])
->middleware([
'web',
InitializeTenancyByDomain::class // Use tenancy initialization middleware of your choice
])->name('sanctum.csrf-cookie');
});
Making the csrf-cookie route work both in the central and the tenant app
To use the sanctum.csrf-cookie
route in both the central and the tenant apps:
- Follow the steps in the previous section ("Sanctum's csrf-cookie route in the tenant app")
- Set up universal routes
- Remove
Sanctum::ignoreMigrations()
from yourAuthServiceProvider
'sregister()
method - Remove
'routes' => false
from thesanctum.php
config - Add the
'universal'
middleware to thesanctum.csrf-cookie
route in yourroutes/tenant.php