chore: commit current workspace changes
This commit is contained in:
@@ -6,6 +6,7 @@ namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Enums\UserRole;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\AuthAuditLog;
|
||||
use App\Models\Artwork;
|
||||
use App\Models\Story;
|
||||
use App\Models\User;
|
||||
@@ -157,4 +158,83 @@ final class AdminController extends Controller
|
||||
'settings' => [],
|
||||
]);
|
||||
}
|
||||
|
||||
public function authAudit(Request $request): Response
|
||||
{
|
||||
abort_unless($request->user()?->isAdmin(), 403, 'Only admins can access this area.');
|
||||
|
||||
$search = $request->string('search')->trim()->toString();
|
||||
$eventType = $request->string('event')->trim()->toString();
|
||||
$status = $request->string('status')->trim()->toString();
|
||||
|
||||
$query = AuthAuditLog::query()
|
||||
->with('user:id,name,username,email,role')
|
||||
->latest('created_at')
|
||||
->latest('id');
|
||||
|
||||
if ($search !== '') {
|
||||
$query->where(function ($builder) use ($search): void {
|
||||
$builder
|
||||
->where('identifier', 'like', "%{$search}%")
|
||||
->orWhere('ip', 'like', "%{$search}%")
|
||||
->orWhere('reason', 'like', "%{$search}%")
|
||||
->orWhereHas('user', function ($userQuery) use ($search): void {
|
||||
$userQuery
|
||||
->where('name', 'like', "%{$search}%")
|
||||
->orWhere('username', 'like', "%{$search}%")
|
||||
->orWhere('email', 'like', "%{$search}%");
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if ($eventType !== '' && $eventType !== 'all') {
|
||||
$query->where('event_type', $eventType);
|
||||
}
|
||||
|
||||
if ($status !== '' && $status !== 'all') {
|
||||
$query->where('status', $status);
|
||||
}
|
||||
|
||||
$logs = $query->paginate(50)->withQueryString()->through(function (AuthAuditLog $log): array {
|
||||
return [
|
||||
'id' => $log->id,
|
||||
'event_type' => $log->event_type,
|
||||
'identifier' => $log->identifier,
|
||||
'status' => $log->status,
|
||||
'reason' => $log->reason,
|
||||
'ip' => $log->ip,
|
||||
'user_agent' => $log->user_agent,
|
||||
'metadata' => $log->metadata ?? [],
|
||||
'created_at' => $log->created_at,
|
||||
'user' => $log->user ? [
|
||||
'id' => $log->user->id,
|
||||
'name' => $log->user->name,
|
||||
'username' => $log->user->username,
|
||||
'email' => $log->user->email,
|
||||
'role' => $log->user->role,
|
||||
] : null,
|
||||
];
|
||||
});
|
||||
|
||||
return Inertia::render('Admin/AuthAudit', [
|
||||
'logs' => $logs,
|
||||
'filters' => [
|
||||
'search' => $search,
|
||||
'event' => $eventType,
|
||||
'status' => $status,
|
||||
],
|
||||
'eventOptions' => [
|
||||
['value' => 'all', 'label' => 'All events'],
|
||||
['value' => 'login', 'label' => 'Login'],
|
||||
['value' => 'register', 'label' => 'Register'],
|
||||
['value' => 'forgot_password', 'label' => 'Forgot password'],
|
||||
['value' => 'reset_password', 'label' => 'Reset password'],
|
||||
],
|
||||
'statusOptions' => [
|
||||
['value' => 'all', 'label' => 'All statuses'],
|
||||
['value' => 'success', 'label' => 'Success'],
|
||||
['value' => 'failed', 'label' => 'Failed'],
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user