Improve logging
- add a mixin to initialize a logger in the view __init__ method - log login, link creation and link deletion
This commit is contained in:
parent
926accba9e
commit
0be4dacf27
|
@ -40,9 +40,10 @@ def user_has_mspaccount(user):
|
|||
|
||||
mspaccount_required = user_passes_test(user_has_mspaccount, '/')
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class LoggerMixin(object):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.logger = logging.getLogger(__name__)
|
||||
super(LoggerMixin, *args, **kwargs)
|
||||
|
||||
try:
|
||||
cache = get_cache('msp')
|
||||
|
@ -101,7 +102,7 @@ def access_token_from_request(request):
|
|||
ACCESS_GRANT_CODE = 'accessgrantcode'
|
||||
|
||||
|
||||
class MspOAuthSessionViewMixin(object):
|
||||
class MspOAuthSessionViewMixin(LoggerMixin):
|
||||
'''Add the OAuth2 dance to a view'''
|
||||
scopes = []
|
||||
redirect_field_name = REDIRECT_FIELD_NAME
|
||||
|
@ -156,7 +157,7 @@ class MspOAuthSessionViewMixin(object):
|
|||
def authorization_error(self, request, *args, **kwargs):
|
||||
if request.REQUEST['error'] == 'access_denied':
|
||||
messages.warning(request, _('request denied by user'))
|
||||
logger.debug('authorization_error %r', request.GET)
|
||||
self.logger.debug('authorization_error %r', request.GET)
|
||||
return self.redirect(request)
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
|
@ -190,8 +191,10 @@ class LoginView(PopupViewMixin, MspOAuthSessionViewMixin, View):
|
|||
user = authenticate(agc=agc)
|
||||
if user:
|
||||
auth_login(request, user)
|
||||
self.logger.info('user %r logged in using msp', unicode(user))
|
||||
else:
|
||||
messages.warning(request, _('no local account is linked to your MSP account'))
|
||||
messages.warning(request, _('no local account is linked to your MSP '
|
||||
'account'))
|
||||
return self.redirect(request)
|
||||
|
||||
login = LoginView.as_view()
|
||||
|
@ -216,6 +219,8 @@ class LinkView(PopupViewMixin, MspOAuthSessionViewMixin, View):
|
|||
except models.MspAccount.DoesNotExist:
|
||||
models.MspAccount.objects.create(user=request.user,
|
||||
agc=agc, token=json.dumps(self.token))
|
||||
self.logger.info('msp link created for user %r',
|
||||
unicode(request.user))
|
||||
messages.info(request, _('msp link created'))
|
||||
return self.redirect(request)
|
||||
|
||||
|
@ -231,21 +236,21 @@ class UnlinkView(PopupViewMixin, MspOAuthSessionViewMixin, TemplateView):
|
|||
result = self.api_call('app/rest/agc', method='delete')
|
||||
if result.status_code // 100 == 2:
|
||||
qs.delete()
|
||||
logger.debug('all link deleted for %r', request.user)
|
||||
self.logger.info('msp link deleted for %r', unicode(request.user))
|
||||
next_url = self.redirect_to(request, *args, **kwargs)
|
||||
msp_unlink_url = reverse('msp-unlink-done')
|
||||
next_url = '{0}?{1}'.format(msp_unlink_url,
|
||||
urllib.urlencode({REDIRECT_FIELD_NAME: next_url}))
|
||||
return self.redirect(request, next_url=next_url)
|
||||
else:
|
||||
logger.debug('error when deleting msp link %r', result.content)
|
||||
self.logger.debug('error when deleting msp link %r', result.content)
|
||||
else:
|
||||
logger.debug('no msp account exist doing nothing')
|
||||
self.logger.debug('no msp account exist doing nothing')
|
||||
return self.redirect(request)
|
||||
|
||||
unlink = login_required(UnlinkView.as_view())
|
||||
|
||||
class AuthorizeView(View):
|
||||
class AuthorizeView(LoggerMixin, View):
|
||||
'''OAuth2/MSP proxy authorization view.
|
||||
|
||||
It works exactly like MSP authorization endpoint but hide the real
|
||||
|
@ -300,7 +305,7 @@ class AuthorizeView(View):
|
|||
assert GET['response_type'] == 'code'
|
||||
redirect_uri = request.build_absolute_uri(request.path)
|
||||
state = str(uuid.uuid4())
|
||||
logger.debug('%s: received MSP authorization demande %r', state, GET)
|
||||
self.logger.debug('%s: received MSP authorization demande %r', state, GET)
|
||||
# save state
|
||||
cache.set('msp-state-' + state, {
|
||||
'msp_redirect_uri': redirect_uri,
|
||||
|
@ -454,6 +459,7 @@ class LoginOrLinkView(PopupViewMixin, MspOAuthSessionViewMixin, View):
|
|||
user = authenticate(agc=agc)
|
||||
if user:
|
||||
auth_login(request, user)
|
||||
self.logger.info('user %r logged in using msp', unicode(user))
|
||||
return self.redirect(request)
|
||||
elif request.user.is_authenticated():
|
||||
msp_account, created = models.MspAccount.objects.get_or_create(defaults={
|
||||
|
@ -467,6 +473,9 @@ class LoginOrLinkView(PopupViewMixin, MspOAuthSessionViewMixin, View):
|
|||
msp_account.agc = agc
|
||||
msp_account.token = json.dumps(self.token)
|
||||
msp_account.save()
|
||||
else:
|
||||
self.logger.info('msp link created for user %r',
|
||||
unicode(request.user))
|
||||
messages.info(request, _('msp link created'))
|
||||
return self.redirect(request)
|
||||
else:
|
||||
|
|
Reference in New Issue