19 lines
739 B
Python
19 lines
739 B
Python
from authens.backends import ENSCASBackend, ENSCASError
|
|
from authens.utils import parse_entrance_year
|
|
|
|
from fiches.models import Profile
|
|
|
|
|
|
class BackendFiches(ENSCASBackend):
|
|
"""Wrapper around AuthENS's CAS authentication backend.
|
|
Ensures the required field promotion year is non-empty"""
|
|
|
|
def create_user(self, username, attributes):
|
|
"""create a CAS user
|
|
overwrite to add required promotion"""
|
|
user = super().create_user(username, attributes)
|
|
entrance_year = parse_entrance_year(attributes.get("homeDirectory"))
|
|
if entrance_year is None:
|
|
raise ENSCASError("Entrance year not available")
|
|
Profile.objects.create(user=user, promotion=entrance_year)
|
|
return user
|