1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 16:24:04 +00:00
Commit graph

850 commits

Author SHA1 Message Date
Michael Kampmann Petræus
6b38a356cb
fix: drop tenant databases on migrate fresh without domains (#1282) 2025-01-01 20:31:47 +01:00
Márk Magyar
79f740d057
[4.x] General code cleanup (#1278)
* Declare sensitive parameters as sensitive

... just so that they don't show up in logs

* Remove unnecessary null-coalescing

* Simplify return

* Merge isset() calls

* Inline return

* Use nullsafe operator

* Simplify if-else branches

* Use direct empty string comparison instead of strlen()

* Add missing type

* Change interface as events expect a TenantWithDatabase not just a Tenant

* Narrow typehint

* Remove redundant type casts

* Fix style with php-cs-fixer

* Fix typos

* Revert unwanted if-else simplification

* fix phpstan errors

* narrow type

---------

Co-authored-by: Samuel Štancl <samuel@archte.ch>
2024-12-31 00:35:46 +01:00
Alec
05b602e37f
fix: no primary key on RLS views (#1280)
* fix: no primary key on RLS views

* test: add RLS view regression

* verify and slightly refactor regression test

---------

Co-authored-by: Samuel Štancl <samuel@archte.ch>
2024-12-31 00:02:50 +01:00
eff41553d7 deprecate JobBatchBootstrapper 2024-12-27 21:33:44 +01:00
79444723dd phpstan fix 2024-12-20 03:47:35 +01:00
lukinovec
cb0d7e2902
Improve early identification tests (#66)
* Separate route-level domain identification test from path/request to improve readability WIP

* Get rid of confusing datasets in route-level identifcation tests

* Clean up updated tests

* Simplify early id tests

* Reduce dataset duplication

* Improve test readability, fix false positive,  polish details

* Separate early ID test from defaulting test (WIP)

* Finish improving and correcting the early identification/default route mode tests

* Make flag/default mode usage more clear by improving the docblock in DealsWithRouteContexts

* Fix PHPUnit deprecation warnings

* code review

* code review

---------

Co-authored-by: Samuel Štancl <samuel@archte.ch>
2024-12-20 03:42:23 +01:00
Samuel Štancl
48b916e182
Supported named in-memory SQLite databases (#69)
This PR adds support for named in-memory SQLite databases, making it feasible to use in-memory SQLite for tenant databases in tests.

The usage is simply creating a tenant with 'tenancy_db_name' => ':memory:' and the bootstrapper will automatically update the tenant with a database name derived from its tenant key.

There are static property hooks for keeping these DBs alive (at least one connection needs to be open, they don't have process lifetime and are essentially "refcounted") and closing them when the database is deleted. This gives the user control over the lifetimes of these databases.
2024-11-25 04:48:52 +01:00
Samuel Štancl
85bdbd57f7
Fix pullFromPendingPool() behavior (#70) 2024-11-25 04:44:39 +01:00
PHP CS Fixer
19631f4e9a Fix code style (php-cs-fixer) 2024-11-09 19:54:56 +00:00
56dd4117ab Fix origin id w/ empty header & using full-hostname subdomain records
This makes it possible to have Domain records in both `foo` and
`foo.{centralDomain}` format when using the combined domain/subdomain
identification middleware, or the origin header id mw which extends it.

This commit also refactors some related logic.
2024-11-09 20:48:45 +01:00
10b214c452 add phpstan ignore 2024-10-11 23:01:12 +02:00
PHP CS Fixer
d4b9972600 Fix code style (php-cs-fixer) 2024-10-11 19:32:21 +00:00
9ee1d63dce sqlite: use WAL journal mode by default 2024-10-11 21:31:54 +02:00
a37dc9b449 reimplement broadcasting channel helpers to support model binding 2024-10-03 21:12:09 +02:00
836a258a78 sqlite: use .sqlite suffix if db.suffix is empty 2024-09-30 16:49:46 +02:00
c6ba62bdd0 ParallelCommand: add -P option for bypassing MAX_PROCESSES 2024-09-30 16:36:37 +02:00
303b52d25a minor improvements to parallelization logic 2024-09-29 12:42:29 +02:00
075789eb91 fix typo in ParallelCommand 2024-09-29 12:25:46 +02:00
f017b6509b fix sysctl string 2024-09-27 23:21:08 +02:00
b01c16f4fc phpstan fixes 2024-09-27 23:16:39 +02:00
39bcbda5d0 parallel commands: core # autodetect, bugfixes, improved output 2024-09-27 23:02:03 +02:00
b4a055315b improve command output 2024-09-27 22:50:22 +02:00
0c105c6d37 backport ed02943 from v3 2024-09-17 18:29:07 +02:00
0fc105487b Tenant DB manager database() -> connection() 2024-09-12 18:34:45 +02:00
f3e01c1581 fix docblock formatting 2024-09-10 12:02:14 +02:00
8b41ea3184 install command: support noninteractive use 2024-08-30 19:25:54 +02:00
lukinovec
2c0f61585d
Make RootUrlBootstrapper only have an effect in CLI (#58)
* Interrupt RootUrlBootstrapper's bootstrap() execution if the app isn't running in console, add docblock

* Improve overrideUrlInTenantContext() documentation [ci skip]

* Improve RootUrlBootstrapper [ci skip]
2024-08-28 00:42:36 +02:00
lukinovec
6b74589d76
Update specific attributes of pending tenants while they're being pulled (#59)
* Add option to update attributes of pending tenants while pulling them

* Fix failing toEqualCanonicalizing tests

* Fix code style (php-cs-fixer)

* fix code errors

* lock phpcsfixer to 3.62.0 due to a bug in 3.63.1

---------

Co-authored-by: PHP CS Fixer <phpcsfixer@example.com>
Co-authored-by: Samuel Štancl <samuel@archte.ch>
2024-08-28 00:41:16 +02:00
87e02f207f more phpstan fixes 2024-08-06 18:26:46 +02:00
PHP CS Fixer
a4318d81bd Fix code style (php-cs-fixer) 2024-08-06 02:35:55 +00:00
4372e1bef2 fix phpstan errors 2024-08-06 04:35:25 +02:00
PHP CS Fixer
18a16e6a74 Fix code style (php-cs-fixer) 2024-08-06 01:31:16 +00:00
b9ff980293 remove const type 2024-08-06 03:30:32 +02:00
Samuel Štancl
1b0e7d0507
Parallel migrations (#57)
* parallelize migration-related commands

* Fix code style (php-cs-fixer)

---------

Co-authored-by: PHP CS Fixer <phpcsfixer@example.com>
2024-08-06 02:48:25 +02:00
lukinovec
15d12e22c7
Fix cookie identification (#56)
* route cloning: Trim '/' from original route prefixes

* Decrypt cookie if encrypted in request data ID MW

* Fix code style (php-cs-fixer)

* Fix PHPStan error [ci skip]

* Revert "route cloning: Trim '/' from original route prefixes"

This reverts commit 3dc97eba1b3b91b3446bc16fd107385fe835621e.

* Fix code style (php-cs-fixer)

* add a setting for requiring cookie encryption

* Fix code style (php-cs-fixer)

---------

Co-authored-by: PHP CS Fixer <phpcsfixer@example.com>
Co-authored-by: Samuel Štancl <samuel@archte.ch>
2024-08-06 02:19:11 +02:00
lukinovec
0f7cd2e868
Trim trailing / from route prefixes during route cloning (#55)
* route cloning: Trim '/' from original route prefixes

* Add test for the trimming of route prefixes

* Revert "Add test for the trimming of route prefixes"

This reverts commit 568ae17d2bf8d5542a0e46840f7604c6a0df236d.

* Add test for the trimming of route prefixes

* Delete extra comments [ci skip]

* Fix regression test [ci skip]

* trigger CI

* Add routes with trailing slashes to the cloned route prefixing test

* Test nested '/' route cloning

* Update cloned route creation as suggested

* fix terminology

* add comment to test

---------

Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
Co-authored-by: Samuel Štancl <samuel@archte.ch>
2024-08-06 02:15:18 +02:00
aa6bfb4079 make Create/DeleteTenantStorage listeners handle existing/missing directories gracefully 2024-07-12 01:53:15 +02:00
590360bf0d broadcasting config bootstrapper: add reverb preset 2024-07-04 20:52:06 +02:00
6b6c883234 phpstan fixes 2024-07-04 20:48:55 +02:00
252e337ef8 broadcast channel prefix bootstrapper: add reverb() method 2024-07-04 20:38:23 +02:00
7572911d87 remove dead code 2024-05-28 02:55:13 +02:00
f0bb28345f categorize todos 2024-05-17 14:23:54 +02:00
Samuel Štancl
b97c203967
Revert changes that caused issues with Laravel Octane [ci skip] 2024-04-24 22:36:51 +02:00
lukinovec
b789f5c561
Change URI prefix order during route cloning (#49)
* Change URI prefix order [ci skip]

* Move route cloning to `$this->app->booted()` [ci skip]

* Delete note about LW v2

* Improve comments/docblock [skip ci]

* Fix comment in test, improve assertion [skip ci]
2024-04-24 22:33:18 +02:00
Samuel Štancl
7317d2638a
Postgres RLS + permission controlled database managers (#33)
This PR adds Postgres RLS (trait manager + table manager approach) and permission controlled managers for PostgreSQL.

---------

Co-authored-by: lukinovec <lukinovec@gmail.com>
Co-authored-by: PHP CS Fixer <phpcsfixer@example.com>
2024-04-24 22:32:49 +02:00
lukinovec
77226cf2f4
Delete pivot records when deleting SyncMaster using morph pivot (#46)
* Add and correct pivot record tests

* Implement and test deleting pivot records when using morph pivot

* Use dataset to test deleting pivot records with both MorphTenantPivot and TenantPivot

* Delete extra test, use createTenantsAndRunMigrations() where appropriate

* FIx PHPStan errors

* Revert DB::table() assertion changes

* minor test improvements

---------

Co-authored-by: Samuel Štancl <samuel@archte.ch>
2024-04-22 12:18:15 +02:00
lukinovec
4e51cdbacb
Refactor early identification (#47)
* Make universal route logic part of tbe early ID trait

* Add requstHasTenant to prevent access MW, add todo@samuel

* Delete PathIdentificationManager, move the used methods appropriately

* Correct and refactor code related to the deleted PathIdentificationManager class

* Add docblock

* Fix code style (php-cs-fixer)

* refactor globalStackMiddleware()

* remove todos [ci skip]

* refactor routeMiddleware()

* revert bool assertions

* revert more changes

---------

Co-authored-by: PHP CS Fixer <phpcsfixer@example.com>
Co-authored-by: Samuel Štancl <samuel@archte.ch>
2024-04-22 11:30:58 +02:00
lukinovec
6e67ddf7a5
Resolve test to-dos (#45)
* Only retrieve domains if the relationship and the domains table exist (DomianTenantResolver)

* Resolve todo, add other todos

* Use constructor promotion in DeleteDomains

* Fix imports + domain deletion test

* Confirm that turning on resolver caching doesn't break the tests

* Fix Tenant model imports

* Fix code style (php-cs-fixer)

* remove runtime schema check

* temp: enable resolver cache

* make 'autoincrement ids are supported' pass

* disable resolver cache

---------

Co-authored-by: PHP CS Fixer <phpcsfixer@example.com>
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
Co-authored-by: Samuel Štancl <samuel@archte.ch>
2024-04-18 00:22:03 +02:00
4bdb986b96 remove old UUID generator, minor config changes 2024-04-16 02:17:20 +02:00
83b1ae1aea change default cookie name, add todos 2024-04-15 03:11:11 +02:00