mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-27 07:02:26 +00:00
Ajoute la possibilité d'utiliser uniquement le compte mail local.
This commit is contained in:
parent
680b8a7ec7
commit
49585cade1
2 changed files with 31 additions and 12 deletions
|
@ -15,7 +15,7 @@ class Migration(migrations.Migration):
|
||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name='user',
|
model_name='user',
|
||||||
name='email',
|
name='email',
|
||||||
field=models.EmailField(blank=True, help_text='External email address allowing us to contact you.', max_length=254),
|
field=models.EmailField(blank=True, null=True, help_text='External email address allowing us to contact you.', max_length=254),
|
||||||
),
|
),
|
||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name='user',
|
model_name='user',
|
||||||
|
|
|
@ -104,6 +104,7 @@ def linux_user_validator(login):
|
||||||
params={'label': login},
|
params={'label': login},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_fresh_user_uid():
|
def get_fresh_user_uid():
|
||||||
""" Renvoie le plus petit uid non pris. Fonction très paresseuse """
|
""" Renvoie le plus petit uid non pris. Fonction très paresseuse """
|
||||||
uids = list(range(
|
uids = list(range(
|
||||||
|
@ -131,6 +132,7 @@ def get_fresh_gid():
|
||||||
|
|
||||||
class UserManager(BaseUserManager):
|
class UserManager(BaseUserManager):
|
||||||
"""User manager basique de django"""
|
"""User manager basique de django"""
|
||||||
|
|
||||||
def _create_user(
|
def _create_user(
|
||||||
self,
|
self,
|
||||||
pseudo,
|
pseudo,
|
||||||
|
@ -197,6 +199,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
|
||||||
)
|
)
|
||||||
email = models.EmailField(
|
email = models.EmailField(
|
||||||
blank=True,
|
blank=True,
|
||||||
|
null=True,
|
||||||
help_text="External email address allowing us to contact you."
|
help_text="External email address allowing us to contact you."
|
||||||
)
|
)
|
||||||
local_email_redirect = models.BooleanField(
|
local_email_redirect = models.BooleanField(
|
||||||
|
@ -563,13 +566,15 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
|
||||||
user_ldap.gid = LDAP['user_gid']
|
user_ldap.gid = LDAP['user_gid']
|
||||||
if '{SSHA}' in self.password or '{SMD5}' in self.password:
|
if '{SSHA}' in self.password or '{SMD5}' in self.password:
|
||||||
# We remove the extra $ added at import from ldap
|
# We remove the extra $ added at import from ldap
|
||||||
user_ldap.user_password = self.password[:6] + self.password[7:]
|
user_ldap.user_password = self.password[:6] + \
|
||||||
|
self.password[7:]
|
||||||
elif '{crypt}' in self.password:
|
elif '{crypt}' in self.password:
|
||||||
# depending on the length, we need to remove or not a $
|
# depending on the length, we need to remove or not a $
|
||||||
if len(self.password)==41:
|
if len(self.password) == 41:
|
||||||
user_ldap.user_password = self.password
|
user_ldap.user_password = self.password
|
||||||
else:
|
else:
|
||||||
user_ldap.user_password = self.password[:7] + self.password[8:]
|
user_ldap.user_password = self.password[:7] + \
|
||||||
|
self.password[8:]
|
||||||
|
|
||||||
user_ldap.sambat_nt_password = self.pwd_ntlm.upper()
|
user_ldap.sambat_nt_password = self.pwd_ntlm.upper()
|
||||||
if self.get_shell:
|
if self.get_shell:
|
||||||
|
@ -614,7 +619,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
|
||||||
send_mail(
|
send_mail(
|
||||||
'Bienvenue au %(name)s / Welcome to %(name)s' % {
|
'Bienvenue au %(name)s / Welcome to %(name)s' % {
|
||||||
'name': AssoOption.get_cached_value('name')
|
'name': AssoOption.get_cached_value('name')
|
||||||
},
|
},
|
||||||
'',
|
'',
|
||||||
GeneralOption.get_cached_value('email_from'),
|
GeneralOption.get_cached_value('email_from'),
|
||||||
[self.email],
|
[self.email],
|
||||||
|
@ -657,8 +662,8 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
|
||||||
une machine inconnue sur le compte de l'user"""
|
une machine inconnue sur le compte de l'user"""
|
||||||
all_interfaces = self.user_interfaces(active=False)
|
all_interfaces = self.user_interfaces(active=False)
|
||||||
if all_interfaces.count() > OptionalMachine.get_cached_value(
|
if all_interfaces.count() > OptionalMachine.get_cached_value(
|
||||||
'max_lambdauser_interfaces'
|
'max_lambdauser_interfaces'
|
||||||
):
|
):
|
||||||
return False, "Maximum de machines enregistrees atteinte"
|
return False, "Maximum de machines enregistrees atteinte"
|
||||||
if not nas_type:
|
if not nas_type:
|
||||||
return False, "Re2o ne sait pas à quel machinetype affecter cette\
|
return False, "Re2o ne sait pas à quel machinetype affecter cette\
|
||||||
|
@ -961,7 +966,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
|
||||||
'force': self.can_change_force,
|
'force': self.can_change_force,
|
||||||
'selfpasswd': self.check_selfpasswd,
|
'selfpasswd': self.check_selfpasswd,
|
||||||
'local_email_redirect': self.can_change_local_email_redirect,
|
'local_email_redirect': self.can_change_local_email_redirect,
|
||||||
'local_email_enabled' : self.can_change_local_email_enabled,
|
'local_email_enabled': self.can_change_local_email_enabled,
|
||||||
}
|
}
|
||||||
self.__original_state = self.state
|
self.__original_state = self.state
|
||||||
|
|
||||||
|
@ -969,9 +974,22 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
|
||||||
"""Check if this pseudo is already used by any mailalias.
|
"""Check if this pseudo is already used by any mailalias.
|
||||||
Better than raising an error in post-save and catching it"""
|
Better than raising an error in post-save and catching it"""
|
||||||
if (EMailAddress.objects
|
if (EMailAddress.objects
|
||||||
.filter(local_part=self.pseudo.lower()).exclude(user_id=self.id)
|
.filter(local_part=self.pseudo.lower()).exclude(user_id=self.id)
|
||||||
):
|
):
|
||||||
raise ValidationError("This pseudo is already in use.")
|
raise ValidationError("This pseudo is already in use.")
|
||||||
|
if not self.local_email_enabled and not self.email:
|
||||||
|
raise ValidationError(
|
||||||
|
{'email': (
|
||||||
|
'There is neither a local email address nor an external'
|
||||||
|
' email address for this user.'
|
||||||
|
), }
|
||||||
|
)
|
||||||
|
if self.local_email_redirect and not self.email:
|
||||||
|
raise ValidationError(
|
||||||
|
{'local_email_redirect': (
|
||||||
|
'You cannot redirect your local email if no external email '
|
||||||
|
'has been set.'), }
|
||||||
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.pseudo
|
return self.pseudo
|
||||||
|
@ -1109,7 +1127,8 @@ def user_post_save(**kwargs):
|
||||||
Synchronise le ldap"""
|
Synchronise le ldap"""
|
||||||
is_created = kwargs['created']
|
is_created = kwargs['created']
|
||||||
user = kwargs['instance']
|
user = kwargs['instance']
|
||||||
EMailAddress.objects.get_or_create(local_part=user.pseudo.lower(), user=user)
|
EMailAddress.objects.get_or_create(
|
||||||
|
local_part=user.pseudo.lower(), user=user)
|
||||||
if is_created:
|
if is_created:
|
||||||
user.notif_inscription()
|
user.notif_inscription()
|
||||||
user.state_sync()
|
user.state_sync()
|
||||||
|
@ -1132,6 +1151,7 @@ def user_group_relation_changed(**kwargs):
|
||||||
mac_refresh=False,
|
mac_refresh=False,
|
||||||
group_refresh=True)
|
group_refresh=True)
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_delete, sender=Adherent)
|
@receiver(post_delete, sender=Adherent)
|
||||||
@receiver(post_delete, sender=Club)
|
@receiver(post_delete, sender=Club)
|
||||||
@receiver(post_delete, sender=User)
|
@receiver(post_delete, sender=User)
|
||||||
|
@ -1520,7 +1540,7 @@ class Request(models.Model):
|
||||||
hours=GeneralOption.get_cached_value(
|
hours=GeneralOption.get_cached_value(
|
||||||
'req_expire_hrs'
|
'req_expire_hrs'
|
||||||
)
|
)
|
||||||
))
|
))
|
||||||
if not self.token:
|
if not self.token:
|
||||||
self.token = str(uuid.uuid4()).replace('-', '') # remove hyphens
|
self.token = str(uuid.uuid4()).replace('-', '') # remove hyphens
|
||||||
super(Request, self).save()
|
super(Request, self).save()
|
||||||
|
@ -1810,4 +1830,3 @@ class EMailAddress(RevMixin, AclMixin, models.Model):
|
||||||
if "@" in self.local_part:
|
if "@" in self.local_part:
|
||||||
raise ValidationError("The local part cannot contain a @")
|
raise ValidationError("The local part cannot contain a @")
|
||||||
super(EMailAddress, self).clean(*args, **kwargs)
|
super(EMailAddress, self).clean(*args, **kwargs)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue