auth.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from hashlib import md5
  2. from time import time
  3. from django.conf import settings
  4. from django.contrib import auth as dj_auth
  5. KEY_TOKEN = 'misago_admin_session_token'
  6. KEY_UPDATED = 'misago_admin_session_updated'
  7. def make_user_admin_token(user):
  8. formula = '%s:%s:%s' % (user.pk, user.email, user.password)
  9. return md5(formula).hexdigest()
  10. def login(request, user):
  11. request.session[KEY_TOKEN] = make_user_admin_token(user)
  12. request.session[KEY_UPDATED] = int(time())
  13. dj_auth.login(request, user)
  14. def logout(request):
  15. pass
  16. def is_admin_session(request):
  17. if request.user.is_anonymous():
  18. return False
  19. if not (request.user.is_staff and request.user.is_superuser):
  20. return False
  21. admin_token = request.session.get(KEY_TOKEN)
  22. if not admin_token == make_user_admin_token(request.user):
  23. return False
  24. updated = request.session.get(KEY_UPDATED, 0)
  25. if updated < time() - settings.MISAGO_ADMIN_SESSION_EXPIRATION:
  26. return False
  27. return True
  28. def update_admin_session(request):
  29. request.session[KEY_UPDATED] = int(time())