Merge pull request #15 from ericpeterson-l/master
horizon token delete on logout
This commit is contained in:
@@ -16,6 +16,10 @@ def set_session_from_user(request, user):
|
||||
if is_ans1_token(user.token.id):
|
||||
hashed_token = hashlib.md5(user.token.id).hexdigest()
|
||||
user.token._info['token']['id'] = hashed_token
|
||||
if 'token_list' not in request.session:
|
||||
request.session['token_list'] = []
|
||||
token_tuple = (user.endpoint, user.token.id)
|
||||
request.session['token_list'].append(token_tuple)
|
||||
request.session['token'] = user.token._info
|
||||
request.session['user_id'] = user.id
|
||||
request.session['region_endpoint'] = user.endpoint
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import logging
|
||||
|
||||
from threading import Thread
|
||||
|
||||
from django import shortcuts
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import REDIRECT_FIELD_NAME
|
||||
@@ -64,10 +66,26 @@ def login(request):
|
||||
|
||||
|
||||
def logout(request):
|
||||
if 'token_list' in request.session:
|
||||
t = Thread(target=delete_all_tokens,
|
||||
args=(list(request.session['token_list']),))
|
||||
t.start()
|
||||
""" Securely logs a user out. """
|
||||
return django_logout(request)
|
||||
|
||||
|
||||
def delete_all_tokens(token_list):
|
||||
for token_tuple in token_list:
|
||||
try:
|
||||
endpoint = token_tuple[0]
|
||||
token = token_tuple[1]
|
||||
client = keystone_client.Client(endpoint=endpoint)
|
||||
client.tokens.delete(token=token)
|
||||
except keystone_exceptions.ClientException as e:
|
||||
LOG.error('Could not delete token for user "%s" at the endpoint'
|
||||
' "%s".' % (request.user.username, endpoint))
|
||||
|
||||
|
||||
@login_required
|
||||
def switch(request, tenant_id):
|
||||
""" Switches an authenticated user from one tenant to another. """
|
||||
|
||||
Reference in New Issue
Block a user