auth.py 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. from django.conf import settings
  2. from django.contrib import auth
  3. from django.shortcuts import redirect
  4. from django.utils.http import is_safe_url
  5. from django.utils.six.moves.urllib.parse import urlparse
  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. @sensitive_post_parameters()
  10. @never_cache
  11. @csrf_protect
  12. def login(request):
  13. if request.method == 'POST':
  14. redirect_to = request.POST.get('redirect_to')
  15. if redirect_to:
  16. is_redirect_safe = is_safe_url(url=redirect_to, host=request.get_host())
  17. if is_redirect_safe:
  18. redirect_to_path = urlparse(redirect_to).path
  19. return redirect(redirect_to_path)
  20. return redirect(settings.LOGIN_REDIRECT_URL)
  21. @never_cache
  22. @csrf_protect
  23. def logout(request):
  24. if request.method == 'POST' and request.user.is_authenticated:
  25. auth.logout(request)
  26. return redirect(settings.LOGIN_REDIRECT_URL)