From a5fbb7b736003ec5e41042a600e550dc0f5b8ea3 Mon Sep 17 00:00:00 2001 From: Hubert Jankowski Date: Sun, 19 Dec 2021 16:59:24 +0100 Subject: [PATCH] Added login --- config/authh.py | 21 +++++++ config/settings.py | 11 ++-- templates/great.html | 7 +++ templates/login.html | 130 ++++++++++++++++++++++++++++++++++++++----- trials/views.py | 4 -- users/urls.py | 5 +- users/views.py | 22 +++++++- 7 files changed, 176 insertions(+), 24 deletions(-) create mode 100644 config/authh.py create mode 100644 templates/great.html diff --git a/config/authh.py b/config/authh.py new file mode 100644 index 0000000..186366c --- /dev/null +++ b/config/authh.py @@ -0,0 +1,21 @@ +from django.conf import settings +from django.contrib.auth.backends import BaseBackend +from django.contrib.auth.hashers import check_password +from users.models import User + + +class SettingsBackend(BaseBackend): + + def authenticate(self, request, email=None, password=None): + user = User.objects.get(email=email) + if check_password(password, user.password): + user_final = user + else: + user_final = ({"message": "bad"}) + return user_final + + def get_user(self, user_id): + try: + return User.objects.get(pk=user_id) + except User.DoesNotExist: + return None \ No newline at end of file diff --git a/config/settings.py b/config/settings.py index 5a4e9c3..91c2dba 100644 --- a/config/settings.py +++ b/config/settings.py @@ -48,6 +48,7 @@ APPEND_SLASH = False INSTALLED_APPS = [ 'django.contrib.auth', 'django.contrib.contenttypes', + 'django.contrib.sessions', 'django.contrib.staticfiles', "django.contrib.gis", "rest_framework", @@ -60,10 +61,12 @@ INSTALLED_APPS = [ "questions", "categories" ] - +# AUTHENTICATION_BACKENDS = ['config.authh.SettingsBackend'] MIDDLEWARE = [ + 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.security.SecurityMiddleware', "corsheaders.middleware.CorsMiddleware", + 'django.contrib.auth.middleware.AuthenticationMiddleware', # "`debug_toolbar.middleware.DebugToolbarMiddleware`", 'django.middleware.common.CommonMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', @@ -113,9 +116,9 @@ REST_FRAMEWORK = { "DEFAULT_PERMISSION_CLASSES": ( "rest_framework.permissions.IsAuthenticated", ), - "DEFAULT_AUTHENTICATION_CLASSES": ( - "rest_framework_simplejwt.authentication.JWTAuthentication", - ), +# "DEFAULT_AUTHENTICATION_CLASSES": ( +# "rest_framework_simplejwt.authentication.JWTAuthentication", +# ), "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.LimitOffsetPagination", "DEFAULT_FILTER_BACKENDS": ( "django_filters.rest_framework.DjangoFilterBackend", diff --git a/templates/great.html b/templates/great.html new file mode 100644 index 0000000..379d6e6 --- /dev/null +++ b/templates/great.html @@ -0,0 +1,7 @@ +{% extends "authBase.html" %} + +{% block title %}Log Out{% endblock %} + +{% block content %} +

zalogowano

+{% endblock %} \ No newline at end of file diff --git a/templates/login.html b/templates/login.html index a8442a1..fcc6db3 100644 --- a/templates/login.html +++ b/templates/login.html @@ -1,16 +1,120 @@ -{% extends "authBase.html" %} + -{% block title %}Log In{% endblock %} + + Login + + + -{% block content %} -

Log In

-
-

Email

- -

Password

- - -

Remember Me

-
-{% endblock %} + + + + +
+
+
+
+ + +

LOGIN

+
+
+
+ {% csrf_token %} +
+
+ +
+ +
+
+
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+
+
+ + + \ No newline at end of file diff --git a/trials/views.py b/trials/views.py index 12dcd13..fd086a5 100644 --- a/trials/views.py +++ b/trials/views.py @@ -3,7 +3,6 @@ from rest_framework import views from rest_framework import viewsets from rest_framework.response import Response -from config.settings import BASE_DIR from trials.models import Test from trials.serializers import TestSerializer @@ -15,9 +14,6 @@ class TestModelViewSet(viewsets.ModelViewSet): class TestTemplateView(TemplateView): - permission_classes = [] - template_name = BASE_DIR + f"/templates/generic_test.html" - def get_queryset(self): return Test.objects.all() diff --git a/users/urls.py b/users/urls.py index 1c75f05..f910099 100644 --- a/users/urls.py +++ b/users/urls.py @@ -4,7 +4,7 @@ from django.urls import path from users.views import UserModelViewSet from rest_framework_simplejwt.views import TokenObtainPairView from rest_framework_simplejwt.views import TokenRefreshView -from .views import PasswordReset, UserPasswordResetConfirmView, RegisterViewSet, login, logout, register, register_success +from .views import PasswordReset, UserPasswordResetConfirmView, RegisterViewSet, login, logout, register, register_success, loginn, login_success router = DefaultRouter(trailing_slash=False) @@ -13,9 +13,10 @@ router.register("items", UserModelViewSet) urlpatterns = [ path("", include(router.urls)), - path('login', login, name='login'), + path('login', loginn, name='login'), path('logout', logout, name='logout'), path('register/success', register_success, name='register_success'), + path('login/success', login_success, name='login_success'), # path('register', RegisterViewSet.as_view(), name='register'), path('register', register, name='register'), path('api/token', TokenObtainPairView.as_view(), name='token_obtain_pair'), diff --git a/users/views.py b/users/views.py index b62d505..cd8f607 100644 --- a/users/views.py +++ b/users/views.py @@ -1,3 +1,4 @@ +from django.http import HttpResponseRedirect from rest_framework import viewsets from users.models import User @@ -10,7 +11,10 @@ from rest_framework.response import Response from django.shortcuts import render, redirect from django.template import loader from .forms import RegistrationForm - +from django.contrib.auth.forms import AuthenticationForm +from django.contrib.auth import login as auth_login +from config.authh import SettingsBackend +from django.contrib.auth.decorators import login_required class UserModelViewSet(viewsets.ModelViewSet): @@ -99,3 +103,19 @@ def register(request): form = RegistrationForm() context['registration_form'] = form return render(request, 'register.html', context) + + +def login_success(request): + return render(request, 'great.html') + + +def loginn(request): + if request.POST: + username = request.POST.get("username") + password = request.POST.get("password") + + user = SettingsBackend().authenticate(request, email=username, password=password) + if user is not None: + auth_login(request, user) + context = {} + return render(request, 'login.html', context) -- 2.20.1