@extends('layouts.app') @section('title', 'Security Events') @section('breadcrumb') Dashboard Reports Security @endsection @section('content') {{-- Page header --}} {{-- Tab nav --}} @include('partials._report-tabs') {{-- ============ STAT CARDS ============ --}}
MONITORING
Total events
{{ number_format($stats['total']) }} flagged
ACTIVE
Tab switches
{{ number_format($stats['tab_switches']) }} detected
tracked
Fullscreen exits
{{ number_format($stats['fullscreen_exits']) }} events
{{ $stats['force_submits'] }}
Force submits
{{ number_format($stats['force_submits']) }} forced
@include('partials._report-filter', ['exportType' => 'security']) @include('partials._report-cap-banner') {{-- ============ EVENTS TABLE ============ --}}
All security events
{{ $logs->count() }} record(s) total
@if($logs->isEmpty())
No security events recorded
Anti-cheating violations captured during exams will appear here.
@else
@foreach($logs as $log) @php $ev = strtolower($log->event_type ?? ''); $pillTone = 's-neutral'; if (str_contains($ev, 'tab')) $pillTone = 's-warning'; elseif (str_contains($ev, 'full')) $pillTone = 's-info'; elseif (str_contains($ev, 'force')) $pillTone = 's-danger'; elseif (str_contains($ev, 'blur')) $pillTone = 's-warning'; @endphp @endforeach
# Candidate Post Event Message Warn IP Time  
{{ $loop->iteration }}
{{ $log->user?->name ?? '—' }}
{{ $log->user?->email }}
{{ $log->application?->post?->code ?? '—' }} {{ $log->event_type_label ?? $log->event_type }} {{ $log->event_message ?? '—' }} @if($log->event_count_snapshot !== null) {{ $log->event_count_snapshot }} @else @endif {{ $log->ip_address ?? '—' }} {{ $log->created_at->format('d M Y') }}
{{ $log->created_at->format('h:i A') }}
@if($log->examAttempt) @endif
@endif
@endsection @push('scripts') @endpush