добавил страницу ошибки Bad request и права пользователей, добавил форму регистрации
This commit is contained in:
parent
feb18af30b
commit
ac8fc87753
12
templates/400.html
Normal file
12
templates/400.html
Normal file
@ -0,0 +1,12 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %} Отказано в доступе {% endblock %}
|
||||
|
||||
{% block header %}
|
||||
<h1> {% if page_name %}{{ page_name }}{% else %}400 Bad Request{% endif %} </h1>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h2>Ошибка возникла из-за неправльно сфромированного запроса.</h2>
|
||||
{% endblock %}
|
@ -1,6 +1,8 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %} Просмотр аккаунтов {% endblock %}
|
||||
|
||||
{% block styles %}
|
||||
<style>
|
||||
.table-wrapper {
|
||||
@ -26,7 +28,8 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if user.is_superuser %}
|
||||
|
||||
<p> Добавить нового пользователя можно <a href="{% url 'register' %}">тут</a>.</p>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead>
|
||||
@ -51,9 +54,4 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{% else %}
|
||||
<h2>Недостаточно прав для просмотра страницы</h2>
|
||||
<p>Для просмотра списка пользователей необходимо иметь статус администратора.</p>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
@ -1,6 +1,8 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %} Вход {% endblock %}
|
||||
|
||||
{% block styles %}
|
||||
<style>
|
||||
#form-wrapper {
|
||||
@ -55,13 +57,11 @@
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
{% block header %}
|
||||
<h1> Вход </h1>
|
||||
{% endblock %}
|
||||
{% block header %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div id="form-wrapper">
|
||||
<h1> Войти </h1>
|
||||
<h1> Вход </h1>
|
||||
<form method="POST" id="login-form">
|
||||
{% csrf_token %}
|
||||
|
||||
|
89
templates/account/register.html
Normal file
89
templates/account/register.html
Normal file
@ -0,0 +1,89 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %} Регистрация {% endblock %}
|
||||
|
||||
{% block styles %}
|
||||
<style>
|
||||
#form-wrapper {
|
||||
overflow: hidden;
|
||||
max-width: 27em;
|
||||
height: auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.form-row {
|
||||
padding: 4px 0;
|
||||
margin: 1.5em;
|
||||
}
|
||||
|
||||
.form-row * {
|
||||
font-size: 1em;
|
||||
text-align: left;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.form-row label {
|
||||
line-height: 2em;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.form-row input {
|
||||
padding: 8px;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
border: none;
|
||||
border-bottom: var(--brand-bg) 2px solid;
|
||||
background-color: var(--bg-color);
|
||||
text-overflow: ellipsis;
|
||||
min-height: 2em;
|
||||
}
|
||||
|
||||
.form-row input:focus {
|
||||
outline: none;
|
||||
border: none;
|
||||
border-bottom: var(--brand-text) 2px solid;
|
||||
background-color: var(--bg-selected);
|
||||
}
|
||||
|
||||
#submit {
|
||||
border: none;
|
||||
font-weight: bolder;
|
||||
background: var(--bg-action);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.errorlist > * {
|
||||
border: 2px solid var(--text-bad);
|
||||
border-radius: 3px;
|
||||
padding: 0.5em;
|
||||
margin: 0.2em;
|
||||
}
|
||||
|
||||
.errorlist {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
{% block header-title %} Регистрация нового пользователя {% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div id="form-wrapper">
|
||||
<form method="POST">
|
||||
{% csrf_token %}
|
||||
|
||||
{% for field in form %}
|
||||
<div class="form-row">
|
||||
{{ field.label_tag }} {{ field }}
|
||||
{{ field.errors }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<div class="form-row">
|
||||
<input id="submit" type="submit" value="Зарегистрировать">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
@ -13,11 +13,13 @@
|
||||
<body>
|
||||
<header>
|
||||
{% block header %}
|
||||
<h1> Мониторинг водозаборного узла </h1>
|
||||
<h1>{% block header-title %} Мониторинг водозаборного узла {% endblock %}</h1>
|
||||
{% if user.is_authenticated %}
|
||||
<div>
|
||||
<span> {{ user.login }} </span>
|
||||
<a href="/account/logout">Выход</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
</header>
|
||||
<main id="content">
|
||||
|
@ -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')
|
||||
|
@ -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
|
||||
|
||||
|
@ -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'),
|
||||
|
@ -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')})
|
||||
|
Loading…
x
Reference in New Issue
Block a user