Added authentication

This commit is contained in:
Dirk Jahnke 2022-04-01 21:41:51 +02:00
parent 61edb7e538
commit 13cc1c3f57
6 changed files with 115 additions and 18 deletions

View File

@ -2,11 +2,13 @@ from django.views import generic
from .models import Container, ContainerType from .models import Container, ContainerType
import logging, json, re import logging, json, re
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class ContainerListView(generic.ListView): class ContainerListView(LoginRequiredMixin, generic.ListView):
model = Container model = Container
template_name = 'container/container_list.html' template_name = 'container/container_list.html'
context_object_name = 'container_list' context_object_name = 'container_list'
@ -19,7 +21,7 @@ class ContainerListView(generic.ListView):
''' '''
class ContainerCreateView(generic.CreateView): class ContainerCreateView(LoginRequiredMixin, generic.CreateView):
model = Container model = Container
# template_name = 'container/detail.html' # template_name = 'container/detail.html'
fields = ['named_id', 'description', 'color', 'container_type'] fields = ['named_id', 'description', 'color', 'container_type']
@ -30,7 +32,7 @@ class ContainerCreateView(generic.CreateView):
return super().form_valid(form) return super().form_valid(form)
class ContainerImportView(generic.TemplateView): class ContainerImportView(LoginRequiredMixin, generic.TemplateView):
template_name = 'container_import.html' template_name = 'container_import.html'
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
@ -47,7 +49,7 @@ class ContainerImportView(generic.TemplateView):
return super().render_to_response(self) return super().render_to_response(self)
class ContainerUpdateView(generic.UpdateView): class ContainerUpdateView(LoginRequiredMixin, generic.UpdateView):
model = Container model = Container
# template_name = 'container/detail.html' # template_name = 'container/detail.html'
fields = ['named_id', 'description', 'color', 'container_type'] fields = ['named_id', 'description', 'color', 'container_type']
@ -57,15 +59,15 @@ class ContainerUpdateView(generic.UpdateView):
return super().form_valid(form) return super().form_valid(form)
class ContainerDetailView(generic.DetailView): class ContainerDetailView(LoginRequiredMixin, generic.DetailView):
model = Container model = Container
class ContainerDeleteView(generic.DetailView): class ContainerDeleteView(LoginRequiredMixin, generic.DetailView):
model = Container model = Container
class ContainerPrintLabelView(generic.DetailView): class ContainerPrintLabelView(LoginRequiredMixin, generic.DetailView):
model = Container model = Container
template_name = 'container/container_print_label.html' template_name = 'container/container_print_label.html'
@ -160,7 +162,7 @@ class ContainerPrintLabelView(generic.DetailView):
return context return context
class ContainerTypeListView(generic.ListView): class ContainerTypeListView(LoginRequiredMixin, generic.ListView):
template_name = 'container/container_type_list.html' template_name = 'container/container_type_list.html'
context_object_name = 'container_type_list' context_object_name = 'container_type_list'
paginate_by = 20 paginate_by = 20
@ -173,13 +175,13 @@ class ContainerTypeListView(generic.ListView):
''' '''
class ContainerTypeDetailView(generic.DetailView): class ContainerTypeDetailView(LoginRequiredMixin, generic.DetailView):
model = ContainerType model = ContainerType
context_object_name = 'container_type' context_object_name = 'container_type'
template_name = 'container/container_type_detail.html' template_name = 'container/container_type_detail.html'
class ContainerTypeCreateView(generic.CreateView): class ContainerTypeCreateView(LoginRequiredMixin, generic.CreateView):
model = ContainerType model = ContainerType
template_name = 'container/container_type_form.html' template_name = 'container/container_type_form.html'
fields = ['named_id', 'description', 'width', 'length', 'height', 'inner_width', 'inner_length', 'inner_height', fields = ['named_id', 'description', 'width', 'length', 'height', 'inner_width', 'inner_length', 'inner_height',
@ -191,7 +193,7 @@ class ContainerTypeCreateView(generic.CreateView):
return super().form_valid(form) return super().form_valid(form)
class ContainerTypeUpdateView(generic.UpdateView): class ContainerTypeUpdateView(LoginRequiredMixin, generic.UpdateView):
model = ContainerType model = ContainerType
# template_name = 'container/detail.html' # template_name = 'container/detail.html'
template_name = 'container/container_type_form.html' template_name = 'container/container_type_form.html'
@ -203,11 +205,11 @@ class ContainerTypeUpdateView(generic.UpdateView):
return super().form_valid(form) return super().form_valid(form)
class ContainerTypeDeleteView(generic.DetailView): class ContainerTypeDeleteView(LoginRequiredMixin, generic.DetailView):
model = ContainerType model = ContainerType
class ContainerTypeImportView(generic.TemplateView): class ContainerTypeImportView(LoginRequiredMixin, generic.TemplateView):
template_name = 'container/container_type_import.html' template_name = 'container/container_type_import.html'
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):

View File

@ -132,3 +132,5 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
MEDIA_URL = '/media/' MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
LOGIN_URL = '/accounts/login/'

View File

@ -61,12 +61,11 @@
{% if request.user.is_authenticated %} {% if request.user.is_authenticated %}
<li class="nav-item"> <li class="nav-item">
{# URL provided by django-allauth/account/urls.py #} {# URL provided by django-allauth/account/urls.py #}
{# <a class="nav-link" href="{% url 'users:detail' request.user.username %}">{% translate "My Profile" %}</a> #} {#<a class="nav-link" href="{% url 'users_detail' request.user.username %}">{% translate "My Profile" %}</a>#}
nyi my profile
</li> </li>
<li class="nav-item"> <li class="nav-item">
{# URL provided by django-allauth/account/urls.py #} {# URL provided by django-allauth/account/urls.py #}
{# <a class="nav-link" href="{% url 'account_logout' %}">{% translate "Sign Out" %}</a> #} Logout <a class="nav-link" href="{% url 'logout' %}">{% translate "Logout" %}</a>
</li> </li>
{% else %} {% else %}
{% if ACCOUNT_ALLOW_REGISTRATION %} {% if ACCOUNT_ALLOW_REGISTRATION %}
@ -77,7 +76,7 @@
{% endif %} {% endif %}
<li class="nav-item"> <li class="nav-item">
{# URL provided by django-allauth/account/urls.py #} {# URL provided by django-allauth/account/urls.py #}
<a id="log-in-link" class="nav-link" href="{% url 'account_login' %}">{% translate "Sign In" %}</a> <a id="log-in-link" class="nav-link" href="{% url 'login' %}">{% translate "Login" %}</a>
</li> </li>
{% endif %} {% endif %}
</ul> </ul>

View File

@ -0,0 +1,18 @@
{% extends "base.html" %}
{% load i18n %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="{% url 'index' %}">{% translate 'Home' %}</a></div>{% endblock %}
{% block nav-sidebar %}{% endblock %}
{% block content %}
<div class="container">
{% translate "Thanks for spending some quality time with the web site today." %}
</div>
<div class="container">
<a class="btn btn-primary" href="{% url 'home' %}">{% translate 'Log in again' %}</a>
</div>
{% endblock %}

View File

@ -0,0 +1,76 @@
{% extends "base.html" %}
{% load i18n static %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/login.css" %}">
{{ form.media }}
{% endblock %}
{% block bodyclass %}{{ block.super }} login{% endblock %}
{% block usertools %}{% endblock %}
{% block nav-global %}{% endblock %}
{% block nav-sidebar %}{% endblock %}
{% block content_title %}{% endblock %}
{% block breadcrumbs %}{% endblock %}
{% block content %}
{% if form.errors and not form.non_field_errors %}
<p class="errornote">
{% if form.errors.items|length == 1 %}{% translate "Please correct the error below." %}{% else %}{% translate "Please correct the errors below." %}{% endif %}
</p>
{% endif %}
{% if form.non_field_errors %}
{% for error in form.non_field_errors %}
<p class="errornote">
{{ error }}
</p>
{% endfor %}
{% endif %}
<div id="content-main">
{% if user.is_authenticated %}
<p class="errornote">
{% blocktranslate trimmed %}
You are authenticated as {{ username }}, but are not authorized to
access this page. Would you like to login to a different account?
{% endblocktranslate %}
</p>
{% endif %}
<div class="container">
<form action="{{ app_path }}" method="post" id="login-form">{% csrf_token %}
<div class="row">
<div class="col-2">
{{ form.username.errors }}
{{ form.username.label_tag }} {{ form.username }}
</div>
</div>
<div class="row">
<div class="col-2">
{{ form.password.errors }}
{{ form.password.label_tag }} {{ form.password }}
<input type="hidden" name="next" value="{{ next }}">
</div>
</div>
{% url 'admin_password_reset' as password_reset_url %}
{% if password_reset_url %}
<div class="password-reset-link">
<a class="btn btn-secondary" href="{{ password_reset_url }}">{% translate 'Forgotten your password or username?' %}</a>
</div>
{% endif %}
<div class="row">
<div class="col-2">
<input class="btn btn-primary" type="submit" value="{% translate 'Log in' %}">
</div>
</div>
</form>
</div>
</div>
{% endblock %}

View File

@ -29,5 +29,5 @@ urlpatterns = [
path('container/', include('container.urls')), path('container/', include('container.urls')),
path('asset/', include('asset.urls')), path('asset/', include('asset.urls')),
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
path('accounts/login/', auth_views.LoginView.as_view(), name='account_login'), path('accounts/', include('django.contrib.auth.urls')),
] ]