Middleware
AuthenticateTenant
AuthenticateTenant ensures the currently authenticated user is permitted to access the currently specified tenant URI. It is used as Route middleware and is required for Multi-Account tenant systems.
TenantSiteResolver
TenantSiteResolver will determine if the requested host is a valid tenant host. This is the primary Multi-Site tenancy middleware. It must be registered as a Kernel middleware, and run after the maintenance mode check but before any others.
TenantRouteResolver
TenantRouteResolver is the second part of the Multi-Site middleware. It runs after the site resolver and tries to load the hosts route information from a file located in App/Http/.php. If the current tenant is not a DomainAwareTenantParticipant, the standard routes.php file is checked for instead.
EnsureTenantType
EnsureTenantType is a Route middleware and is used when you have used inheritance for your tenant participant. It allows routes to be safe-guarded from certain tenant types so for example: you could mark a set of routes as requiring a particular membership type, or as an opportunity to up-sell services - or purely as a security safe-guard to ensure that basic tenants do not gain access to admin features.
This middleware should be the last to run of the tenancy middleware.
Twig Extension
A Twig extension is provided that can be added to the config/twigbridge.php extensions. This adds the following template functions:
- current_tenant_owner_id
- current_tenant_creator_id
- current_tenant_owner
- current_tenant_creator
- current_tenant_security_model
This allows access to the current resolved Tenant instance. To enable the Twig extension, add it to the list of extensions in the config/twigbridge.php file.
Note: in a previous iteration, this included functions to look up tenant owner/creator from a repository, however: as the tenant could be domain aware or standard tenant, you do not know which repository to use so it was removed. Further: this information almost certainly should not be being pulled in a standard view anyway.
Views
The bundled TenantController expects to find views under:
- /resources/views/tenant
- /resources/views/tenant/error
These are not included as they require application implementation. The TenantController class has information about file names and route mappings.
In multi-site, these will need placing in appropriate sub-folders / duplicating where necessary.