@extends('layouts.superadmin') @section('title','رادار سقراط — محاولات الدخول الفاشلة') @section('content') @php $riskBadge = function($level){ return match($level){ 'high' => 'bg-rose-500/10 text-rose-200 border-rose-400/25', 'medium' => 'bg-amber-500/10 text-amber-200 border-amber-400/25', default => 'bg-emerald-500/10 text-emerald-200 border-emerald-400/25', }; }; $statusBadge = function($status){ return match($status){ 'blocked' => 'bg-rose-500/10 text-rose-200 border-rose-400/25', 'whitelisted' => 'bg-cyan-500/10 text-cyan-200 border-cyan-400/25', 'reviewed' => 'bg-amber-500/10 text-amber-200 border-amber-400/25', default => 'bg-white/5 text-white/80 border-white/15', }; }; $viewTableUrl = request()->fullUrlWithQuery(['view'=>'table']); $viewCardsUrl = request()->fullUrlWithQuery(['view'=>'cards']); $viewGridUrl = request()->fullUrlWithQuery(['view'=>'grid']); @endphp
هنا ترى محاولات الدخول الفاشلة ضمن الفترة المحددة — لكن مجمّعة يوميًا (كل سطر = يوم + هدف + IP) مع IP الحقيقي (Cloudflare)، معلومات الجهاز، اسم المتصفح الحقيقي، وتصنيف خطر ملحمي يساعدك تمسك “الذيب” من أول أثر.
لمحة سريعة: لماذا يفشلون؟
الأكثر ضغطًا خلال الفترة.
كل سطر = يوم + هدف + IP… وكل يوم قصة.
| اليوم | الهدف | IP | الجهاز | السبب | محاولات | Risk | الإدارة | تفاصيل |
|---|---|---|---|---|---|---|---|---|
|
{{ $rowDay ? \Carbon\Carbon::parse($rowDay)->format('Y-m-d') : (\Carbon\Carbon::parse($firstAt)->format('Y-m-d')) }}
@if($firstAt && $lastAt)
من {{ \Carbon\Carbon::parse($firstAt)->format('H:i') }}
إلى {{ \Carbon\Carbon::parse($lastAt)->format('H:i') }}
@else
—
@endif
|
{{-- TARGET --}}
{{ data_get($r,'user_name') ?: data_get($r,'login_value') }}
{{ data_get($r,'user_email') ?: (data_get($r,'login_field').' : '.data_get($r,'login_value')) }}
@if($attemptsInDay > 1)
محاولات هذا الهدف اليوم: {{ $attemptsInDay }}
@endif
|
{{-- IP --}}
{{ $ipDisplay ?: '—' }}
{{ data_get($r,'ip_country') ?: '—' }}
|
{{-- DEVICE --}}
{{ data_get($r,'device_type') ?: '—' }}
{{ data_get($r,'browser') ?: '—' }} • {{ data_get($r,'os') ?: '—' }}
|
{{-- REASON --}}
{{ $reasons[data_get($r,'reason')] ?? data_get($r,'reason') }} | {{-- ATTEMPTS --}}
{{ $attemptsInDay }}
IP اليوم: {{ (int) data_get($r,'ip_attempts',0) }}
• Targets: {{ (int) data_get($r,'ip_targets',0) }}
• Users: {{ (int) data_get($r,'ip_users',0) }}
|
{{-- RISK --}}
{{ strtoupper((string) data_get($r,'risk_level','low')) }} | {{-- ADMIN STATUS --}}
{{ $statuses[data_get($r,'admin_status')] ?? data_get($r,'admin_status') }}
@if(data_get($r,'admin_note'))
{{ data_get($r,'admin_note') }}
@endif
|
{{-- DETAILS --}}
تفاصيل
UA:
{{ data_get($r,'user_agent_short') ?: '—' }}
IP Real: {{ data_get($r,'ip_real') ?: '—' }}
Pseudo v4: {{ data_get($r,'ip_pseudo_v4') ?: '—' }}
محاولات هذا الهدف اليوم: {{ $attemptsInDay }}
Remaining: {{ data_get($r,'remaining_attempts') ?? '—' }}
الفترة:
@if($firstAt && $lastAt)
{{ \Carbon\Carbon::parse($firstAt)->format('Y-m-d H:i:s') }}
→ {{ \Carbon\Carbon::parse($lastAt)->format('Y-m-d H:i:s') }}
@else
—
@endif
ملاحظة: هذا الصف “مجمّع يوميًا”، ولم يتم تمرير last_id من الكنترولر لتفعيل حفظ واجب المدير.
@endif
|
| لا يوجد محاولات ضمن هذه الفترة. | ||||||||
نفس البيانات… بس بحضور بصري أقوى.