51 lines
2.1 KiB
Python
51 lines
2.1 KiB
Python
from django.shortcuts import redirect
|
|
from django.contrib.auth import authenticate, login
|
|
from django.contrib.auth.models import User
|
|
from django.contrib import messages
|
|
from auth.views import AuthView
|
|
|
|
|
|
class LoginView(AuthView):
|
|
def get(self, request):
|
|
if request.user.is_authenticated:
|
|
# If the user is already logged in, redirect them to the home page or another appropriate page.
|
|
return redirect("index") # Replace 'index' with the actual URL name for the home page
|
|
|
|
# Render the login page for users who are not logged in.
|
|
return super().get(request)
|
|
|
|
def post(self, request):
|
|
if request.method == "POST":
|
|
username = request.POST.get("email-username")
|
|
password = request.POST.get("password")
|
|
|
|
if not (username and password):
|
|
messages.error(request, "Please enter your username and password.")
|
|
return redirect("login")
|
|
|
|
if "@" in username:
|
|
user_email = User.objects.filter(email=username).first()
|
|
if user_email is None:
|
|
messages.error(request, "Please enter a valid email.")
|
|
return redirect("login")
|
|
username = user_email.username
|
|
|
|
user_email = User.objects.filter(username=username).first()
|
|
if user_email is None:
|
|
messages.error(request, "Please enter a valid username.")
|
|
return redirect("login")
|
|
|
|
authenticated_user = authenticate(request, username=username, password=password)
|
|
if authenticated_user is not None:
|
|
# Login the user if authentication is successful
|
|
login(request, authenticated_user)
|
|
|
|
# Redirect to the page the user was trying to access before logging in
|
|
if "next" in request.POST:
|
|
return redirect(request.POST["next"])
|
|
else: # Redirect to the home page or another appropriate page
|
|
return redirect("index")
|
|
else:
|
|
messages.error(request, "Please enter a valid username.")
|
|
return redirect("login")
|