+1.1
+---
+
+* Logging SAML
+
+* synchro des données du serveur d'identités au login avec le user local
+
1.0
---
# -*- 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)
.. warning::
+ TODO : Demander à JC pour le dépôt AUF
+
+.. warning::
+
La version installée doit respecter ces versions:
* mod_mellon >= 0.4
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**::
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
+ }
+
from setuptools import setup, find_packages
name = 'auf.django.saml'
-version = '1.0'
+version = '1.1'
setup(name=name,
version=version,