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?
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.