You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
1.2 KiB
27 lines
1.2 KiB
# -*- coding: utf-8 -*-
|
|
from django.utils.functional import SimpleLazyObject
|
|
from django.contrib.auth.views import logout as django_logout
|
|
from django.contrib import messages
|
|
|
|
from .models import get_profile
|
|
|
|
|
|
def _get_profile(request):
|
|
if not hasattr(request, '_cached_profile'):
|
|
request._cached_profile = get_profile(request.user)
|
|
return request._cached_profile
|
|
|
|
|
|
class ProfileMiddleware(object):
|
|
def process_request(self, request):
|
|
assert hasattr(request, 'user'), "The Profile middleware requires authentication middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.auth.middleware.AuthenticationMiddleware'."
|
|
request.profile = SimpleLazyObject(lambda: _get_profile(request))
|
|
try:
|
|
if request.user.is_authenticated() and request.session and request.user:
|
|
if request.user.profile.user_session_key != request.session.session_key and \
|
|
request.profile.user_session_key != '':
|
|
django_logout(request)
|
|
messages.add_message(request, messages.ERROR, u'Другой пользователь вошёл под этим логином.')
|
|
except:
|
|
# print 'no user profile'
|
|
pass
|
|
|