This commit introduces the data retention and data export Admin Services, accessed by the Boboko admin UI
42 lines
1.8 KiB
PHP
42 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace Modules\Core\Privacy\Filament\Extensions;
|
|
|
|
use Lunar\Admin\Filament\Resources\CustomerResource\RelationManagers\UserRelationManager as BaseUserRelationManager;
|
|
use Lunar\Admin\Support\Extending\BaseExtension;
|
|
use Modules\Core\Privacy\RelationManagers\ErasureRequestsRelationManager;
|
|
use Modules\Core\Privacy\RelationManagers\ExportRequestsRelationManager;
|
|
use Modules\Core\Privacy\RelationManagers\UserRelationManager;
|
|
|
|
/**
|
|
* Adds the erasureRequests/exportRequests relation managers (see CorePlugin's
|
|
* Customer::erasureRequests()/exportRequests() macros) to the Customer resource's
|
|
* relation tabs — separate from CustomerErasureActionsExtension (headerActions)
|
|
* so each extension stays single-purpose. Unlike headerActions(), getRelations()
|
|
* genuinely is resource-keyed (called statically from the Resource class, not a
|
|
* page instance), so this is registered under CustomerResource::class itself in
|
|
* CorePlugin, not a page class.
|
|
*
|
|
* Also swaps Lunar's base UserRelationManager for Modules\Core\Privacy\
|
|
* RelationManagers\UserRelationManager, which adds a "Privacy Requests" row
|
|
* action per user — see that class's docblock for why this can't be a nested
|
|
* relation manager instead. Compares against Lunar's own base class, not any
|
|
* intermediate override, per docs/lunar.md "Overriding Lunar Relation Managers".
|
|
*/
|
|
class CustomerErasureRelationsExtension extends BaseExtension
|
|
{
|
|
public function getRelations(array $relations): array
|
|
{
|
|
$relations = array_map(
|
|
fn ($relation) => $relation === BaseUserRelationManager::class ? UserRelationManager::class : $relation,
|
|
$relations
|
|
);
|
|
|
|
return [
|
|
...$relations,
|
|
ErasureRequestsRelationManager::class,
|
|
ExportRequestsRelationManager::class,
|
|
];
|
|
}
|
|
}
|