I'm developing an app that will target almost every segment of the general population and the login will be done with the user email. My question is, should I absolutely allow a user to change his email address?
Is any data connected to the login account? Then yes. People want to keep their stuff when they change email just like when they move houses.
Is there no data connected to the login account? Then why have a login at all?
The e-mail address is a way for you to notify/warn/inform users outside their account. If users prefer to use a different address for that kind of communication, let them change it. So from UX perspective I would call it essential.
For accounts that use an email address as login name you can give the option to add antoher e-mail address for notifications etc.
Assuming that the Email id is the primary source of account confirmation/communication, IMO..
- Let your user add Secondary email ids (as in Facebook/other products) they may own but ask them to verify the id before permanently adding the same in the master DB.
- Let the user change the Primary email id with a Secondary id iff the Secondary id is verified and is not used by any other account. This will ensure that the ids are not misused.
I think this will ensure that both the frontend and the backend are kept clean/tidy.
Use email for sign-in not database ID
Good thing: Allowing users to sign in with their email rather than an arbitrary user name.
Bad thing: Hard-coding that address in the database as the unique identifier.
The email should just be a property of some GUID in the database. If the user changes addresses or decides to use an alternate as their primary, don't let your system architecture stop them.