auth.py 1.4 KB

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