2 from django.shortcuts import render_to_response
3 from django.views.decorators.csrf import csrf_exempt
4 from django.http import HttpResponse, HttpResponseNotFound, HttpResponseForbidden, HttpResponseServerError, HttpResponseBadRequest
5 from django.contrib.auth import authenticate, login
6 from manifoldapi.manifoldresult import ManifoldResult
11 def dispatch(request):
12 if request.method == 'POST':
13 data = json.loads(request.body)
15 return HttpResponseBadRequest(json.dumps({"error":"Bad request use POST"}), content_type="application/json")
21 username = data['email']
22 if 'password' in data:
23 password = data['password']
25 if not username or not password:
26 return HttpResponseBadRequest(json.dumps({"error":"Bad request"}), content_type="application/json")
28 token = {'username': username, 'password': password, 'request': request}
29 auth_result = authenticate(token=token)
30 # our authenticate function returns either
31 # . a ManifoldResult - when something has gone wrong, like e.g. backend is unreachable
32 # . a django User in case of success
33 # . or None if the backend could be reached but the authentication failed
34 if isinstance (auth_result, ManifoldResult):
35 manifoldresult = auth_result
36 # let's use ManifoldResult.__repr__
37 msg="%s"%manifoldresult
38 return HttpResponseServerError(json.dumps({"error":msg}), content_type="application/json")
39 # user was authenticated at the backend
40 elif auth_result is not None:
42 if user is not None and user.is_active:
45 if request.user.is_authenticated():
47 result = {'email':username}
49 activity.user.login(request)
50 except Exception as e:
53 msg = "Your session has expired"
54 return HttpResponseServerError(json.dumps({"error":msg}), content_type="application/json")
56 msg = "Your account is not active, please contact the site admin."
57 return HttpResponseForbidden(json.dumps({"error":msg}), content_type="application/json")
60 msg = "Your username and/or password were incorrect."
61 return HttpResponseNotFound(json.dumps({"error":msg}), content_type="application/json")
62 return HttpResponse(json.dumps(result))