auth.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from django.conf import settings
  2. from django.contrib import auth, messages
  3. from django.http import Http404
  4. from django.shortcuts import render, redirect
  5. from django.utils.translation import ugettext as _
  6. from django.views.decorators.cache import never_cache
  7. from django.views.decorators.csrf import csrf_protect
  8. from django.views.decorators.debug import sensitive_post_parameters
  9. from misago.core.decorators import require_POST
  10. from misago.users.decorators import deny_authenticated, deny_guests
  11. from misago.users.forms.auth import AuthenticationForm
  12. @sensitive_post_parameters()
  13. @deny_authenticated
  14. @csrf_protect
  15. @never_cache
  16. def login(request):
  17. form = AuthenticationForm(request)
  18. if request.method == 'POST':
  19. form = AuthenticationForm(request, data=request.POST)
  20. if form.is_valid():
  21. message = _("Welcome back, %(username)s! You have been "
  22. "signed in successfully.")
  23. messages.success(
  24. request, message % {'username': form.user_cache.username})
  25. auth.login(request, form.user_cache)
  26. return redirect(settings.LOGIN_REDIRECT_URL)
  27. return render(request, 'misago/login.html', {'form': form})
  28. @deny_guests
  29. @require_POST
  30. @csrf_protect
  31. @never_cache
  32. def logout(request):
  33. message = _("%(username)s, you have been signed out.")
  34. messages.info(
  35. request, message % {'username': request.user.username})
  36. auth.logout(request)
  37. return redirect('misago:index')