{{-- resources/views/ui/security/audit/show.blade.php --}} @php use Illuminate\Support\Str; $lvl = (string) ($log->level ?? ''); $pill = match ($lvl) { 'kritisch' => 'bg-red-50 text-red-700 border-red-200', 'warn' => 'bg-amber-50 text-amber-700 border-amber-200', 'info' => 'bg-emerald-50 text-emerald-700 border-emerald-200', default => 'bg-neutral-100 text-rk-slate border-rk', }; // Pretty Meta (für
)
$metaString = is_array($meta)
? json_encode($meta, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)
: (is_string($meta)
? $meta
: '');
$ua = (string) ($log->user_agent ?? '');
// Copy payloads
$metaToCopy = $metaString;
$allToCopy = json_encode(
[
'id' => $log->id,
'created_at' => optional($log->created_at)->toDateTimeString(),
'level' => $log->level,
'action' => $log->action,
'actor' => [
'id' => $log->actor_user_id,
'email' => $log->actor?->email,
'name' => $log->actor?->name,
],
'station' => [
'id' => $log->station_id,
'name' => $log->station?->name,
],
'ip_address' => $log->ip_address ?? null,
'user_agent' => $log->user_agent ?? null,
'subject_type' => $log->subject_type ?? null,
'subject_id' => $log->subject_id ?? null,
'meta' => $log->meta,
],
JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT,
);
$rpill = fn($level) => match ((string) $level) {
'kritisch' => 'bg-red-50 text-red-700 border-red-200',
'warn' => 'bg-amber-50 text-amber-700 border-amber-200',
'info' => 'bg-emerald-50 text-emerald-700 border-emerald-200',
default => 'bg-neutral-100 text-rk-slate border-rk',
};
@endphp
{{-- Header --}}
Audit Detail
Eintrag #{{ $log->id }} · {{ optional($log->created_at)->format('d.m.Y H:i:s') }}
{{-- Summary cards --}}
Level
{{ $lvl !== '' ? $lvl : '—' }}
Action: {{ $log->action ?? '—' }}
Actor
{{ $log->actor?->name ?? '—' }}
{{ $log->actor?->email ?? ($log->actor_user_id ? 'user#' . $log->actor_user_id : '—') }}
Ortstelle: {{ $log->station?->name ?? '—' }}
Request
IP
{{ $log->ip_address ?? '—' }}
User-Agent
{{ $ua !== '' ? $ua : '—' }}
{{-- Subject + Meta --}}
Subject
Zielobjekt der Aktion.
Type
{{ $log->subject_type ? class_basename($log->subject_type) : '—' }}
ID
{{ $log->subject_id ?? '—' }}
Raw
{{ $log->subject_type ?? '—' }}
Meta
JSON / Zusatzinformationen.
{{ $metaString !== '' ? $metaString : '—' }}
{{ is_string($log->meta) ? $log->meta : (is_array($log->meta) ? json_encode($log->meta, JSON_UNESCAPED_UNICODE) : '—') }}
{{-- Related --}}
Ähnliche Einträge
Gleicher User / IP / Action (max. 12).
Zeitpunkt
Level
Action
Actor
IP
Aktion
@forelse($related as $r)
{{ optional($r->created_at)->format('d.m.Y H:i') }}
{{ $r->level ?? '—' }}
{{ $r->action }}
{{ $r->actor?->email ?? ($r->actor_user_id ? 'user#' . $r->actor_user_id : '—') }}
{{ $r->ip_address ?? '—' }}
Öffnen
@empty
Keine ähnlichen Einträge gefunden.
@endforelse