123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- from hashlib import md5
- from time import time
- from django.conf import settings
- from django.contrib import auth as dj_auth
- KEY_TOKEN = 'misago_admin_session_token'
- KEY_UPDATED = 'misago_admin_session_updated'
- def make_user_admin_token(user):
- formula = '%s:%s:%s' % (user.pk, user.email, user.password)
- return md5(formula).hexdigest()
- def login(request, user):
- request.session[KEY_TOKEN] = make_user_admin_token(user)
- request.session[KEY_UPDATED] = int(time())
- dj_auth.login(request, user)
- def logout(request):
- pass
- def is_admin_session(request):
- if request.user.is_anonymous():
- return False
- if not (request.user.is_staff and request.user.is_superuser):
- return False
- admin_token = request.session.get(KEY_TOKEN)
- if not admin_token == make_user_admin_token(request.user):
- return False
- updated = request.session.get(KEY_UPDATED, 0)
- if updated < time() - settings.MISAGO_ADMIN_SESSION_EXPIRATION:
- return False
- return True
- def update_admin_session(request):
- request.session[KEY_UPDATED] = int(time())
|