troggle-unchained/core/views/auth.py

59 lines
2.0 KiB
Python
Raw Normal View History

from builtins import str
from django.shortcuts import render
from django.http import Http404, HttpResponseRedirect
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth import forms as auth_forms
# This is copied from CUYC.cuy.website.view.auth
# If we want to do the whole online-email thing, we would also need to copy across the code in these
# imported files and delete what is superfluous.
# Or we could just load the latest version of django-registration app.
#from cuy.club.models import Member, Message
#from ..forms import WebsiteLoginForm, WebsiteRegisterForm
#from ...common import mail_site_error
#from .generic import user_is_active
'''The login and logout functions.
This is also where we would manage registration: for people wanting to create and validate their individual
logon accounts/forgottenpassword'''
############################
# Authentication Functions #
############################
def expologout(request):
login_form = auth_forms.AuthenticationForm()
logout(request)
return render(request, 'login/logout.html', {'form':login_form})
def expologin(request):
# GET
if not request.method == 'POST':
if (not request.user.is_authenticated) or (not request.user.is_active):
return render(request, 'login/index.html', {})
else:
# going to login page when you are already logged in
return render(request, 'tasks.html', {})
# POST
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is None:
return render(request, 'login/index.html',
{'invalid': True, 'username':username})
if not user.is_active:
return render(request, 'login/enable.html',
{'login_state':'notenabled'})
try:
login(request, user)
# Should do the ?next= stuff here..
return render(request, 'tasks.html', {})
except:
return render(request, 'errors/generic.html', {})