FieldAccessService.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace App\Services\Access;
  3. use App\Models\User;
  4. class FieldAccessService
  5. {
  6. public function __construct(private readonly AccessService $accessService)
  7. {
  8. }
  9. public function visibleHeaders(User $user, string $module, array $headers): array
  10. {
  11. return array_filter(
  12. $headers,
  13. fn (string $field): bool => $this->accessService->canViewField($user, $module, $this->normalizeField($field)),
  14. ARRAY_FILTER_USE_KEY
  15. );
  16. }
  17. public function filterValidatedPayload(User $user, string $module, array $validated): array
  18. {
  19. return $this->accessService->filterWritableData($user, $module, $validated);
  20. }
  21. public function filterExportColumns(User $user, string $module, array $columns): array
  22. {
  23. return $columns;
  24. }
  25. public function filterImportPayload(User $user, string $module, array $row): array
  26. {
  27. return $row;
  28. }
  29. private function normalizeField(string $field): string
  30. {
  31. return str_ends_with($field, '_txt')
  32. ? substr($field, 0, -4)
  33. : $field;
  34. }
  35. }