auth.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from django.contrib import messages
  2. from django.http import Http404
  3. from django.shortcuts import render, redirect
  4. from django.utils.translation import ugettext as _
  5. from django.views.decorators.debug import sensitive_post_parameters
  6. from django.views.decorators.cache import never_cache
  7. from django.views.decorators.csrf import csrf_protect
  8. from misago.admin import auth
  9. from misago.users.forms.auth import AdminAuthenticationForm
  10. @sensitive_post_parameters()
  11. @csrf_protect
  12. @never_cache
  13. def login(request):
  14. if request.admin_namespace == 'misago:admin':
  15. target = 'misago'
  16. elif request.admin_namespace == 'admin':
  17. target = 'django'
  18. else:
  19. target = 'unknown'
  20. form = AdminAuthenticationForm(request)
  21. if request.method == 'POST':
  22. form = AdminAuthenticationForm(request, data=request.POST)
  23. if form.is_valid():
  24. auth.login(request, form.user_cache)
  25. return redirect('%s:index' % request.admin_namespace)
  26. return render(request, 'misago/admin/login.html',
  27. {'form': form, 'target': target})
  28. @csrf_protect
  29. @never_cache
  30. def logout(request):
  31. if request.method == 'POST':
  32. auth.close_admin_session(request)
  33. messages.info(request,
  34. _("Your admin session has been closed."))
  35. return redirect('misago:index')
  36. else:
  37. return redirect('misago:admin:index')