checking transition domains on each login rather than on first login only

This commit is contained in:
David Kennedy 2023-11-07 15:01:02 -05:00
parent 4311c9289c
commit 93370d45c2
No known key found for this signature in database
GPG key ID: 6528A5386E66B96B
7 changed files with 17 additions and 17 deletions

View file

@ -136,7 +136,7 @@ class DomainInvitation {
--
}
DomainInvitation -- Domain
DomainInvitation .[#green].> UserDomainRole : User.first_login()
DomainInvitation .[#green].> UserDomainRole : User.on_each_login()
actor applicant #Red
applicant -d-> DomainApplication : **/register**

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Before After
Before After

View file

@ -49,13 +49,13 @@ class OpenIdConnectBackend(ModelBackend):
user, created = UserModel.objects.update_or_create(**args)
if created:
user = self.configure_user(user, **kwargs)
# run a newly created user's callback for a first-time login
user.first_login()
else:
try:
user = UserModel.objects.get_by_natural_key(username)
except UserModel.DoesNotExist:
return None
# run this callback for a each login
user.on_each_login()
return user
def clean_username(self, username):

View file

@ -154,10 +154,10 @@ class User(AbstractUser):
new_domain_info = DomainInformation(creator=self, domain=domain)
new_domain_info.save()
def first_login(self):
"""Callback when the user is authenticated for the very first time.
def on_each_login(self):
"""Callback each time the user is authenticated.
When a user first arrives on the site, we need to retrieve any domain
When a user arrives on the site each time, we need to retrieve any domain
invitations that match their email address.
We also need to check if they are logging in with the same e-mail

View file

@ -609,9 +609,9 @@ class TestInvitations(TestCase):
self.invitation.retrieve()
self.assertEqual(self.invitation.status, DomainInvitation.RETRIEVED)
def test_retrieve_on_first_login(self):
"""A new user's first_login callback retrieves their invitations."""
self.user.first_login()
def test_retrieve_on_each_login(self):
"""A user's authenticate on_each_login callback retrieves their invitations."""
self.user.on_each_login()
self.assertTrue(UserDomainRole.objects.get(user=self.user, domain=self.domain))
@ -640,19 +640,19 @@ class TestUser(TestCase):
User.objects.all().delete()
def test_check_transition_domains_on_login(self):
"""A new user's first_login callback checks transition domains.
"""A user's on_each_login callback checks transition domains.
Makes DomainInformation object."""
self.domain, _ = Domain.objects.get_or_create(name=self.domain_name)
self.user.first_login()
self.user.on_each_login()
self.assertTrue(DomainInformation.objects.get(domain=self.domain))
def test_check_transition_domains_without_domains_on_login(self):
"""A new user's first_login callback checks transition domains.
"""A user's on_each_login callback checks transition domains.
This test makes sure that in the event a domain does not exist
for a given transition domain, both a domain and domain invitation
are created."""
self.user.first_login()
self.user.on_each_login()
self.assertTrue(Domain.objects.get(name=self.domain_name))
domain = Domain.objects.get(name=self.domain_name)

View file

@ -237,7 +237,7 @@ class TestLogins(TestCase):
user, user_created = User.objects.get_or_create(
email=invite.email, username=invite.email
)
user.first_login()
user.on_each_login()
# Analyze the tables
expected_total_transition_domains = 8

View file

@ -1431,8 +1431,8 @@ class TestDomainManagers(TestDomainOverview):
new_user = User.objects.create(username=EMAIL, email=EMAIL)
# log them in to `self.app`
self.app.set_user(new_user.username)
# and manually call the first login callback
new_user.first_login()
# and manually call the on each login callback
new_user.on_each_login()
# Now load the home page and make sure our domain appears there
home_page = self.app.get(reverse("home"))