diff --git a/templates/400.html b/templates/400.html new file mode 100644 index 0000000..ee3d8ec --- /dev/null +++ b/templates/400.html @@ -0,0 +1,12 @@ +{% extends 'base.html' %} +{% load static %} + +{% block title %} Отказано в доступе {% endblock %} + +{% block header %} +

{% if page_name %}{{ page_name }}{% else %}400 Bad Request{% endif %}

+{% endblock %} + +{% block content %} +

Ошибка возникла из-за неправльно сфромированного запроса.

+{% endblock %} diff --git a/templates/account/list.html b/templates/account/list.html index 1eff0ed..841caae 100644 --- a/templates/account/list.html +++ b/templates/account/list.html @@ -1,6 +1,8 @@ {% extends 'base.html' %} {% load static %} +{% block title %} Просмотр аккаунтов {% endblock %} + {% block styles %} {% endblock %} -{% block header %} -

Вход

-{% endblock %} +{% block header %}{% endblock %} {% block content %}
-

Войти

+

Вход

{% csrf_token %} diff --git a/templates/account/register.html b/templates/account/register.html new file mode 100644 index 0000000..eabe57c --- /dev/null +++ b/templates/account/register.html @@ -0,0 +1,89 @@ +{% extends 'base.html' %} +{% load static %} + +{% block title %} Регистрация {% endblock %} + +{% block styles %} + +{% endblock %} + +{% block header-title %} Регистрация нового пользователя {% endblock %} + +{% block content %} +
+ + {% csrf_token %} + + {% for field in form %} +
+ {{ field.label_tag }} {{ field }} + {{ field.errors }} +
+ {% endfor %} + +
+ +
+ +
+{% endblock %} diff --git a/templates/base.html b/templates/base.html index 818158f..69477cc 100644 --- a/templates/base.html +++ b/templates/base.html @@ -13,11 +13,13 @@
{% block header %} -

Мониторинг водозаборного узла

+

{% block header-title %} Мониторинг водозаборного узла {% endblock %}

+ {% if user.is_authenticated %}
{{ user.login }} Выход
+ {% endif %} {% endblock %}
diff --git a/users/forms.py b/users/forms.py index 0afb906..eb1c2a4 100644 --- a/users/forms.py +++ b/users/forms.py @@ -1,2 +1,9 @@ from django import forms +from django.contrib.auth.forms import UserCreationForm +from .models import User + +class UserRegisterForm(UserCreationForm): + class Meta(UserCreationForm.Meta): + model = User + fields = ('login', 'is_superuser') diff --git a/users/models.py b/users/models.py index f403bca..7eb4688 100644 --- a/users/models.py +++ b/users/models.py @@ -36,9 +36,10 @@ class User(AbstractBaseUser): def has_perm(self, perm, obj=None): # управления правами пользователя - secure_level = -1 - if self.is_authenticated: - secure_level = 0 + if not self.is_authenticated: + return False + + secure_level = 0 if self.is_superuser: secure_level = 1 diff --git a/users/urls.py b/users/urls.py index 03ba8ea..f934245 100644 --- a/users/urls.py +++ b/users/urls.py @@ -19,7 +19,7 @@ from . import views urlpatterns = [ path('', views.default_view, name='account'), - path('register', views.default_view, name='register'), + path('register', views.view_register, name='register'), path('login', views.view_login, name='login'), path('logout', views.view_logout, name='logout'), path('list', views.view_list, name='accounts-list'), diff --git a/users/views.py b/users/views.py index 8f01a88..193b071 100644 --- a/users/views.py +++ b/users/views.py @@ -4,8 +4,9 @@ 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 django.contrib.auth.decorators import login_required, permission_required from .models import User +from .forms import UserRegisterForm def default_view(request): @@ -53,10 +54,17 @@ def view_login(request): @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}) +@permission_required(perm='users.add_user', raise_exception=True) +def view_register(request): + form = UserRegisterForm(request.POST or None) + if request.method == 'POST': + if form.is_valid(): + form.save() + return HttpResponseRedirect('/account/list') + return render(request, 'account/register.html', {'form': form}) + +@login_required +@permission_required(perm='users.view_user', raise_exception=True) +def view_list(request): + return render(request, 'account/list.html', {'users': User.objects.order_by('login')})