добавил просмотр пользователей, обновил алгоритм работы авторизации
This commit is contained in:
@@ -22,5 +22,6 @@ urlpatterns = [
|
||||
path('register', views.default_view, name='register'),
|
||||
path('login', views.view_login, name='login'),
|
||||
path('logout', views.view_logout, name='logout'),
|
||||
path('list', views.view_list, name='accounts-list'),
|
||||
path('change-password', views.default_view, name='change-password'),
|
||||
]
|
||||
|
@@ -4,6 +4,8 @@ from django.http import HttpResponse, HttpResponseRedirect, HttpResponseBadReque
|
||||
from django.shortcuts import render
|
||||
# from django.db.models import Manager
|
||||
from django.contrib.auth import authenticate, login, logout
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from .models import User
|
||||
|
||||
|
||||
def default_view(request):
|
||||
@@ -17,6 +19,15 @@ def view_logout(request):
|
||||
|
||||
|
||||
def view_login(request):
|
||||
if request.user.is_authenticated:
|
||||
# уже авторизован, перенаправляем либо в корень, либо по пути, указанному в next
|
||||
redirect_uri = "/"
|
||||
if "next" in request.GET:
|
||||
if request.GET['next'] != request.path:
|
||||
# чтобы не возникло циклического редиректа
|
||||
redirect_uri = request.GET['next']
|
||||
return HttpResponseRedirect(redirect_uri)
|
||||
|
||||
render_context = {
|
||||
'message': None
|
||||
}
|
||||
@@ -26,7 +37,12 @@ def view_login(request):
|
||||
user = authenticate(request, username=username, password=password)
|
||||
if user is not None:
|
||||
login(request, user)
|
||||
return HttpResponseRedirect('/')
|
||||
redirect_uri = "/"
|
||||
if "next" in request.GET:
|
||||
if request.GET['next'] != request.path:
|
||||
# чтобы не возникло циклического редиректа
|
||||
redirect_uri = request.GET['next']
|
||||
return HttpResponseRedirect(redirect_uri)
|
||||
else:
|
||||
render_context['message'] = "Неверный логин или пароль"
|
||||
return render(request, 'account/login.html', render_context)
|
||||
@@ -36,4 +52,11 @@ def view_login(request):
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
|
||||
@login_required
|
||||
def view_list(request):
|
||||
users = []
|
||||
# ограничение права на просмотр списка пользователей для непривилегированных пользователей
|
||||
if request.user.is_superuser:
|
||||
users = User.objects.order_by('login')
|
||||
return render(request, 'account/list.html', {'users': users})
|
||||
|
||||
|
Reference in New Issue
Block a user