Update web/core/views.py
This commit is contained in:
parent
8be614e819
commit
86af77d434
@ -1000,3 +1000,21 @@ def dismiss_announcement(request, pk):
|
|||||||
ann = get_object_or_404(Announcement, pk=pk)
|
ann = get_object_or_404(Announcement, pk=pk)
|
||||||
AnnouncementDismissal.objects.get_or_create(user=request.user, announcement=ann)
|
AnnouncementDismissal.objects.get_or_create(user=request.user, announcement=ann)
|
||||||
return JsonResponse({"ok": True})
|
return JsonResponse({"ok": True})
|
||||||
|
|
||||||
|
+# ----- Login attempts (superuser only) -----
|
||||||
|
from django.contrib.auth.decorators import user_passes_test, login_required
|
||||||
|
from django.utils import timezone
|
||||||
|
from datetime import timedelta
|
||||||
|
from .models_login import LoginAttempt
|
||||||
|
|
||||||
|
is_superuser = user_passes_test(lambda u: u.is_superuser)
|
||||||
|
|
||||||
|
@is_superuser
|
||||||
|
@login_required
|
||||||
|
def login_attempts(request):
|
||||||
|
"""
|
||||||
|
Show last 7 days of login attempts (success + failure) with username, IP, and timestamp.
|
||||||
|
"""
|
||||||
|
cutoff = timezone.now() - timedelta(days=7)
|
||||||
|
attempts = LoginAttempt.objects.filter(timestamp__gte=cutoff).order_by("-timestamp")
|
||||||
|
return render(request, "tools/login_attempts.html", {"attempts": attempts})
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user