auth.py 1.3 KB

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