Regarde d'abord dans CASAccount puis dans OldCASAccount pour la connexion vieilleux

This commit is contained in:
Tom Hubrecht 2021-01-21 23:23:16 +01:00
parent ef08eab248
commit 830309225a

View file

@ -73,6 +73,14 @@ class ENSCASBackend:
i += 1 i += 1
return radical + str(i) return radical + str(i)
def create_user(self, username, attributes):
"""Create a CAS user, base method that can be overrided to add more
information.
"""
email = attributes.get("email")
return UserModel.objects.create_user(username=username, email=email)
def _get_or_create(self, cas_login, attributes): def _get_or_create(self, cas_login, attributes):
"""Handles account retrieval, creation and invalidation as described above. """Handles account retrieval, creation and invalidation as described above.
@ -82,7 +90,6 @@ class ENSCASBackend:
- If a matching CAS account exists, retrieve it. - If a matching CAS account exists, retrieve it.
""" """
email = attributes.get("email")
entrance_year = parse_entrance_year(attributes.get("homeDirectory")) entrance_year = parse_entrance_year(attributes.get("homeDirectory"))
if entrance_year is None: if entrance_year is None:
raise ENSCASError("Entrance year not available") raise ENSCASError("Entrance year not available")
@ -103,7 +110,7 @@ class ENSCASBackend:
if user is None: if user is None:
username = self.get_free_username(cas_login, attributes) username = self.get_free_username(cas_login, attributes)
user = UserModel.objects.create_user(username=username, email=email) user = self.create_user(username, attributes)
CASAccount.objects.create( CASAccount.objects.create(
user=user, entrance_year=entrance_year, cas_login=cas_login user=user, entrance_year=entrance_year, cas_login=cas_login
) )
@ -130,10 +137,16 @@ class OldCASBackend:
return return
try: try:
old_cas_acc = OldCASAccount.objects.get( try:
cas_login=cas_login, entrance_year=entrance_year cas_acc = CASAccount.objects.get(
) cas_login=cas_login, entrance_year=entrance_year
user = old_cas_acc.user )
user = cas_acc.user
except CASAccount.DoesNotExist:
old_cas_acc = OldCASAccount.objects.get(
cas_login=cas_login, entrance_year=entrance_year
)
user = old_cas_acc.user
except OldCASAccount.DoesNotExist: except OldCASAccount.DoesNotExist:
# As in Django's ModelBackend, we run the password hasher once # As in Django's ModelBackend, we run the password hasher once
# to mitigate timing attacks # to mitigate timing attacks