Installation
Laravel 6.0 or higher is needed.
Require the package via composer
First you need to require the package using composer:
composer require stancl/tenancy
Automatic installation
To install the package, simply run
php artisan tenancy:install
This will do all the steps listed in the Manual installation section for you.
You will be asked if you want to store your data in a relational database or Redis. Continue to the next page (Storage Drivers) to know what that means.
Manual installation
If you prefer installing the package manually, you can do that too. It shouldn't take more than a minute either way.
Setting up middleware
Now open app/Http/Kernel.php
and make the package's middleware classes top priority, so that they get executed before anything else, making sure things like the database switch connections soon enough:
protected $middlewarePriority = [
\Stancl\Tenancy\Middleware\PreventAccessFromTenantDomains::class,
\Stancl\Tenancy\Middleware\InitializeTenancy::class,
// ...
];
Add the \Stancl\Tenancy\Middleware\PreventAccessFromTenantDomains::class
middleware to all route groups you use, so that's probably 'web'
and possibly 'api'
:
protected $middlewareGroups = [
'web' => [
\Stancl\Tenancy\Middleware\PreventAccessFromTenantDomains::class,
// ...
],
// ...
]
Creating routes
The package lets you have tenant routes and "exempt" routes. Tenant routes are your application's routes. Exempt routes are routes exempt from tenancy — landing pages, sign up forms, and routes for managing tenants.
Routes in routes/web.php
are exempt, while routes in routes/tenant.php
have the tenancy middleware automatically applied to them.
So, to create tenant routes, put those routes in a new file called routes/tenant.php
.
Configuration
Run the following:
php artisan vendor:publish --provider='Stancl\Tenancy\TenancyServiceProvider' --tag=config
This creates a config/tenancy.php
. You can use it to configure how the package works.
Configuration is explained in detail on the Configuration page.