Feat: Rearranging Providers
This commit is contained in:
+16
-5
@@ -61,6 +61,17 @@ implements that method as a no-op — `ErasureOutcome::Skipped` with a reason fo
|
||||
payload for export (e.g. `AddressDataProvider::eraseForUser()`, since addresses belong to a
|
||||
Customer, not an individual).
|
||||
|
||||
A provider implementation lives inside the module that owns the data it erases/exports, under
|
||||
that module's own `Privacy/` subdirectory (e.g. `Modules\Core\Order\Privacy\OrderDataProvider`,
|
||||
`Modules\Core\Customer\Privacy\CustomerDataProvider`) — never inside `Modules\Core\Privacy`
|
||||
itself, which only owns the shared contract (`Contracts\PersonalDataProvider`), the request
|
||||
lifecycle (`Services\PrivacyManager`/`PrivacyService`), and the DTOs/enums every provider
|
||||
returns. This mirrors how this codebase already handles other cross-cutting-but-domain-specific
|
||||
code (e.g. a resource's own `Filament/Extensions/` subdirectory) — and matters concretely if a
|
||||
module is ever extracted into its own composer package (see `docs/modules.md`): the provider
|
||||
that knows how to erase that module's data must travel with it, not get stranded in `Privacy`
|
||||
depending on a package that no longer ships in this repo.
|
||||
|
||||
A module registers by adding its provider class to `config('core.privacy.providers')` — the
|
||||
same shape as Lunar's own `config('lunar.search.indexers')` model→indexer map:
|
||||
|
||||
@@ -68,11 +79,11 @@ same shape as Lunar's own `config('lunar.search.indexers')` model→indexer map:
|
||||
// config/core.php
|
||||
'privacy' => [
|
||||
'providers' => [
|
||||
\Modules\Core\Privacy\Providers\CustomerDataProvider::class,
|
||||
\Modules\Core\Privacy\Providers\AddressDataProvider::class,
|
||||
\Modules\Core\Privacy\Providers\OrderDataProvider::class,
|
||||
\Modules\Core\Privacy\Providers\CartDataProvider::class,
|
||||
\Modules\Core\Privacy\Providers\ReviewDataProvider::class,
|
||||
\Modules\Core\Customer\Privacy\CustomerDataProvider::class,
|
||||
\Modules\Core\Customer\Privacy\AddressDataProvider::class,
|
||||
\Modules\Core\Order\Privacy\OrderDataProvider::class,
|
||||
\Modules\Core\Cart\Privacy\CartDataProvider::class,
|
||||
\Modules\Core\Review\Privacy\ReviewDataProvider::class,
|
||||
// A future module just adds its own provider here.
|
||||
],
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user