diff options
Diffstat (limited to 'core/views/auth.py')
-rw-r--r-- | core/views/auth.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/core/views/auth.py b/core/views/auth.py new file mode 100644 index 0000000..19b80a4 --- /dev/null +++ b/core/views/auth.py @@ -0,0 +1,58 @@ +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', {}) + + |