From 5c11fdfdbdeb298e7b1744b5487cc95cad88bcbd Mon Sep 17 00:00:00 2001 From: okalintu Date: Thu, 25 Aug 2016 20:14:03 +0300 Subject: [PATCH] implemented login system --- members/views.py | 2 ++ sikweb/urls.py | 12 +++++++++++- webapp/templates/login.html | 19 +++++++++++++++++++ webapp/views.py | 31 +++++++++++++++++++++++++++++-- 4 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 webapp/templates/login.html diff --git a/members/views.py b/members/views.py index 40918c8..8f0a1b4 100644 --- a/members/views.py +++ b/members/views.py @@ -1,4 +1,5 @@ from django.shortcuts import render, get_object_or_404 +from django.contrib.auth.decorators import permission_required from django.views.decorators.csrf import ensure_csrf_cookie from django.http import HttpResponse, HttpResponseBadRequest from django.core.exceptions import ValidationError @@ -6,6 +7,7 @@ from members.models import Member, MemberRequest import json @ensure_csrf_cookie +@permission_required('members.change_member', login_url='/login') def index(request, *args, **kwargs): return render(request, 'members_index.html',{}) diff --git a/sikweb/urls.py b/sikweb/urls.py index d3af1d4..51ba699 100644 --- a/sikweb/urls.py +++ b/sikweb/urls.py @@ -16,6 +16,11 @@ Including another URLconf """ from django.conf.urls import url from django.contrib import admin +# main +from webapp.views import main_index +# login +from webapp.views import login_view +from webapp.views import logout_view # members from members.views import index as mindex from members.views import members as mems @@ -24,12 +29,17 @@ from members.views import handle_mem_request from members.views import csv_import as mem_csv_import from members.views import new_member_request from members.views import member_requests - #infoscreen from infoscreen.views import index as infoindex urlpatterns = [ + # main + url(r'^$', main_index), + # admin url(r'^admin/', admin.site.urls), + # login stuff + url(r'^login$', login_view), + url(r'^logout$', logout_view), # members url(r'^members/$', mindex), url(r'^members/api/members$', mems), diff --git a/webapp/templates/login.html b/webapp/templates/login.html new file mode 100644 index 0000000..ca8e3a0 --- /dev/null +++ b/webapp/templates/login.html @@ -0,0 +1,19 @@ + + + + + SIK - Login + + +
{{ error }}
+
+
Käyttäjätunnus + +
+
Salasana + +
+ +
+ + diff --git a/webapp/views.py b/webapp/views.py index 91ea44a..3ce39cb 100644 --- a/webapp/views.py +++ b/webapp/views.py @@ -1,3 +1,30 @@ -from django.shortcuts import render +from django.shortcuts import render, redirect +from django.contrib.auth import login, logout, authenticate +from django.views.decorators.http import require_http_methods + +@require_http_methods(["GET"]) +def main_index(request, *args, **kwargs): + return redirect("http://sahkoinsinoorikilta.fi/") + +@require_http_methods(["GET", "POST"]) +def login_view(request, *args, **kwargs): + if request.method == "POST": + uname = request.POST.get("username", None) + pw = request.POST.get("passwd", None) + user = authenticate(username=uname, password=pw) + if user is not None: + login(request, user) + original_site = request.GET.get("next",None) or "/" + return redirect(original_site) + return render(request, "login.html", {"error":"kirjautuminen kosahti. koita uudelleen"}) + # user got here by a get request + user = request.user + if user.is_authenticated(): + return redirect("/") # user shoud not be here authenticated with get but get rid if is + return render(request, "login.html", {}) + +@require_http_methods(["POST"]) +def logout_view(request, *args, **kwargs): + logout(request) + return redirect("/") -# Create your views here.