diff --git a/backend/core/views.py b/backend/core/views.py index 229b4a5..d673079 100644 --- a/backend/core/views.py +++ b/backend/core/views.py @@ -16,7 +16,7 @@ import json def dashboard_callback(request, context): - print(context) + pending_count = OrderModel.objects.filter(status='ADMIN_PENDING').count() open_tickets_count = Ticket.objects.filter(status__in=['open', 'in_progress']).count() context.update(random_data()) @@ -213,35 +213,74 @@ from django.contrib import messages from django.shortcuts import redirect from django.views.generic import RedirectView, TemplateView from unfold.views import UnfoldModelAdminViewMixin -class FakeAdminLoginView(LoginView): - template_name = "admin/fake_login.html" - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - print(self.get_form()) - context.update({ - **admin_site.each_context(self.request), - "title": "Log in", +from django.views import View +from django.shortcuts import render, redirect, get_object_or_404 + +# class FakeAdminLoginView(View): +# template_name = "admin/fake_login.html" +# def get_context_data(self, **kwargs): +# context = super().get_context_data(**kwargs) + +# context.update({ +# **admin_site.each_context(self.request), +# "title": "Log in", +# "site_header": admin_site.site_header, +# "form": self.get_form(), +# }) +# return context + +# def post(self): +# # Log the honeypot attempt +# username = form.cleaned_data.get("username") +# ip = self.request.META.get("REMOTE_ADDR") +# print(f"Honeypot triggered! IP: {ip}, Username: {username}") + +# # Add error message and redirect back to fake login +# messages.error(self.request, "Please enter a correct شماره تماس and password. Note that both fields may be case-sensitive.") +# return redirect('/admin') + + + +from django.views import View +from django.contrib import messages +from django.shortcuts import render, redirect +from django.contrib.admin.sites import site as admin_site + +class FakeAdminLoginView(View): + def get_unfold_context(self, request): + """Replicates Unfold's template context""" + return { + "site_title": admin_site.site_title, "site_header": admin_site.site_header, - "form": self.get_form(), - }) + "unfold": { + "title": admin_site.site_title, + "navigation": [], + "theme": "light", # Match your Unfold config + "color_scheme": "light", # Match your Unfold config + } + } + + def get_context(self, request): + """Combine Unfold context with default admin context""" + context = admin_site.each_context(request) + context.update(self.get_unfold_context(request)) return context - def form_valid(self, form): - # Log the honeypot attempt - username = form.cleaned_data.get("username") - ip = self.request.META.get("REMOTE_ADDR") - print(f"Honeypot triggered! IP: {ip}, Username: {username}") + def get(self, request): + # Log empty attempt (optional) + ip = request.META.get("REMOTE_ADDR") + print(f"Honeypot page accessed from IP: {ip}") - # Add error message and redirect back to fake login - messages.error(self.request, "Please enter a correct شماره تماس and password. Note that both fields may be case-sensitive.") - return redirect('/admin') + return render(request, 'admin/fake_login.html', self.get_context(request)) - def form_invalid(self, form): - # Log the honeypot attempt - username = form.cleaned_data.get("username") - ip = self.request.META.get("REMOTE_ADDR") - print(f"Honeypot triggered! IP: {ip}, Username: {username}") + def post(self, request): + username = request.POST.get("username") + password = request.POST.get("password") # Never actually used + ip = request.META.get("REMOTE_ADDR") - # Add error message and redirect back to fake login - messages.error(self.request, "Please enter a correct شماره تماس and password. Note that both fields may be case-sensitive.") - return redirect('/admin') \ No newline at end of file + print(f"Honeypot triggered! IP: {ip}, Username: {username}") + messages.error(request, "Please correct the error below.") + messages.error(request, "Please enter the correct شماره تماس and password for a staff account. Note that both fields may be case-sensitive.") + + # Redirect back to fake login page with context + return render(request, 'admin/fake_login.html', self.get_context(request)) \ No newline at end of file diff --git a/backend/templates/admin/fake_login.html b/backend/templates/admin/fake_login.html index cb1fb89..0c28127 100644 --- a/backend/templates/admin/fake_login.html +++ b/backend/templates/admin/fake_login.html @@ -1,60 +1,144 @@ -{% extends "admin/login.html" %} +{% extends 'unfold/layouts/skeleton.html' %} + {% load i18n static %} -{% block content %} -