Changed from custom attribute callback to signal for collecting custom attributes.
[django-cas-provider.git] / cas_provider / views.py
index a0847b9..e896fba 100644 (file)
@@ -247,6 +247,7 @@ def ticket_validate(service, ticket_string, pgtUrl):
                     pgt = None
 
     user = ticket.user
+    ticket.delete()
     return _cas2_sucess_response(user, pgtIouId, proxies)
 
 
@@ -335,12 +336,14 @@ 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:
-            formater = get_callable(settings.CAS_CUSTOM_ATTRIBUTES_FORMATER)
-            formater(auth_success, attrs)
+    attrs = {}
+    for receiver, response in signals.cas_collect_custom_attributes.send(user):
+        if response:
+            attrs.update(response)
+
+    if attrs:
+        formatter = get_callable(settings.CAS_CUSTOM_ATTRIBUTES_FORMATER)
+        formatter(auth_success, attrs)
 
     if pgt:
         pgtElement = etree.SubElement(auth_success, CAS + 'proxyGrantingTicket')