* Add Laravel 12 support, drop Laravel 11 support
* Fix RLS tree generation (specify schema name in generateTrees())
* ci fixes, use stable virtualcolumn version
---------
Co-authored-by: lukinovec <lukinovec@gmail.com>
* Run cache tests on all supported drivers
* update ci healthcheck for memcached
* remove memcached healthcheck
* fix typos in test comments, expand internal.md [ci skip]
* add empty line [ci skip]
* switch to using $store->setPrefix()
* add dynamodb
* refactor try-finally to try-catch
* remove unnecessary clearResolvedInstances() call
* add dual Cache:: and cache() assertions
* add apc
* Flush APCu cache in test setup
* Revert "add dual Cache:: and cache() assertions"
This reverts commit a0bab162fbe2dd0d25e7056ceca4fb7ce54efc77.
* phpstan fix
* Add logic for scoping 'file' disks to FilesystemTenancyBootstrapper
* minor changes, add todos
* refactor how the session.connection is used in the DB session bootstrapper
* add session forgery prevention logic to the db session bootstrapper
* only use the fs bootstrapper for file disk in 'cache data is separated' dataset
* minor session scoping test changes
* Add session scoping logic to FilesystemTenancyBootstrapper, correctly update disk roots even with storage_path_tenancy disabled
* Fix code style (php-cs-fixer)
* update docblock
* make not-null check more explicit
* separate bootstrapper tests, fix swapped test names for two tests
* refactor cache bootstrapper tests
* resolve global cache todo
* expand tests: session separation tests, more filesystem separation assertions; change prefix_base-type config keys to templates/formats
* add apc session scoping test, various session separation bugfixes
* phpstan + minor logic fixes
* prefix_format -> prefix
* fix database session separation test
* revert composer.json changes, update laravel dependencies to expected next release
* only run session scoping logic in cache bootstrapper for redis, memcached, dynamodb, apc; update gitattributes
* tenancy.central_domains -> tenancy.identification.central_domains
* db session separation test: add datasets
---------
Co-authored-by: PHP CS Fixer <phpcsfixer@example.com>
* Add suffix_storage_path test
* Get filesystem bootstrapper coverage to 100%
* Delete enabling DB bootstrapper in TestCase
* Complete most of test todos
* Complete last tests todo
* Fix docblock
* add todo
---------
Co-authored-by: lukinovec <lukinovec@gmail.com>
* wip
* bump jobpipeline dependency
* bump pest dependency
* fix composer.json syntax
* minor changes to docker setup
* more docker changes
* compact pest output, remove unnecessary env vars from composer.json
* minor pest tweaks
* mssql fix
* try enabling colors in CI
* try setting --columns=max for pest in CI
* try setting columns using env var instead of --columns in CI
* Revert "try setting columns using env var instead of --columns in CI"
This reverts commit eb3c177aefa97b0a3140d7f0e89c5012a854ff42.
* replace --compact with --no-progress
* try setting a hardcoded columns value in CI
* remove --columns (doesn't work), add back --compact
* try setting COLUMNS to a hardcoded value in CI
* remove alternative env syntax from CI
* fix PrefixCacheBootstrapperTest on L11, skip on L10
* add one more skip() call
* fix validate.yml
* Simplify schema dump, skip dump-related tests in L10
* Rename 'dump' table to 'example'
* Bring schema dump-related tests together, add comments
* Merge schema path-related tests into one, add comments
* Rename dataset parameter
---------
Co-authored-by: lukinovec <lukinovec@gmail.com>
* Update url binding bootstrapper test
* Fix parent::temporarySignedRoute() call
* Add universal route tests for all identification types
* Improve determineContextFromRequest()
* Add setting `TenancyUrlGenerator::$prefixRouteNames` to true in TSP stub
* Delete seemingly redundant test (making one route universal won't make all routes universal in any case)
* Use collection syntax in ReregisterUniversalRoutes
* Improve comments
* Add domain identification MW annotation
* Update condition in GloballyUsable
* Set `tenancy.bootstrappers` instead of adding the bootstrappers using `tenancy.bootstrappers.x`, move test
* Revert GloballyUsable condition change
* Delete assigning bootstrappers to tenancy.bootstrappers.x
* Exclude cache prefixing bootstrapper from the initial configuration
* Fix test
* Unset bypass parameter
* Set static kernel identification-related properties in TestCase
* Update bootstrapper name in annotation
* Move unset() into a condition
* Update TenancyUrlGenerator condition
* Set static properties without instantiating Tenancy
* Fix unsetting bypass parameter
* formatting changes
* add a comment
* improve docblock
* add docblock to TenancyUrlGenerator [ci skip]
* docblock changes [ci skip]
* Update TenancyUrlGenerator (rename variable, allow bypassing prefixing temporarySignedRoute name)
* Improve determineContextFromRequest
* Only return the new url generator instance when extending 'url' in UrlBindingBootstrapper
* Check route's MW groups for the path ID MW
* Remove extra imports from config
* Rename MiddlewareContext to Context, add condition for skipping ID MW
* Set only the needed bootstrappers in TestCase
* Fix code style (php-cs-fixer)
* Remove condition
* Use correct return type
* Fix PHPStan issue
* Update comment
* Check for tenant parameter instead of prefix
* Update shouldBeSkipped condition for universal routes
* Don't remove the 'universal' MW group after route re-registration, update test
* Fix code style (php-cs-fixer)
* Fix typo
* Add test for mixing placement of access prevention and identification MW
* Add test for mixing placement of access prevention and identification MW
* Update docblock
* Add setting the session and key resolvers in UrlBindingBootstrapper (required with LW file uploads)
* Update stub
* Update variable name in route reregistering action
* Add trailing comma
* Fix code style (php-cs-fixer)
* Require routes using path identification to be flagged as tenant in order to be recognized as tenant routes
* Add tenant flag while re-registering routes
* Update determineContextFromRequest condition (wip)
* Fix code style (php-cs-fixer)
* Update the middleware context logic so that universal routes have to be flagged as tenant instead of just having ID MW
* Update path identification condition
* Fix re-registering the LW localized route (add 'tenant' MW)
* Update docblock
* Simplify LW route re-registration
* Add comment
* Update comment
* Simplify determineContextFromRequest, add comment
* Improve stub
* Add skipRoute method + test
* Fix typo
* Update assets/TenancyServiceProvider.stub.php
* Update src/Concerns/DealsWithEarlyIdentification.php
* Fix typo
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
* Improve comment
* Update test structure
* Restructure Fortify test
* code style
* Fix typo
* Update ReregisterUniversalRoutes annotation
* Only prefix route name if it wasn't already prefixed
* Add todo@docs
* Delete `Tenancy::$kernelAccessPreventionSkipped` and related logic
* Delete test tenant cleanup
* Test MW group unpacking, restructure and improve test
* Test that tenancy isn't initialized after visiting a central route with the tenant parameter
* Delete "in both central and tenant contexts" from test names
* Test that re-registering works with controllers too
* Set misc route properties during re-registering
* Determine context instead of guessing, update universal route tests
* Use randomly generated tenant ID instead of hardcoding `acme`
* Remove setting route validators
* Rename and update determine context method, add comments
* Update ForgetTenantParameter annotation
* Add comment
* Delete comment, delete variable assignment
* Update early domain identification test
* Improve domain identification tests (test defaulting accurately)
* Improve readability
* Simplify domain early ID test
* Use randomly generated tenant instead of 'acme'
* Simplify request data ID test, use random tenant instead of 'acme'
* Simplify defaulting domain identification test
* Use RouteFacade alias for the Route facade, improve test code
* Add defaulting to the request data and path ID tests
* Merge path identification tenant parameter removal tests, clean up
* Correct wording
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
* Delete debugging things from UniversalRouteTest
* Update annotation
* Add `// Creates a matrix`
* Improve comment wording
* Add MiddlewareUsableWithUniversalRoutes, refactor code accordingly
* Fix code style (php-cs-fixer)
* Delete debugging leftovers
* Delete unused import
* Update universal route GloballyUsable condition
* Don't implement the universal route interface in access prevention MW
* Check if request host is in the central domains in domain ID MW
* Test universal routes with domain identification without access prevent MW
* Test that universal routes work only with identification MW implementing the universal route interface
* Fix code style (php-cs-fixer)
* Rename GloballyUsable to UsableWithEarlyIdentification
* Fix annotation
* Update requestHasTenant annotations
* Update comment
* Add `with()` comments
* Add with() comments where missing
* Rename interface, update/add comments
* Rename exception, update its default message
* Fix code style (php-cs-fixer)
* Fix interface name
* Delete redundant code from subdomain ID MW
* Change domainOrSubdomain ID MW so that instead of passing the identification to other MWs, it happens in the domainOrSubdomain MW
* Test domainOrSubdomain identification with universal routes
* Fix code style (php-cs-fixer)
* Rename universal routes interface
* Fix code style (php-cs-fixer)
* Try explaining forgetting the tenant parameter better
* update interface name reference
* uncouple example from query parameters
* Update ForgetTenantParameter.php
* Update ForgetTenantParameter annotation
* Check both routeHasMiddleware and routeHasIdentificationMiddleware in the route MW detection test
* Hardcode tenant subdomain
* Delete redundant event listening code
* Delete unused imports
* Delete misuse of `tenancy()->getMiddlewareContext()` from conditions
* Delete unused variable
* Update comment
* Correct request data identification test (defaulting)
* Fix defaulting in path id test
* Move default route context configuration in domian id test
* Rename and update the tenant parameter test
* Delete extra tenant parameter test
* Use `tenant-domain.test` instead of `127.0.0.2`
* Add `default_to_universal_routes` config key
* Deal with defaulting to universal routes in the reregistering action
* Update logic to make defaulting to universal routes possible
* Test defaulting to universal routes
* Fix code style (php-cs-fixer)
* Delete extra tests
* Delete "without access prevention" from datasets
* Add defaulting to universal routes to datasets
* Override universal flag by central/tenant flag
* Add universal flag overriding test
* Update "a route can be universal in both route modes" so that the name corresponds with the tested thing
* Ignore the PHPStan error
* Reset `InitializeTenancyByPath::$onFail` in PathIdentificationTest
* Simplify expression
* Use 'Tenancy (not) initialized.' in instead of `tenant()?->getTenantKey()` for better assertions
* Properly test removing tenant parameter
* Reset static properties in tests
* Correct comments in EarlyIdentificationTest
* Add comment
* Add detail to annotation
* Throw exception if payload isn't string or null in request data ID MW
* Fix code style (php-cs-fixer)
* Delete static `$kernelIdentificationSkipped` property, use `$request->attributes` instead
* Use 'default_route_mode' instead of 'default_to_tenant/universal_routes'
* Fix code style (php-cs-fixer)
* Make path identification MW, tenantParameterName and tenantRouteNamePrefix configurable in ReregisterUniversalRoutes
* Delete unused import
* Add `$passTenantParameterToRoute` to TenancyUrlGenerator
* Use `$passTenantParameterToRoute` in BootstrapperTest
* Bypass tenant parameter passing
* Improve TenancyUrlGenerator so that both ID methods work
* Fix code style (php-cs-fixer)
* Improve TenancyUrlGenerator readability
* Add modifyBehavior() to TenancyUrlGenerator
* Fix code style (php-cs-fixer)
* Improve comment
* Toggle route name prefixing in path/request data ID MW (route-level identification)
* Fix code style (php-cs-fixer)
* Add path identification MW config key, add `getTenantParameterName()` to ForgetTenantParameter
* Fix code style (php-cs-fixer)
* Fix modifyBehavior and routeBehaviorModificationBypassed
* Add type to `$parameters` parameter
* Split modifyBehavior into two methods, don't pass name and parameters by reference
* Update UrlBindingBootstrapper annotation
* Correct naming in tests (request data -> query string identification)
* Add info to annotation
* Pass arrays to the behavior modification methods instead of `mixed`
* Fix default value of static property in Fortify bootstrapper
* Fix code style (php-cs-fixer)
* Correct annotation
* Enable prefixing routes directly using path identification MW
* Test re-registration of routes with path ID MW
* Prefix names of routes directly using path ID MW
* Fix code style (php-cs-fixer)
* Add Livewire v3 integration example to TSP stub
* Prefix route name only if it's not prefixed already
* Rename ReregisterUniversalRoutes to ReregisterRoutesAsTenant
* Fix code style (php-cs-fixer)
* Improve ReregisterRoutesAsTenant
* Add/update TenancyUrlGenerator docblocks
* Update action name in comments/test names
* Update reregister action annotation
* Delete unused imports
* Improve comments
* Make method protected
* Improve TenancyUrlGenerator code
* Test bypass parameter removal
* Fix comment
* Update annotation
* Improve shouldReregisterRoute
* Fix typo, delete redundant comment
* Improve skipRoute
* Improve shouldBeSkipped
* Add and test `$passTenantParameterToRoutes`
* add a comment
* Fix typo in comment
* Pass array as $parameters in prepareRouteInputs
* Make path_identification_middleware an array
* Fix code style (php-cs-fixer)
* Fix ReregisterRouteAsTenant
* Move tenantParameterName and tenantRouteNamePrefix getting to PathIdentificationManager
* Make PathIdentificationManager properties `Closure|null`
* Fix code style (php-cs-fixer)
* Fix PathIdentificationManager
* Update comments
* Use foreach for dataset definition
* Extract repetitive inGlobalStack and routeHasMiddleware calls
* Refactor PathIdentificationManager
* Update TenancyUrlGenerator annotation
* Add $skippedRoutes, refactor ReregisterRoutesAsTenant
* Improve reregisterRoute
* Update re-register action annotation
* update test name
* Make PathIdentificationManager methods static again, update comments
* Add test comment
* Update ForgetTenantParameter annotation
* Improve route re-registration condition, add comment
* Change "re-register" to "clone"
* minor code improvements
---------
Co-authored-by: lukinovec <lukinovec@gmail.com>
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
Co-authored-by: PHP CS Fixer <phpcsfixer@example.com>
* cache prefix
* prefix cache bootstrapper and tests
* remove comment
* DI app
* cache prefix base from config
* Create PrefixCacheBootstrapperTest.php
* remove `null` check
* fix phpstan error
* Update PrefixCacheTenancyBootstrapper.php
* Update PrefixCacheBootstrapperTest.php
* add comments
* Update PrefixCacheTenancyBootstrapper.php
* Update PrefixCacheBootstrapperTest.php
* Update config.php
* test names grammar
* user `getTenantKey` method
* assert tenants' data is accessible using the prefix from the central context
* remove unused line
* use proper DI
* build prefix using original prefix
* fix prefix test according to prefix changes
* fix test
* CacheManager dependency injection test
* CacheService class as singleton
* introduce second tenant in test
* use Repository in service class DI
* Update CacheAction.php
* Rename CacheAction to CacheService
* Update prefix bootstrapper and test (`setStore()` in CacheManager and Repository needed)
* Add macro
* Fix code style (php-cs-fixer)
* Simplify cache store refreshing
* Make Tenancy override CacheManager
* Update CacheManager, add refreshStore()
* Fix code style (php-cs-fixer)
* Uncomment cache tagging
* Revert condition in CacheManager to avoid excessive nesting
* Move `Cache::macro()` to a slightly more appropriate place
* Fix code style (php-cs-fixer)
* Use better class for the macro
* Toggle cache tags
* Make CacheManager::$addTags default to `true`
* Add changes to PR to Laravel
* Fix code style (php-cs-fixer)
* Revert changes, add comment
* Add test
* Make `$cache` non-nullable
Co-authored-by: Samuel Štancl <samuel@archte.ch>
* Add and test `nonTenantCacheDrivers`
* Add nonTenantCacheDrivers check
* Test that the prefix stays the same
* Change nonTenantCacheDrivers to tenantCacheStores
* Remove redundant CacheManager extend() call
* Make 'redis' the only tenant cache store in beforeEach, test that tenantCacheStores works
* Remove unused import, change word
* Make CacheService a singleton in a test
* Update test name
* Remove group('prefix')
* Rename CacheManagerService
* Improve specific cache store in a service test
* Improve comment
* Improve tests
* Use my Laravel fork
* Fix code style (php-cs-fixer)
* Downgrade Laravel
* Upgrade Laravel
* Hint Repository implementation instead of contract
* Fix types
* Fix code style (php-cs-fixer)
* Fix test
* Use Laravel fork in ci.yml
* use dev-master before our changes are released in L10
* remove laravel fork from repositories
* use 10.x-dev instead of master
* remove L9 support
* 10.x-dev (fix conflict resolution)
* use the laravel version from the ci matrix for the phpstan job as well
* Revert "use the laravel version from the ci matrix for the phpstan job as well"
This reverts commit 5f3079d2ff.
* Test that non-default stores get prefixed too
* Use new Laravel release, remove L9 support
* Complete L9 support removal
* Specify 10.1.1 as the minimal Laravel version in ci.yml
* Use 10.x-dev
* Prefix all cache stores specified in `$tenantCacheStores`
* Update Laravel
* Use tmpfs in docker-compose
* Add customizing cache store prefixes
* Test cache prefixing customization
* Fix code style (php-cs-fixer)
* Update ci.yml
* Delete tmpfs from docker-compose.yml (there were no benefits)
* Use default prefix generator inline, delete the 'default' key logic
* Fix original prefix logic
* Update tests
* Delete CacheTenancyBootstrapper
* Reset static properties in afterEach
* Use `$this->config` instead of `config()`
* Disable cache tagging by default, add CacheTagBootstrapper
* Fix code style (php-cs-fixer)
* Rename bootstrapper
* Improve CacheManager
* Move logic from separate method to __call
* Make original prefixes customizable
* Add info in comment
* Add defaultPrefix property
* Use `$this->app` instead of `app()`
* Rename bootstrapper
* Fix code style (php-cs-fixer)
* Use a single original prefix
* Update prefix generator logic + tests
* Correct `$addTags` reset in a test
* Update cache tests so that both prefixing and tagging is covered
* Simplify cache tests
* Delete afterEach
* Small testing improvements
* Set `cache.default` in beforeEach
* Update cache prefixing and tests
* Add assertion
* Refactor assertion
* Refactor assertions
* Delete TTL from cache put calls
* Add re-initialization cache assertion
* Assert that cache is null from the beginning
* Merge the tenantCacheStores tests
* Fix formatting
* Improve test name
* Improve tests
* Add cache manager config key
* Fix code style (php-cs-fixer)
* Update defaulting test
* Add todo
* Update comments
* Extract duplicate assertions into a closure
* Update comment
* Add assertions + comment
* Delete redundant config put calls
* Use `tenancy.cache.manager` config instead of `Stancl\Tenancy\CacheManager`
* Change setting to assertion, add comment
* Inline variable & config key assignment
* Delete `cache.default` assertion
* Override cache manager only in CacheTagsBootstrapper
* Fix code style (php-cs-fixer)
* Prefix both drivers by default, add assertions for the second driver where missing
* Clean up global state (static properties) in before/afterEach
* Add docblock to tags bootstrapper
* Delete extra dependency
* Add `illuminate/support` dependency back
* Use `$addTags` approach again
* Fix code style (php-cs-fixer)
* Revert "Fix code style (php-cs-fixer)"
This reverts commit ea805fa231.
* Revert "Use `$addTags` approach again"
This reverts commit 8f5a4e4eb6.
* Add commented CacheTagsBootstrapper with info to the bootstrappers config
* Delete legacy bootstrapper from the bootstrappers config, add info to the bootstrapper's docblock
* Delete "?" from `tenant()?->getTenantKey()
* call generatePrefix() on $bootstrapper
* misc improvements
---------
Co-authored-by: lukinovec <lukinovec@gmail.com>
Co-authored-by: PHP CS Fixer <phpcsfixer@example.com>
Co-authored-by: Samuel Štancl <samuel@archte.ch>
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
* Add BroadcastTenancyBootstrapper and TenancyBroadcastManager
* Fix code style (php-cs-fixer)
* Bind original BroadcastManager again on `revert()`
* Fix code style (php-cs-fixer)
* Move manager to correct directory
* Fix property type
* Make BroadcastTenancyBootstrapper a singleton in tests
* Fix code style (php-cs-fixer)
* Bind the original broadcaster instance on `revert()`
* Instead of just forgetting the old broadcaster instance, bind the new one
* Add BroadcastTenancyBootstrapper tests
* Separate the test
* Fix code style (php-cs-fixer)
* Add bootstrapper test
* Add broadcaster channels test
* Clean up BootstrapperTest
* Fix BroadcastingTest
* Add comments to TenancyBroadcastManager
* Add BroadcastTenancyBootstrapper comments
* Simplify BroadcastManager extension, remove setDriver method
* Add comment
* Fix PHPStan errors
* Fix PHPStan errors
* Remove duplicate import
* Fix test
* Delete `::class` from test name
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
* Create databases for newly created tenants in BroadcastingTest
* move spatie/invade to require
---------
Co-authored-by: PHP CS Fixer <phpcsfixer@example.com>
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
* Replace MailManager singleton with an instance of a custom mail manager which always resolves the mailers instead of getting the cached ones
* Fix code style (php-cs-fixer)
* Add MailTenancyBootstrapper
* Add MailTenancyBootstrapper to tenancy.bootstrappers config (commented out)
* Fix code style (php-cs-fixer)
* Make credentials map a public static property
* Always resolve only the mailers specified in the mailersToNotCache public static property
* Fix typo in comment
* Update TenancyServiceProvider comment
* add todo
* Add comments to TenancyMailManager, rename property
* Remove the configKey array check
* Simplify bootstrap method
* Change $credentialsMap so that config keys are the keys, and the tenant property names are the values
* Rename $mailersToAlwaysResolve to $tenantMailers
* Update comment
* Update comment
* Rename variable in TenancyServiceProvider comment
* Scaffold tests
* Update comments after review
* Uncomment MailTenancyBootstrapper in config
* Use array_key_exists instead of null check
* Split config logic into methods
* Update mapping credentials
* Add tests for the added logic
* Fix code style (php-cs-fixer)
* Delete default 'smtp' mailer in $tenantMailers
* Add separate method to pick the appropriate mail credentials map preset
* Specify test name
* Move mail bootstrapper tests to BootstrapperTest
* Depend less on the default mailer by adding a static `$mailer` property
* Use static property for map presets
* Comment out MailTenancyBootstrapper from config
* Add return types to MailTenancyBootstrapper methods
* Update test name
* Move MailManager extension to MailTenancyBootstrapper
* Fix code style (php-cs-fixer)
* Update config reverting test
* Use `invade()` instead of ReflectionClass
* Fix constructor parameter formatting
* Delete TenancyMailManager, update tests
* Add return type
* Update comment
* Update MailTest
* Delete `group('mailer')`
* Delete bindNewMailManagerInstance()
* Delete remaining `group('mailer')`
* Fix comment
* Fix comment
Co-authored-by: PHP CS Fixer <phpcsfixer@example.com>
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
* exclude master from CI
* Add batch tenancy queue bootstrapper
* add test case
* skip tests for old versions
* variable docblocks
* use Laravel's connection getter and setter
* convert test to pest
* bottom space
* singleton regis in TestCase
* Update src/Bootstrappers/BatchTenancyBootstrapper.php
Co-authored-by: Samuel Štancl <samuel@archte.ch>
* convert batch class resolution to property level
* enabled BatchTenancyBootstrapper by default
* typehint DatabaseBatchRepository
* refactore name
* DI DB manager
* typehint
* Update config.php
* use initialize() twice without end()ing tenancy to assert that previousConnection logic works correctly
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
Co-authored-by: Abrar Ahmad <abrar.dev99@gmail.com>
Co-authored-by: Samuel Štancl <samuel@archte.ch>
* added support for microsoft sql server database
* added support for microsoft sql server database
* trigger ci
* revert change
* trigger ci
* Try installing pdo_sqlsrv
* different approach for installing sqlsrv via pecl
* add dependencies
* add gnupg2
* Update Dockerfile
* try skipping msodbcsql17
* Update Dockerfile
* add dependency back
* update before installing
* try to add mssql
* mssql host
* TENANCY_TEST_MSSQL_HOST env var
* add env vars for mssql
* add sqlsrv vars to TestCase
* rename vars to SQLSRV [skip ci]
* MSSQL -> SQLSRV
Co-authored-by: Samuel Štancl <samuel@archte.ch>
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
* 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>
* 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.
* Initial draft
* Apply fixes from StyleCI
* Use CI on master branch too
* Pass correct argument to queued DB creators/deleters
* Apply fixes from StyleCI
* Remove new interface from MySQLDBManager
* Make phpunit run
* Apply fixes from StyleCI
* Fix static property
* Default databaseName
* Use database transactions for creating users & granting permissions
* Apply fixes from StyleCI
* Get old tests to pass
* Apply fixes from StyleCI
* Add tests for PermissionControlledMySQLDatabaseManager
* Apply fixes from StyleCI
* Write test for extra config, fix bug with extra config
* Apply fixes from StyleCI
* Add support for postgres schema
* wip
* Apply fixes from StyleCI
* revert to db as default for pgsql
* Move separate_by to database
* Fixing testing
* Fixing style
* Reverted change
* Store string instead of Connection instance
* Remove use statement
* Add use statement for DB facade
* mysql -> pgsql
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>