PHPackages                             flarme/multitenancy-toolkit - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. flarme/multitenancy-toolkit

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

flarme/multitenancy-toolkit
===========================

A simple library around spatie multitenancy package adding some features.

v1.2.3(2mo ago)028[3 PRs](https://github.com/flarmedev/multitenancy-toolkit/pulls)MITPHPCI passing

Since Mar 7Pushed 1mo agoCompare

[ Source](https://github.com/flarmedev/multitenancy-toolkit)[ Packagist](https://packagist.org/packages/flarme/multitenancy-toolkit)[ RSS](/packages/flarme-multitenancy-toolkit/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (6)Dependencies (12)Versions (10)Used By (0)

Multitenancy Toolkit
====================

[](#multitenancy-toolkit)

`flarme/multitenancy-toolkit` is an extension package for [`spatie/laravel-multitenancy`](https://github.com/spatie/laravel-multitenancy).

It adds practical tooling for:

- landlord/tenant scoped migration commands
- migration path registration helpers for package/service providers
- optional signed-URL tenant impersonation
- a preconfigured `tenant` middleware group

Requirements
------------

[](#requirements)

- PHP and Laravel versions supported by `spatie/laravel-multitenancy:^4.0`
- `spatie/laravel-multitenancy:^4.0`

Installation
------------

[](#installation)

```
composer require flarme/multitenancy-toolkit
```

The package provider is auto-discovered.

Package Structure
-----------------

[](#package-structure)

- `src/MultitenancyToolkitProvider.php`: package bootstrapping
- `src/ServiceProvider.php`: migration-loading helper base provider for your modules/packages
- `src/Console/Commands/Migrations/*`: migration command overrides (`migrate`, `migrate:fresh`, `migrate:rollback`)
- `src/Database/Migrations/Migrator.php`: migrator with landlord/tenant path support
- `src/Concerns/ImpersonatesUsers.php`: tenant model concern for impersonation links
- `src/Http/Controllers/ConsumeTenantImpersonationController.php`: signed impersonation link consumer
- `config/multitenancy-toolkit.php`: package configuration
- `routes/impersonation.php`: impersonation route registration

Configuration
-------------

[](#configuration)

Publish configuration:

```
php artisan vendor:publish --tag=multitenancy-toolkit-config
```

Main config file: `config/multitenancy-toolkit.php`

### Options

[](#options)

- `register_migrations_directories` (`bool`, default: `true`)
    - auto-registers `database/migrations/landlord` and `database/migrations/tenant`
- `tenant_middlewares` (`array`)
    - middleware list assigned to middleware group name `tenant`
- `impersonation.enabled` (`bool`, default: `false`)
    - enables signed impersonation route loading
- `impersonation.ttl` (`int`, default: `60`)
    - signed URL lifetime in seconds
- `impersonation.guard` (`string|null`, default: `null`)
    - auth guard used during impersonation
- `impersonation.route.*`
    - route middleware/prefix/path/name customization

Migration Commands
------------------

[](#migration-commands)

This package provides tenant-aware migration commands.

### Supported commands

[](#supported-commands)

- `php artisan tenancy:migrate`
- `php artisan tenancy:migrate:fresh`
- `php artisan tenancy:migrate:rollback`

### Scope options

[](#scope-options)

- `--landlord`: run only landlord migrations
- `--tenants`: run only tenant migrations for all tenants
- `--tenant={id}`: run only tenant migrations for one tenant

Rules:

- only one scope flag can be used at once
- if no scope flag is given, landlord + tenants are run
- in single-database setups, registered default, landlord, and tenant migration paths are run on the default connection
- in multi-database setups, `--database` and explicit `--path` input delegate to Laravel's default command behavior

### Graceful mode

[](#graceful-mode)

For `tenancy:migrate` and `tenancy:migrate:rollback`, use:

```
php artisan tenancy:migrate --tenants --graceful
php artisan tenancy:migrate:rollback --tenants --graceful
```

This returns success even when a tenant operation throws.

### Custom path execution

[](#custom-path-execution)

You can still target a custom migration path directly. In multi-database setups this intentionally falls back to Laravel's native migration behavior.

Examples:

```
php artisan tenancy:migrate --path=database/migrations/custom
php artisan tenancy:migrate:fresh --path=/absolute/path/to/migrations --realpath
php artisan tenancy:migrate:rollback --path=database/migrations/custom
php artisan tenancy:migrate:rollback --path=/absolute/path/to/migrations --realpath
```

Registering Migration Paths in Your Package/Module
--------------------------------------------------

[](#registering-migration-paths-in-your-packagemodule)

Extend `Flarme\MultitenancyToolkit\ServiceProvider` in your own service provider:

```
