Middleware Configuration

Header or query parameter based identification

To identify tenants using request headers or query parameters, you may use the InitializeTenancyByRequestData middleware.

Create a central route (don't apply the tenancy middleware group on it and don't put it into routes/tenant.php) and apply this middleware on the route:

\Stancl\Tenancy\Middleware\InitializeTenancyByRequestData::class

To customize the header, query parameter, and onFail logic, you may do this in your AppServiceProvider::boot():

// use Stancl\Tenancy\Middleware\InitializeTenancyByRequestData::class;

$this->app->bind(InitializeTenancyByRequestData::class, function ($app) {
    return new InitializeTenancyByRequestData('header name', 'query parameter', function ($exception) {
        // return redirect()->route('foo');
    });
});

To disable identification using header or query parameter, set the respective parameter to null.

Customizing the onFail logic

When a tenant route is visited and the tenant can't be identified, an exception is thrown. If you want to change this behavior, to a redirect for example, add this to your app/Providers/AppServiceProvider.php's boot() method:

// use Stancl\Tenancy\Middleware\InitializeTenancy;

$this->app->bind(InitializeTenancy::class, function ($app) {
    return new InitializeTenancy(function ($exception, $request, $next) {
        // return redirect()->route('foo');
    });
});