Added sso login logging

Part of #1087

This is untested as we need to have a public facing machine to do SSO
stuff against.
This commit is contained in:
Akita Noek
2016-04-11 17:02:00 -04:00
parent f3cae7e1f0
commit 24a841a0bf

View File

@@ -3,6 +3,7 @@
# Python # Python
import urllib import urllib
import logging
# Django # Django
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
@@ -10,6 +11,7 @@ from django.http import HttpResponse
from django.utils.timezone import now, utc from django.utils.timezone import now, utc
from django.views.generic import View from django.views.generic import View
from django.views.generic.base import RedirectView from django.views.generic.base import RedirectView
from django.utils.encoding import smart_text
# Django REST Framework # Django REST Framework
from rest_framework.renderers import JSONRenderer from rest_framework.renderers import JSONRenderer
@@ -18,12 +20,14 @@ from rest_framework.renderers import JSONRenderer
from awx.main.models import AuthToken from awx.main.models import AuthToken
from awx.api.serializers import UserSerializer from awx.api.serializers import UserSerializer
logger = logging.getLogger('awx.sso.views')
class BaseRedirectView(RedirectView): class BaseRedirectView(RedirectView):
def get_redirect_url(self, *args, **kwargs): def get_redirect_url(self, *args, **kwargs):
last_path = self.request.COOKIES.get('lastPath', '') last_path = self.request.COOKIES.get('lastPath', '')
last_path = urllib.quote(urllib.unquote(last_path).strip('"')) last_path = urllib.quote(urllib.unquote(last_path).strip('"'))
logger.warning(smart_text(u"Redirecting invalid SSO login attempt".format(last_path)))
url = reverse('ui:index') url = reverse('ui:index')
if last_path: if last_path:
return '%s#%s' % (url, last_path) return '%s#%s' % (url, last_path)
@@ -45,9 +49,11 @@ class CompleteView(BaseRedirectView):
request_hash=request_hash, request_hash=request_hash,
expires__gt=now())[0] expires__gt=now())[0]
token.refresh() token.refresh()
logger.info(smart_text(u"User {} logged in".format(self.request.user.username)))
except IndexError: except IndexError:
token = AuthToken.objects.create(user=request.user, token = AuthToken.objects.create(user=request.user,
request_hash=request_hash) request_hash=request_hash)
logger.info(smart_text(u"User {} logged in".format(self.request.user.username)))
request.session['auth_token_key'] = token.key request.session['auth_token_key'] = token.key
token_key = urllib.quote('"%s"' % token.key) token_key = urllib.quote('"%s"' % token.key)
response.set_cookie('token', token_key) response.set_cookie('token', token_key)