diff --git a/src/backend/InvenTree/InvenTree/management/commands/remove_mfa.py b/src/backend/InvenTree/InvenTree/management/commands/remove_mfa.py index 1acceeb1ed..a7a1a038dd 100644 --- a/src/backend/InvenTree/InvenTree/management/commands/remove_mfa.py +++ b/src/backend/InvenTree/InvenTree/management/commands/remove_mfa.py @@ -28,7 +28,16 @@ class Command(BaseCommand): if len(mfa_user) == 0: logger.warning('No user with this mail associated') elif len(mfa_user) > 1: - logger.error('More than one user found with this mail') + emails_list = ', '.join( + sorted( + {b.email for a in mfa_user for b in a.emailaddress_set.all()} + | {a.email for a in mfa_user} + ) + ) + usernames_list = ', '.join(sorted({a.username for a in mfa_user})) + logger.error( + f"Multiple users found with the provided email; Usernames: '{usernames_list}', Emails: '{emails_list}'" + ) else: # and clean out all MFA methods auths = mfa_user[0].authenticator_set.all() diff --git a/src/backend/InvenTree/InvenTree/test_commands.py b/src/backend/InvenTree/InvenTree/test_commands.py index 43e143e91b..a83a0d4cc2 100644 --- a/src/backend/InvenTree/InvenTree/test_commands.py +++ b/src/backend/InvenTree/InvenTree/test_commands.py @@ -34,17 +34,25 @@ class CommandTestCase(TestCase): self.assertIn('No user with this mail associated', str(cm[1])) # correct removal - my_admin = User.objects.create_user(username='admin', email='admin@example.org') - my_admin.authenticator_set.create(type='TOTP', data={}) - self.assertEqual(my_admin.authenticator_set.all().count(), 1) + my_admin1 = User.objects.create_user( + username='admin', email='admin@example.org' + ) + my_admin1.authenticator_set.create(type='TOTP', data={}) + self.assertEqual(my_admin1.authenticator_set.all().count(), 1) output = call_command('remove_mfa', 'admin@example.org', verbosity=0) self.assertEqual(output, 'done') - self.assertEqual(my_admin.authenticator_set.all().count(), 0) + self.assertEqual(my_admin1.authenticator_set.all().count(), 0) # two users with same email - User.objects.create_user(username='admin2', email='admin@example.org') + my_admin2 = User.objects.create_user( + username='admin2', email='admin@example.org' + ) + my_admin2.emailaddress_set.create(email='456') + my_admin2.emailaddress_set.create(email='123') with self.assertLogs('inventree') as cm: self.assertFalse( call_command('remove_mfa', 'admin@example.org', verbosity=0) ) - self.assertIn('More than one user found with this mail', str(cm[1])) + self.assertIn('Multiple users found with the provided email', str(cm[1])) + self.assertIn('admin, admin2', str(cm[1])) + self.assertIn('123, 456, admin@example.org', str(cm[1]))