X-Git-Url: https://git.mdrn.pl/django-cas-provider.git/blobdiff_plain/3043bb2f2f00a94f8499c00b54b446d2dbd07a98..840be9bb10bd63d3d22d2d825339729b0b9f1eb6:/cas_provider/views.py diff --git a/cas_provider/views.py b/cas_provider/views.py index 3f2607f..9ceeca4 100644 --- a/cas_provider/views.py +++ b/cas_provider/views.py @@ -123,6 +123,9 @@ def login(request, template_name='cas/login.html', # Try and pull the service off the session service = request.session.pop('service', service) + signals.on_cas_login_success.send(sender=login, request=request, + service=service, **kwargs) + if service is None: # Normal internal success redirection. logging.debug('Redirecting to %s', success_redirect) @@ -169,7 +172,7 @@ def validate(request): username = ticket.user.username ticket.delete() - results = signals.on_cas_collect_histories.send(sender=validate, for_email=ticket.user.email) + results = signals.on_cas_collect_histories.send(sender=validate, for_user=ticket.user) histories = '\n'.join('\n'.join(rs) for rc, rs in results) logger.info('Validated %s %s', username, "(also %s)" % histories if histories else '') return HttpResponse("yes\n%s\n%s" % (username, histories)) @@ -336,12 +339,20 @@ def auth_success_response(user, pgt, proxies): username = etree.SubElement(auth_success, CAS + 'user') username.text = user.username - if settings.CAS_CUSTOM_ATTRIBUTES_CALLBACK: - callback = get_callable(settings.CAS_CUSTOM_ATTRIBUTES_CALLBACK) - attrs = callback(user) - if len(attrs) > 0: - formatter = get_callable(settings.CAS_CUSTOM_ATTRIBUTES_FORMATER) - formatter(auth_success, attrs) + attrs = {} + for receiver, custom in signals.cas_collect_custom_attributes.send(sender=auth_success_response, user=user): + if custom: + attrs.update(custom) + + identifiers = [i for sr, rr in signals.on_cas_collect_histories.send(sender=validate, for_user=user) + for i in rr] + + if identifiers: + attrs['identifiers'] = identifiers + + if attrs: + formatter = get_callable(settings.CAS_CUSTOM_ATTRIBUTES_FORMATER) + formatter(auth_success, attrs) if pgt: pgtElement = etree.SubElement(auth_success, CAS + 'proxyGrantingTicket')