feat: auth
This commit is contained in:
@@ -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('/')
|
||||
Reference in New Issue
Block a user