OnlineJudge/account/middleware.py

39 lines
1.7 KiB
Python
Raw Normal View History

# coding=utf-8
import time
import json
2016-07-31 12:26:11 +00:00
from django.http import HttpResponse
from django.utils.translation import ugettext as _
from django.contrib import auth
2016-07-31 12:26:11 +00:00
from utils.shortcuts import redirect_to_login
from .models import AdminType
class SessionSecurityMiddleware(object):
def process_request(self, request):
if request.user.is_authenticated() and request.user.admin_type in [AdminType.ADMIN, AdminType.SUPER_ADMIN]:
if "last_activity" in request.session:
2016-07-31 12:26:11 +00:00
# 24 hours passed since last visit
if time.time() - request.session["last_activity"] >= 24 * 60 * 60:
auth.logout(request)
if request.is_ajax():
return HttpResponse(json.dumps({"code": 1, "data": _("Please login in first")}),
content_type="application/json")
else:
2016-07-31 12:26:11 +00:00
return redirect_to_login(request)
2016-09-25 06:07:45 +00:00
# update last active time
request.session["last_activity"] = time.time()
2016-09-25 06:07:45 +00:00
class AdminRequiredMiddleware(object):
def process_request(self, request):
path = request.path_info
if path.startswith("/admin/") or path.startswith("/api/admin/"):
if not(request.user.is_authenticated() and request.user.is_admin()):
if request.is_ajax():
return HttpResponse(json.dumps({"code": 1, "data": _("Please login in first")}),
content_type="application/json")
else:
return HttpResponse(json.dumps({"code": 1, "data": _("Admin required")}),
content_type="application/json")