This PR adds a new session value `tenancy_impersonated_by` in the tenant scope when you are impersonating a tenant.
This is similar to how Laravel Nova adds the `nova_impersonated_by` session value and could be used to identify when you are impersonating, who is impersonating. This may be useful for additional application logic and UI niceties such as an impersonation banner.
* Fix ArgumentCount exception on the TenantAssetsController when no `$path` is provided
* CS
* CS
* Handle null case explicitly
* code style
Co-authored-by: Bram Wubs <bram@sibi.nl>
Co-authored-by: Samuel Štancl <samuel@archte.ch>
* Let the user pass the tenant suffix by %tenant%
In this PR we let the user pass an additional parameter using `%tenant%` so the user can additionally pass the folder corresponding to each tenant.
This is my proposal, because if I try to use %storage_path% within Linux, I get the full path to the project when I use Google Cloud Storage
* Missing missing updates
Moving from $subject to $root when %storage_path% has been replaced
* Update PostgreSQLSchemaManager to set correct config key value
* Update to use version_compare
* Update TenantDatabaseManagerTest
* Improve TenantDatabaseManagerTest
* Update TenantDatabaseManager
* try specifying the signature in __construct
* constructor doesn't work since Reflection is used, try specifying getDefaultName() instead
* Fixed: make migration commands compatible
* Fix failing tests
* Fix username generation
* Re-create tmp dir as well if needed
* wip
* Test on Laravel 9
* Don't extend final Kernel class
* Make FilesystemTenancyBootstrapper compatible with Flysystem v3
Co-authored-by: George <jiri.zizka@funfirst.cz>
* Update tenant maintenance mode te be in line with Laravel
* Exclude PHP 7.4 <> L9 combination from testing
* add root_override-related assertions
* getPrefix -> getPathPrefix
* handle / inconsistency in s3 prefix
* Refactor Storage facade changes
Co-authored-by: George <jiri.zizka@funfirst.cz>
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
* Optionally handle drop of table views on MigrateFresh
@stancl I managed to make the modification discussed here #811
Afaik (and I can understand) this is the easiest way to handle it, but I'm open to discuss.
* Remove redundant store variable
* code style
Co-authored-by: Samuel Štancl <samuel@archte.ch>
* Upgrade vlucas/phpdotenv to ^5.0
`Dotenv::create($paths)` was the syntax for releases before v4
* Remove vlucas/phpdotenv dependency and make it work with newer versions.
* Fixed array to string conversion
Previous code would give this warning before actually showing exception message
`<warning>PHP Warning: Array to string conversion in .../vendor/stancl/tenancy/src/CacheManager.php on line 24</warning>`
* Update variable & syntax
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
* Add option to enable/disable tenant asset route
* Only registers tenant route if enabled in config
* Uses proper config key
* Move routes config option
* Move config to service provider
* Moves config to service provider
* Instead of querying Domain model, find Tenant and eager load it's domain via Tenant model. Fixed cached lookup issue - when caching Tenant, also include the current Domain, so it can be later accessed via $tenant->domains->first() (even, when using multiple domains per tenant). Added tenantIdentifiedFromCache method in CachedTenantResolver.php, which can be used to set custom properties in resolvers after Tenant is loaded from cache.
* StlyeCi Fix - removed PHP 8 nullsafe operator for compatibility with older PHP versions, replaced with inline if
* Redundant variable '$domain', because $tenant is not null, only, when current domain is found and relationship is loaded (with only one domain).
* Fixed tenant()->domains showing incorrect data. Renamed tenantIdentifiedFromCache() method and removed duplicate code, when setting current domain.
* Removed select() for better flexibility, added new method setCurrentDomain(), refactored the usage of tenantIdentified().
* rename method to resolved()
* clean up code
* StyleCi Fix
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>