50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
import logging
|
|
|
|
from django.views.decorators.http import require_http_methods, require_POST, require_GET
|
|
from django.contrib.auth import logout, authenticate, login
|
|
from django.shortcuts import redirect
|
|
from mitxmako.shortcuts import render_to_response
|
|
|
|
from django_future.csrf import ensure_csrf_cookie
|
|
|
|
log = logging.getLogger("mitx.student")
|
|
|
|
|
|
@require_http_methods(['GET', 'POST'])
|
|
def do_login(request):
|
|
if request.method == 'POST':
|
|
return post_login(request)
|
|
elif request.method == 'GET':
|
|
return get_login(request)
|
|
|
|
|
|
@require_POST
|
|
@ensure_csrf_cookie
|
|
def post_login(request):
|
|
username = request.POST['username']
|
|
password = request.POST['password']
|
|
user = authenticate(username=username, password=password)
|
|
if user is not None:
|
|
if user.is_active:
|
|
login(request, user)
|
|
return redirect(request.POST.get('next', '/'))
|
|
else:
|
|
raise Exception("Can't log in, account disabled")
|
|
else:
|
|
raise Exception("Can't log in, invalid authentication")
|
|
|
|
|
|
@require_GET
|
|
@ensure_csrf_cookie
|
|
def get_login(request):
|
|
return render_to_response('login.html', {
|
|
'next': request.GET.get('next')
|
|
})
|
|
|
|
|
|
@ensure_csrf_cookie
|
|
def logout_user(request):
|
|
''' HTTP request to log in the user. Redirects to marketing page'''
|
|
logout(request)
|
|
return redirect('/')
|