2.6 KiB
2024-10-03
Plan (constantly changing as per what's below)
signup.jsonly says "email already used" if the one that's already been used is confirmed.- "change email" needs to follow the same logic; show an error when an email already exists on an account with a confirmed email. Then, upon confirming the update, Ensure that in the meanwhile no new account came up with that email set.
NEXT: figure out where email change is handled on backend (prior to confirmation) and see what checks are performed.
Email duplicate check on confirmation
- signup.js:149 -> this is where email dupe is currently checked
- signup.js:290 -> This is where we send the confirmation email. There is also a branch that sends a "confirm token". I don't recall what this is for.
Investigating the "confirm token"
- email template is
email_verification_codeinstead ofemail_verification_link - This happens when either:
- user.requires_email_confirmation is TRUE
- send_confirmation_code is TRUE in REQUEST
Figuring out when requires_email_confirmation is TRUE
I'm mostly curious about this state on a user.
It's strange that signup.js would do anything on EXISTING users.
pseudo_usermay be populated ifreq.body.emailexists AND a user with no password exists with that emailuuid_usermay be populated if a user exists with the specified UUID, but it has no usefulness unlessuuid_userhas the same id aspseudo_user.
uuid_user is only used to set email_confirmation_required to 0
IFF pseudo_user has same id as uuid_user
AND psuedo_user has an email
When does pseudo_user have an email?
Figuring out when a pseudo user can have an email
- asking NJ, I'm at a loss on this one for the moment
Figuring out if account takeover is possible on signup.js with a uuid
- Nope, looks like
uuid_useris only used to setemail_confirmation_required = 0
Figuring out when send_confirmation_code is TRUE in REQUEST
- IFF
require_email_verification_to_publish_websiteis TRUE- it's not currently, but we need this to be possible to enable
- ^ That seems to be the ONLY place when this matters
Current Thoughts
-
email_verification_codewill be difficult to test because there is nothing currently in the system that's using it. However, I could try enablingrequire_email_verification_to_publish_websitelocally and see if this behavior begins to work as expected. -
email_verification_linkwhere we can confirm an email. If another email was already confirmed since the time the link was sent, we need to display an error message to the user.