1.1
authorOlivier Larchevêque <olivier.larcheveque@gmail.com>
Wed, 2 May 2012 06:18:10 +0000 (02:18 -0400)
committerOlivier Larchevêque <olivier.larcheveque@gmail.com>
Wed, 2 May 2012 06:18:10 +0000 (02:18 -0400)
.gitignore
CHANGES
auf/django/saml/middleware.py
doc/deploiement.rst
setup.py

index 366cf68..d147904 100644 (file)
@@ -17,3 +17,4 @@ src/*
 
 *-info
 doc/_*
+dist
diff --git a/CHANGES b/CHANGES
index c34c6c7..e78812f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,10 @@
+1.1
+---
+
+* Logging SAML
+
+* synchro des données du serveur d'identités au login avec le user local
+
 1.0
 ---
 
index a14a186..89ee0aa 100644 (file)
@@ -1,11 +1,36 @@
 # -*- coding: utf-8 -*-
 
+import logging
+from django.contrib.auth.signals import user_logged_in
 from django.contrib.auth.middleware import RemoteUserMiddleware
-from auf.django.saml import settings
+from auf.django.saml import settings as saml_settings
+
 
 class SPMiddleware(RemoteUserMiddleware):
 
     def process_request(self, request):
-        if not settings.SAML_AUTH:
+        """
+        Log MELLON an REMOTE_USER
+        """
+        logger = logging.getLogger('SAML')
+        for k, v in request.META.items():
+            if k.startswith('MELLON') or k is 'REMOTE_USER':
+                logger.info('%s : %s' % (k, v))
+
+        if not saml_settings.SAML_AUTH:
             return
         return super(SPMiddleware, self).process_request(request)
+
+
+def configure_user(sender, request, user, *args, **kwargs):
+    """
+    Au login, on synchronise les infos du serveur d'identités
+    avec le user local
+    """
+    meta = request.META
+    user.email = meta['MELLON_mail']
+    user.first_name = meta['MELLON_gn']
+    user.last_name = meta['MELLON_sn']
+    user.save()
+
+user_logged_in.connect(configure_user)
index a55fe49..9c1e224 100644 (file)
@@ -19,6 +19,10 @@ Installer Mellon
 
 .. warning::
 
+    TODO : Demander à JC pour le dépôt AUF
+
+.. warning::
+
     La version installée doit respecter ces versions:
     
     * mod_mellon >= 0.4
@@ -39,8 +43,8 @@ Créer un nouveau host
 Ajout d'un host dans le fichier *etc/hosts*, exemple ici: **olarcheveque**
 
 
-Créer fichiers pour communiquer avec le serveur d'identités
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+Créer les fichiers pour communiquer avec le serveur d'identités
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
 **metadata.xml**::
 
@@ -83,3 +87,33 @@ dans /etc/site-available/olarcheveque:
 
   Ne pas oublier d'activer le vhost avec **a2ensite**.
 
+Déboggage
+=========
+
+.. versionadded:: 1.1
+
+    Les variables transférées par mellon peuvent être loggées
+    pour fin d'examen.
+
+Exemple de configuration de LOGGING dans *project/conf.py*::
+
+    import os
+    from django.conf.global_settings import LOGGING as DEFAULT_LOGGING
+
+    PROJECT_ROOT = os.path.dirname(__file__)
+    SITE_ROOT = os.path.dirname(PROJECT_ROOT)
+    
+    LOGGING = DEFAULT_LOGGING
+
+    LOGGING['handlers']['file'] = {
+        'level':'DEBUG',
+        'class':'logging.FileHandler',
+        'filename': os.path.join(SITE_ROOT, 'django.log'),
+    }
+
+    LOGGING['loggers']['SAML'] = {
+        'handlers': ['file', ],
+        'level': 'DEBUG',
+        'propogate': False
+        }
+
index d4e3aed..767e741 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
 from setuptools import setup, find_packages
 
 name = 'auf.django.saml'
-version = '1.0'
+version = '1.1'
 
 setup(name=name,
       version=version,