Files
Django-Poll-App/accounts/views.py
2026-05-25 19:45:43 -03:00

69 lines
2.8 KiB
Python

from django.contrib.auth import authenticate, login, logout
from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from .forms import UserRegistrationForm
from django.contrib import messages
from django.http import HttpResponse
def login_user(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
redirect_url = request.GET.get('next', 'home')
return redirect(redirect_url)
else:
messages.error(request, "Username Or Password is incorrect!",
extra_tags='alert alert-warning alert-dismissible fade show')
return render(request, 'accounts/login.html')
def logout_user(request):
logout(request)
return redirect('home')
def create_user(request):
if request.method == 'POST':
check1 = False
check2 = False
check3 = False
form = UserRegistrationForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password1 = form.cleaned_data['password1']
password2 = form.cleaned_data['password2']
email = form.cleaned_data['email']
if password1 != password2:
check1 = True
messages.error(request, 'Password did not match!',
extra_tags='alert alert-warning alert-dismissible fade show')
if User.objects.filter(username=username).exists():
check2 = True
messages.error(request, 'Username already exists!',
extra_tags='alert alert-warning alert-dismissible fade show')
if User.objects.filter(email=email).exists():
check3 = True
messages.error(request, 'Email already registered!',
extra_tags='alert alert-warning alert-dismissible fade show')
if check1 or check2 or check3:
messages.error(
request, "Registration Failed!", extra_tags='alert alert-warning alert-dismissible fade show')
return redirect('accounts:register')
else:
user = User.objects.create_user(
username=username, password=password1, email=email)
messages.success(
request, f'Thanks for registering {user.username}.', extra_tags='alert alert-success alert-dismissible fade show')
return redirect('accounts:login')
else:
form = UserRegistrationForm()
return render(request, 'accounts/register.html', {'form': form})