From 70af7f295e2bb42bd9b7a3acdf45df64b4871ecc Mon Sep 17 00:00:00 2001 From: Javier Gea Date: Fri, 7 Nov 2025 21:43:08 +0100 Subject: [PATCH] =?UTF-8?q?Incorporaci=C3=B3n=20de=20la=20funcionalidad=20?= =?UTF-8?q?del=20Logout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- essenza/essenza/urls.py | 11 +- essenza/product/views.py | 5 +- essenza/templates/product/escaparate.html | 122 ++++++++++++++++++++++ essenza/templates/user/login.html | 4 +- essenza/user/urls.py | 2 + essenza/user/views.py | 31 ++++-- 6 files changed, 159 insertions(+), 16 deletions(-) create mode 100644 essenza/templates/product/escaparate.html diff --git a/essenza/essenza/urls.py b/essenza/essenza/urls.py index d14c13c4..49f832d8 100644 --- a/essenza/essenza/urls.py +++ b/essenza/essenza/urls.py @@ -1,8 +1,8 @@ from django.contrib import admin from django.urls import path, include from django.http import HttpResponse -from info import views - +from info.views import info_view +from product.views import EscaparateView def home(request): html = """ @@ -82,10 +82,9 @@ def home(request): urlpatterns = [ path('', home, name='home'), - path('info/', views.info_view, name='info-home'), + path('info/', info_view, name='info-home'), path("user/", include("user.urls")), - path('user/login/', include('user.urls')), - path("accounts/", include("django.contrib.auth.urls")), - path('admin/', admin.site.urls) + path('admin/', admin.site.urls), + path('escaparate/', EscaparateView.as_view(), name='escaparate') ] diff --git a/essenza/product/views.py b/essenza/product/views.py index 91ea44a2..a99cebae 100644 --- a/essenza/product/views.py +++ b/essenza/product/views.py @@ -1,3 +1,6 @@ from django.shortcuts import render +from django.views import View -# Create your views here. +class EscaparateView(View): + def get(self, request): + return render(request, 'product/escaparate.html') diff --git a/essenza/templates/product/escaparate.html b/essenza/templates/product/escaparate.html new file mode 100644 index 00000000..54a3052a --- /dev/null +++ b/essenza/templates/product/escaparate.html @@ -0,0 +1,122 @@ +{% load static %} + + + + + Escaparate · Essenza + + + + + + +
+
ESSENZA
+ + + +
+ {% csrf_token %} + +
+
+ + diff --git a/essenza/templates/user/login.html b/essenza/templates/user/login.html index f1f47baf..5afa3d00 100644 --- a/essenza/templates/user/login.html +++ b/essenza/templates/user/login.html @@ -86,9 +86,7 @@

ESSENZA

-

- ¿Has olvidado la contraseña? -

+ diff --git a/essenza/user/urls.py b/essenza/user/urls.py index 04aeb230..685a14dc 100644 --- a/essenza/user/urls.py +++ b/essenza/user/urls.py @@ -5,5 +5,7 @@ urlpatterns = [ path('login/', views.LoginView.as_view(), name='login'), + path('logout/', views.LogoutView.as_view(), name='logout'), + ] diff --git a/essenza/user/views.py b/essenza/user/views.py index ed8a9143..8cf1432a 100644 --- a/essenza/user/views.py +++ b/essenza/user/views.py @@ -1,19 +1,19 @@ from django.shortcuts import render, redirect from django.views import View -from django.contrib.auth import authenticate, login - -from essenza.urls import home +from django.contrib.auth import authenticate, login, logout from .forms import LoginForm class LoginView(View): form_class = LoginForm template_name = 'user/login.html' - def get(self, request, *args, **kwargs): + # Si el usuario ya está autenticado, lo mandamos a escaparate + logout(request) if request.user.is_authenticated: - return redirect('home') + return redirect('escaparate') + # Si no está autenticado, renderiza el formulario de login return render(request, self.template_name, {'form': self.form_class()}) def post(self, request, *args, **kwargs): @@ -22,13 +22,32 @@ def post(self, request, *args, **kwargs): email = form.cleaned_data["email"] password = form.cleaned_data["password"] + # Autenticamos al usuario user = authenticate(request, username=email, password=password) if user is not None: login(request, user) - return redirect('home') + # Redirige al escaparate después del login + return redirect('escaparate') else: + # Si falla el login, muestra error en el formulario form.add_error(None, "Usuario o contraseña incorrectos") return render(request, self.template_name, {'form': form}) + +class LogoutView(View): + """Cierra la sesión y borra la cookie de sesión.""" + + def get(self, request): + logout(request) + response = redirect('home') + # 🔥 borra cookie de sesión en el navegador + response.delete_cookie('sessionid') + return response + + def post(self, request): + logout(request) + response = redirect('home') + response.delete_cookie('sessionid') + return response \ No newline at end of file