@php $payload = $getState() ?? []; $changedKeys = is_array($payload['changed_keys'] ?? null) ? $payload['changed_keys'] : []; $baseline = is_array($payload['baseline'] ?? null) ? $payload['baseline'] : []; $current = is_array($payload['current'] ?? null) ? $payload['current'] : []; $baselineNormalized = is_array($baseline['normalized'] ?? null) ? $baseline['normalized'] : []; $currentNormalized = is_array($current['normalized'] ?? null) ? $current['normalized'] : []; $diffKind = is_string($payload['diff_kind'] ?? null) ? (string) $payload['diff_kind'] : 'permission_change'; $stringify = static function (mixed $value): string { if ($value === null) { return '-'; } if (is_bool($value)) { return $value ? 'Yes' : 'No'; } if (is_array($value)) { return implode(', ', array_map(static fn (mixed $item): string => (string) $item, $value)); } return (string) $value; }; $roleSourceLabel = static function (mixed $isBuiltIn): string { return match ($isBuiltIn) { true => __('findings.rbac.built_in'), false => __('findings.rbac.custom'), default => '-', }; }; $sideRows = static function (array $normalized, array $side) use ($roleSourceLabel): array { $rows = []; foreach ($normalized as $key => $value) { if (! is_string($key) || $key === '') { continue; } $rows[$key] = $value; } if (! array_key_exists('Role definition > Role source', $rows)) { $rows['Role definition > Role source'] = $roleSourceLabel($side['is_built_in'] ?? null); } if (! array_key_exists('Role definition > Permission blocks', $rows) && is_numeric($side['role_permission_count'] ?? null)) { $rows['Role definition > Permission blocks'] = (int) $side['role_permission_count']; } ksort($rows); return $rows; }; $baselineRows = $sideRows($baselineNormalized, $baseline); $currentRows = $sideRows($currentNormalized, $current); @endphp
{{ __('findings.rbac.' . $diffKind) }} @if ($changedKeys !== []) {{ __('findings.rbac.changed_fields') }}: {{ count($changedKeys) }} @endif
@if ($changedKeys !== [])
{{ __('findings.rbac.changed_fields') }}
@foreach ($changedKeys as $changedKey) {{ $changedKey }} @endforeach
@endif
@foreach ([ ['heading' => __('findings.rbac.baseline'), 'rows' => $baselineRows], ['heading' => __('findings.rbac.current'), 'rows' => $currentRows], ] as $section)
{{ $section['heading'] }}
@if ($section['rows'] === [])
{{ __('findings.rbac.absent') }}
@else
@foreach ($section['rows'] as $label => $value)
{{ $label }}
{{ $stringify($value) }}
@endforeach
@endif
@endforeach
{{ __('findings.rbac.assignments_excluded') }} {{ __('findings.rbac.restore_unsupported') }}