misc: cache SAML identifier model on logged user (#41949)
This commit is contained in:
parent
7b5ad08ad8
commit
2c6a051b4a
|
@ -306,12 +306,14 @@ class DefaultAdapter(object):
|
|||
name_id = saml_attributes['name_id_content']
|
||||
issuer = saml_attributes['issuer']
|
||||
try:
|
||||
user = self.get_users_queryset(idp, saml_attributes).get(
|
||||
saml_identifiers__name_id=name_id,
|
||||
saml_identifiers__issuer=issuer)
|
||||
saml_identifier = models.UserSAMLIdentifier.objects.select_related('user').get(
|
||||
name_id=name_id,
|
||||
issuer=issuer)
|
||||
user = saml_identifier.user
|
||||
user.saml_identifier = saml_identifier
|
||||
logger.info('looked up user %s with name_id %s from issuer %s', user, name_id, issuer)
|
||||
return user
|
||||
except User.DoesNotExist:
|
||||
except models.UserSAMLIdentifier.DoesNotExist:
|
||||
pass
|
||||
|
||||
user = self.lookup_by_attributes(idp, saml_attributes)
|
||||
|
@ -402,8 +404,10 @@ class DefaultAdapter(object):
|
|||
saml_id, created = models.UserSAMLIdentifier.objects.get_or_create(
|
||||
name_id=name_id, issuer=issuer, defaults={'user': user})
|
||||
if created:
|
||||
user.saml_identifier = saml_id
|
||||
return user
|
||||
else:
|
||||
saml_id.user.saml_identifier = saml_id
|
||||
return saml_id.user
|
||||
|
||||
def provision(self, user, idp, saml_attributes):
|
||||
|
|
Loading…
Reference in New Issue