[bug] Handle duplicate email addresses for magic links (#12621)

This commit is contained in:
Oliver
2026-08-11 23:49:53 +10:00
committed by GitHub
parent 7a935f6055
commit 77d8470141
2 changed files with 15 additions and 0 deletions
@@ -69,6 +69,9 @@ class GetSimpleLoginView(GenericAPIView):
return User.objects.get(email=email) return User.objects.get(email=email)
except User.DoesNotExist: except User.DoesNotExist:
return None return None
except User.MultipleObjectsReturned:
logger.warning('Multiple users found with email: %s', email)
return None
def create_link(self, user): def create_link(self, user):
"""Create a login link for this user.""" """Create a login link for this user."""
+12
View File
@@ -1708,6 +1708,18 @@ class MagicLoginTest(InvenTreeTestCase):
# And we should be logged in again # And we should be logged in again
self.assertEqual(resp.wsgi_request.user, self.user) self.assertEqual(resp.wsgi_request.user, self.user)
def test_duplicate_email(self):
"""Test that duplicate email addresses do not raise a server error."""
User = get_user_model()
User.objects.create_user(
username='duplicate', email=self.user.email, password='password'
)
resp = self.client.post(reverse('sesame-generate'), {'email': self.user.email})
self.assertEqual(resp.status_code, 200)
self.assertEqual(resp.data, {'status': 'ok'})
self.assertEqual(len(mail.outbox), 0)
class MaintenanceModeTest(InvenTreeTestCase): class MaintenanceModeTest(InvenTreeTestCase):
"""Unit tests for maintenance mode.""" """Unit tests for maintenance mode."""