|
@@ -14,43 +14,6 @@ from django.core import exceptions
|
|
|
import logging
|
|
|
|
|
|
|
|
|
-class LdapUser(ldapdb.models.Model):
|
|
|
- # TODO: déplacer ligne suivante dans settings.py
|
|
|
- base_dn = "ou=users,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR"
|
|
|
- object_classes = ['inetOrgPerson', 'organizationalPerson', 'person', 'top']
|
|
|
-
|
|
|
- uid = CharField(db_column='uid', unique=True, max_length=255)
|
|
|
- nick_name = CharField(db_column='cn', unique=True, primary_key=True,
|
|
|
- max_length=255)
|
|
|
- first_name = CharField(db_column='givenName', max_length=255)
|
|
|
- last_name = CharField(db_column='sn', max_length=255)
|
|
|
- display_name = CharField(db_column='displayName', max_length=255,
|
|
|
- blank=True)
|
|
|
- password = CharField(db_column='userPassword', max_length=255)
|
|
|
-
|
|
|
- def __unicode__(self):
|
|
|
- return self.display_name
|
|
|
-
|
|
|
- class Meta:
|
|
|
- managed = False # Indique à South de ne pas gérer le model LdapUser
|
|
|
-
|
|
|
-#Indique à South de ne pas gérer le model LdapUser
|
|
|
-add_ignored_fields(["^ldapdb\.models\.fields"])
|
|
|
-
|
|
|
-
|
|
|
-# Lors de la sauvegarde d'un utilisateur Ldap, cette fonction est exécutée
|
|
|
-# avant la sauvegare pour chiffrer le mot de passe s'il est définit
|
|
|
-# et s'il n'est pas déjà chiffré
|
|
|
-@receiver(pre_save, sender=LdapUser)
|
|
|
-def change_password(sender, instance, **kwargs):
|
|
|
- # Si le mot de passe est définit et n'est pas déjà chiffré,
|
|
|
- # alors ça le chiffre
|
|
|
- if instance.password and not instance.password.startswith('{SSHA}'):
|
|
|
- salt = os.urandom(8).encode('hex')
|
|
|
- digest = hashlib.sha1(instance.password + salt).digest()
|
|
|
- instance.password = '{SSHA}' + base64.b64encode(digest + salt)
|
|
|
-
|
|
|
-
|
|
|
class Member(models.Model):
|
|
|
|
|
|
MEMBER_TYPE_CHOICES = (
|
|
@@ -135,6 +98,45 @@ class MembershipFee(models.Model):
|
|
|
return (u'%s - %s - %i€' % (self.member, self.start_date, self.amount))
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+class LdapUser(ldapdb.models.Model):
|
|
|
+ # TODO: déplacer ligne suivante dans settings.py
|
|
|
+ base_dn = "ou=users,ou=unix,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR"
|
|
|
+ object_classes = ['inetOrgPerson', 'organizationalPerson', 'person', 'top']
|
|
|
+
|
|
|
+ uid = CharField(db_column='uid', unique=True, max_length=255)
|
|
|
+ nick_name = CharField(db_column='cn', unique=True, primary_key=True,
|
|
|
+ max_length=255)
|
|
|
+ first_name = CharField(db_column='givenName', max_length=255)
|
|
|
+ last_name = CharField(db_column='sn', max_length=255)
|
|
|
+ display_name = CharField(db_column='displayName', max_length=255,
|
|
|
+ blank=True)
|
|
|
+ password = CharField(db_column='userPassword', max_length=255)
|
|
|
+
|
|
|
+ def __unicode__(self):
|
|
|
+ return self.display_name
|
|
|
+
|
|
|
+ class Meta:
|
|
|
+ managed = False # Indique à South de ne pas gérer le model LdapUser
|
|
|
+
|
|
|
+#Indique à South de ne pas gérer le model LdapUser
|
|
|
+add_ignored_fields(["^ldapdb\.models\.fields"])
|
|
|
+
|
|
|
+
|
|
|
+# Lors de la sauvegarde d'un utilisateur Ldap, cette fonction est exécutée
|
|
|
+# avant la sauvegare pour chiffrer le mot de passe s'il est définit
|
|
|
+# et s'il n'est pas déjà chiffré
|
|
|
+@receiver(pre_save, sender=LdapUser)
|
|
|
+def change_password(sender, instance, **kwargs):
|
|
|
+ # Si le mot de passe est définit et n'est pas déjà chiffré,
|
|
|
+ # alors ça le chiffre
|
|
|
+ if instance.password and not instance.password.startswith('{SSHA}'):
|
|
|
+ salt = os.urandom(8).encode('hex')
|
|
|
+ digest = hashlib.sha1(instance.password + salt).digest()
|
|
|
+ instance.password = '{SSHA}' + base64.b64encode(digest + salt)
|
|
|
+
|
|
|
+
|
|
|
@receiver(post_save, sender=Member)
|
|
|
def sync_ldap(sender, instance, created, **kwargs):
|
|
|
"""
|