@extends('layouts.admin') @section('title', 'Audit log') @section('content')

Every sensitive admin action, newest first. Entries cannot be edited or deleted — the database refuses it.

@forelse ($logs as $l) @empty @endforelse
When (IST)WhoEventRecordChangeIP
{{ ist($l->created_at, 'd M Y, h:i:s A') }} @if ($l->actor){{ $l->actor->displayName() }}@else{{ $l->actor_type }}@endif {{ $l->event }} {{ humanize($l->auditable_type) }} {{ $l->auditable_id ? '#'.$l->auditable_id : '' }} @foreach (($l->new_values ?? []) as $k => $new) @php $old = $l->old_values[$k] ?? null; $fmt = fn ($x) => is_array($x) ? json_encode($x, JSON_UNESCAPED_UNICODE) : (is_bool($x) ? ($x ? 'true' : 'false') : (string) $x); @endphp
{{ $k }}: @if ($old !== null){{ \Illuminate\Support\Str::limit($fmt($old), 40) }} → @endif{{ \Illuminate\Support\Str::limit($fmt($new), 60) }}
@endforeach @if (empty($l->new_values) && ! empty($l->old_values))removed: {{ \Illuminate\Support\Str::limit(json_encode($l->old_values, JSON_UNESCAPED_UNICODE), 80) }}@endif
{{ $l->ip_address ? @inet_ntop($l->ip_address) : '' }}
Nothing logged yet.
{{ $logs->links() }}
@endsection