decorators.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. from misago.messages import Message
  2. from misago.security.models import SignInAttempt
  3. from misago.views import error403
  4. def block_authenticated(f):
  5. def decorator(*args, **kwargs):
  6. request = args[0]
  7. if not request.firewall.admin and request.user.is_authenticated():
  8. return error403(request, Message(request, 'security/forbidden_authenticated'))
  9. return f(*args, **kwargs)
  10. return decorator
  11. def block_jammed(f):
  12. def decorator(*args, **kwargs):
  13. request = args[0]
  14. if not request.firewall.admin and request.jam.is_jammed():
  15. return error403(request, Message(request, 'security/forbidden_jammed'))
  16. return f(*args, **kwargs)
  17. return decorator
  18. def block_guest(f):
  19. def decorator(*args, **kwargs):
  20. request = args[0]
  21. if not request.user.is_authenticated():
  22. return error403(request, Message(request, 'security/forbidden_guest'))
  23. return f(*args, **kwargs)
  24. return decorator
  25. def check_csrf(f):
  26. def decorator(*args, **kwargs):
  27. request = args[0]
  28. if not request.csrf.request_secure(request):
  29. return error403(request, Message(request, 'security/forbidden_request'))
  30. return f(*args, **kwargs)
  31. return decorator