tenancy-docs/source/docs/v2/installation.blade.md
Samuel Štancl f8f354c323 3.x redesign
2020-06-08 21:20:15 +02:00

2.4 KiB

title description extends section
Installation Installing stancl/tenancy _layouts.documentation content

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]({{ $page->link('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->link('configuration') }}) page.