feat: auth

This commit is contained in:
root
2025-10-13 22:35:39 +03:00
parent a378414ea3
commit b3988797c5
7 changed files with 158 additions and 3 deletions

View File

@@ -2,6 +2,8 @@ from .models import Article
from django.shortcuts import render
from django.http import Http404, HttpResponse
from django.shortcuts import redirect
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login, logout
def archive(request):
return render(request, 'archive.html', {"posts": Article.objects.all()})
@@ -32,3 +34,51 @@ def create_post(request):
return render(request, 'new_article.html')
else:
return HttpResponse('Unauthorized', status=401)
def registration(request):
if request.method == "POST":
form = { 'username': request.POST["username"], 'email': request.POST["email"], 'password': request.POST["password"] }
username = request.POST.get("username", "").strip()
email = request.POST.get("email", "").strip()
password = request.POST.get("password", "").strip()
if not username or not email or not password:
return render(request, 'registration.html', {'error': 'Все поля обязательны для заполнения.', 'form': form})
if len(password) < 6:
return render(request, 'registration.html', {'error': 'Пароль должен содержать не менее 6 символов.', 'form': form})
if User.objects.filter(username=username).exists():
return render(request, 'registration.html', {'error': 'Пользователь с таким именем уже существует.', 'form': form})
if User.objects.filter(email=email).exists():
return render(request, 'registration.html', {'error': 'Этот email уже используется.', 'form': form})
if "@" not in email or "." not in email:
return render(request, 'registration.html', {'error': 'Некорректный формат email.', 'form': form})
user = User.objects.create_user(username=username, email=email, password=password)
user.save()
return redirect('/login')
return render(request, 'registration.html')
def login_page(request):
if request.method == "POST":
form = {'username': request.POST.get("username"), 'password': request.POST.get("password")}
username = request.POST.get("username", "").strip()
password = request.POST.get("password", "").strip()
if not username or not password:
return render(request, 'login.html', {'error': 'Введите имя пользователя и пароль.', 'form': form})
user = authenticate(request, username=username, password=password)
if user is None:
return render(request, 'login.html', {'error': 'Неверное имя пользователя или пароль.', 'form': form})
login(request, user)
return redirect('/')
return render(request, 'login.html')
def user_logout(request):
logout(request)
return redirect('/')