{{-- resources/views/ui/security/audit/index.blade.php --}} @php use Illuminate\Support\Str; $q = $q ?? request('q', ''); $level = $level ?? request('level', 'alle'); $stationId = $stationId ?? (int) request('station_id', 0); $userId = $userId ?? (int) request('user_id', 0); $from = $from ?? request('from', ''); $to = $to ?? request('to', ''); $ip = $ip ?? request('ip', ''); $ua = $ua ?? request('ua', ''); $ability = $ability ?? request('ability', 'alle'); $permission = $permission ?? request('permission', 'alle'); $levels = [ 'alle' => 'Alle', 'info' => 'Info', 'warn' => 'Warnung', 'kritisch' => 'Kritisch', ]; $abilities = [ 'alle' => 'Alle', 'perm' => 'perm', 'view' => 'view', 'update' => 'update', 'delete' => 'delete', 'create' => 'create', ]; $levelPill = function ($lvl) { return 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', }; }; $permissionOptions = $permissionOptions ?? collect(); $quickPermissions = $quickPermissions ?? collect(); @endphp
{{-- Header --}}
Audit Log
Sicherheitsrelevante Aktionen, nachvollziehbar & exportierbar.
{{-- Filters --}}
@if (auth()->user()->isDistrictUser())
@endif
{{-- Quick chips from DB --}} @if ($quickPermissions->count())
Quick: @foreach ($quickPermissions as $perm) {{ $perm }} @endforeach Filter zurücksetzen
@endif
{{-- Table --}}
@forelse($logs as $r) @php $meta = $r->meta; if (is_string($meta)) { $decoded = json_decode($meta, true); $meta = json_last_error() === JSON_ERROR_NONE ? $decoded : $meta; } $metaPreview = '—'; if (is_array($meta)) { $flat = []; foreach ($meta as $k => $v) { if (is_array($v) || is_object($v)) { continue; } $flat[] = $k . ': ' . $v; } $metaPreview = count($flat) ? implode(' · ', $flat) : 'JSON'; $metaPreview = Str::limit($metaPreview, 140); } elseif (is_string($meta) && $meta !== '') { $metaPreview = Str::limit($meta, 140); } $uaStr = (string) ($r->user_agent ?? ''); @endphp @empty @endforelse
Zeitpunkt Level Action Actor Ortstelle IP UA Subject Meta Details
{{ optional($r->created_at)->format('d.m.Y H:i') }} {{ $r->level ?? '—' }}
{{ $r->action }}
{{ $r->actor?->name ?? '—' }}
{{ $r->actor?->email ?? ($r->actor_user_id ? 'user#' . $r->actor_user_id : '') }}
{{ $r->station?->name ?? '—' }} {{ $r->ip_address ?? '—' }} {{ $uaStr !== '' ? Str::limit($uaStr, 60) : '—' }}
{{ class_basename($r->subject_type ?? '') ?: '—' }}
#{{ $r->subject_id ?? '—' }}
{{ $metaPreview }}
Keine Einträge.
{{ $logs->links() }}