Commit fd79da9a by David Ormsbee

added some sample logging to login process

parent a7e746d3
import logging
from djangomako.shortcuts import render_to_response, render_to_string from djangomako.shortcuts import render_to_response, render_to_string
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.shortcuts import redirect from django.shortcuts import redirect
...@@ -12,6 +14,8 @@ from django.core.validators import validate_email, validate_slug ...@@ -12,6 +14,8 @@ from django.core.validators import validate_email, validate_slug
import random, string import random, string
from django.db import connection from django.db import connection
log = logging.getLogger("mitx.auth")
def csrf_token(context): def csrf_token(context):
csrf_token = context.get('csrf_token', '') csrf_token = context.get('csrf_token', '')
if csrf_token == 'NOTPROVIDED': if csrf_token == 'NOTPROVIDED':
...@@ -37,36 +41,40 @@ def index(request): ...@@ -37,36 +41,40 @@ def index(request):
# return render_to_response('courseinfo.html', {'error' : '', # return render_to_response('courseinfo.html', {'error' : '',
# 'csrf': csrf_token }) # 'csrf': csrf_token })
# Need different levels of logging
def login_user(request, error=""): def login_user(request, error=""):
# print request.POST
if 'email' not in request.POST or 'password' not in request.POST: if 'email' not in request.POST or 'password' not in request.POST:
# print "X"
return render_to_response('login.html', {'error':error.replace('+',' ')}) return render_to_response('login.html', {'error':error.replace('+',' ')})
email = request.POST['email'] email = request.POST['email']
password = request.POST['password'] password = request.POST['password']
try: try:
user=User.objects.get(email=email) user = User.objects.get(email=email)
except User.DoesNotExist: except User.DoesNotExist:
log.warning("Login failed - Unknown user email: {0}".format(email))
return HttpResponse(json.dumps({'success':False, return HttpResponse(json.dumps({'success':False,
'error': 'Invalid login'})) # TODO: User error message 'error': 'Invalid login'})) # TODO: User error message
username=user.username username = user.username
user=authenticate(username=username, password=password) user = authenticate(username=username, password=password)
if user is None: if user is None:
log.warning("Login failed - Unknown password for {0} is invalid".format(email))
return HttpResponse(json.dumps({'success':False, return HttpResponse(json.dumps({'success':False,
'error': 'Invalid login'})) 'error': 'Invalid login'}))
if user is not None and user.is_active: if user is not None and user.is_active:
login(request, user) try:
if request.POST['remember'] == 'true': login(request, user)
request.session.set_expiry(None) # or change to 604800 for 7 days if request.POST['remember'] == 'true':
# print "recall" request.session.set_expiry(None) # or change to 604800 for 7 days
else: log.debug("Setting user session to never expire")
request.session.set_expiry(0) else:
#print "close" request.session.set_expiry(0)
# print len(connection.queries), connection.queries except Exception as e:
return HttpResponse(json.dumps({'success':True})) log.critical("Login failed - Could not create session. Is memcached running?")
log.exception(e)
# print len(connection.queries), connection.queries return HttpResponse(json.dumps({'success':True}))
return HttpResponse(json.dumps({'success':False, return HttpResponse(json.dumps({'success':False,
'error': 'Account not active. Check your e-mail.'})) 'error': 'Account not active. Check your e-mail.'}))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment