From 4e825711d38c44c45f76d1b5cd5d9882e5187e51 Mon Sep 17 00:00:00 2001 From: Parsa Nazer Date: Tue, 18 Feb 2025 22:23:45 +0330 Subject: [PATCH] hoeny pad admin --- backend/core/views.py | 93 ++++++++---- backend/templates/admin/fake_login.html | 190 +++++++++++++++++------- 2 files changed, 203 insertions(+), 80 deletions(-) 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 %} -
-
-
- {% include "unfold/helpers/logo.html" %} +{% block extrastyle %} + {{ block.super }} + {{ form.media }} +{% endblock %} + +{% block bodyclass %}{{ block.super }}bg-base-50 login dark:bg-base-900{% endblock %} + +{% block usertools %}{% endblock %} + +{% block nav-global %}{% endblock %} + +{% block nav-sidebar %}{% endblock %} + +{% block content_title %}{% endblock %} + +{% block breadcrumbs %}{% endblock %} + +{% block title %} + {{ title }} | {{ site_title }} +{% endblock %} + +{% block base %} +
+
+
+

+ {% trans 'Welcome back to' %} + {{ site_title|default:_('Django site admin') }} +

+ + {% include "unfold/helpers/messages.html" %} + + {% if form.errors or form.non_field_errors %} +
+ {% include "unfold/helpers/messages/errornote.html" with errors=form.errors %} + + {% include "unfold/helpers/messages/error.html" with errors=form.non_field_errors %} + + {% if user.is_authenticated %} + {% blocktranslate trimmed asvar message %} + You are authenticated as {{ username }}, but are not authorized to + access this page. Would you like to login to a different account? + {% endblocktranslate %} + + {% include "unfold/helpers/messages/error.html" with error=message %} + {% endif %} +
+ {% endif %} + + {% block login_before %}{% endblock %} + +
+ {% csrf_token %} + +
+ + + + + + + + + + +
+ + + + +
+ + + + + + + + + + +
+ + + + + + + +
+ +
+ + {% if password_reset_url %} + + {% endif %} +
+ + {% block login_after %}{% endblock %}
- {% if messages %} -
- {% for message in messages %} - {{ message }} - {% endfor %} -
- {% endif %} +
+ {% if site_url %} + + arrow_back {% trans 'Return to site' %} + + {% endif %} -
- {% csrf_token %} - asdfadsf - -
- - - required - > -
- - -
- - -
- - - -
+ {% if not theme %} + {% include "unfold/helpers/theme_switch.html" %} + {% endif %} +
+ + {% if image %} + + {% endif %}
-{% endblock %} \ No newline at end of file +{% endblock %}