FieldAccessService.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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 filterReadableFields(User $user, string $module, array $fields): array
  22. {
  23. return $this->accessService->filterReadableFields($user, $module, $fields);
  24. }
  25. public function filterExportColumns(User $user, string $module, array $columns): array
  26. {
  27. return $columns;
  28. }
  29. public function filterImportPayload(User $user, string $module, array $row): array
  30. {
  31. return $row;
  32. }
  33. private function normalizeField(string $field): string
  34. {
  35. return str_ends_with($field, '_txt')
  36. ? substr($field, 0, -4)
  37. : $field;
  38. }
  39. }