File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1818
1919from osf .exceptions import UserStateError
2020from osf .models .base import Guid
21- from osf .models .user import OSFUser
21+ from osf .models .user import OSFUser , Email
2222from osf .models .spam import SpamStatus
2323from framework .auth import get_user
2424from framework .auth .core import generate_verification_key
@@ -411,6 +411,19 @@ def form_valid(self, form):
411411
412412 user = self .get_object ()
413413 address = form .cleaned_data ['new_email' ].strip ().lower ()
414+
415+ existing_email = Email .objects .filter (address = address ).first ()
416+ if existing_email :
417+ if existing_email .user == user :
418+ messages .error (self .request , f'Email { address } is already confirmed for this user.' )
419+ else :
420+ messages .error (self .request , f'Email { address } already exists in the system and is associated with another user.' )
421+ return super ().form_valid (form )
422+
423+ if address in user .unconfirmed_emails :
424+ messages .error (self .request , f'Email { address } is already pending confirmation for this user.' )
425+ return super ().form_valid (form )
426+
414427 try :
415428 user .add_unconfirmed_email (address )
416429
You can’t perform that action at this time.
0 commit comments