remove all sessions of user on signout, fixes #2700

This commit is contained in:
j 2015-02-25 18:17:35 +00:00
parent 154e5343c5
commit 7377de62f7

View file

@ -10,8 +10,10 @@ from django.utils import simplejson as json
from django.conf import settings from django.conf import settings
from django.core.mail import send_mail, BadHeaderError, EmailMessage from django.core.mail import send_mail, BadHeaderError, EmailMessage
from django.shortcuts import redirect from django.shortcuts import redirect
from django.db import transaction
from django.db.models import Max from django.db.models import Max
from django.contrib.auth.models import User, Group from django.contrib.auth.models import User, Group
from django.contrib.sessions.models import Session
from ox.django.shortcuts import render_to_json_response, json_response, get_object_or_404_json from ox.django.shortcuts import render_to_json_response, json_response, get_object_or_404_json
from ox.django.decorators import login_required_json from ox.django.decorators import login_required_json
@ -116,12 +118,17 @@ def signout(request, data):
''' '''
response = json_response(text='ok') response = json_response(text='ok')
if request.user.is_authenticated(): if request.user.is_authenticated():
uid = request.user.id
profile = request.user.get_profile() profile = request.user.get_profile()
if profile.ui.get('page') == 'signout': if profile.ui.get('page') == 'signout':
profile.ui['page'] = '' profile.ui['page'] = ''
profile.save() profile.save()
response = json_response(text='logged out') response = json_response(text='logged out')
logout(request) logout(request)
with transaction.commit_on_success():
for s in Session.objects.all():
if s.get_decoded().get('_auth_user_id') == uid:
s.delete()
response['data']['user'] = settings.CONFIG['user'] response['data']['user'] = settings.CONFIG['user']
return render_to_json_response(response) return render_to_json_response(response)