As proposed by callumacrae, I suggest that a new feature be added in 3.2 that allows users to delete themselves, if given permission.
Of course, there should be multiple levels of deletion, as described in this post by EXreaction:
Also, there should be a way for user accounts to be undeleted by administrators (and, if they have permission, the user that has been deleted). For the former, there could be a simple button in the user management area. For the latter, where the user undeletes his/her own account, we might be able to do something like facebook does. When you deactivate your Facebook account, you can easily reactivate it by simply logging back in. Of course, this should be able to be disabled if the adminsitrators want the user's account to stay deleted until the staff feel comfortable undeleting it.So what I see wanted is a few options:
No deleting of accounts allowed
"Soft" deleting of accounts allowed (keep the user's profile information, but anomalize the account to the public)
Profile deleting of accounts allowed (this would delete all information of that user's profile but keep important content to the forum like posts (anomalized))
Complete removal of accounts allowed (this would remove everything, including posts)
The last three should be deletion options for the user account as well from the user management in the ACP
Permission setting for users to delete their own accounts, global settings for the method of deleting and global allowing of deleting
Something that should be discussed is how to handle "deleted" accounts. For the second and third option in the quoted section above, the username (at least, but possibly also the email) should be disallowed for future registrations to prevent complications if the account needs to be undeleted. For the final option above, that won't matter as the account will be removed from the database totally. In any case, for the second and third options, the user's information should be viewed as Anonymous for all normal users, whereas authorized users should still be able to see the user's information (with a flag or notice saying that the user's account has been deleted).
So... anything I missed? Comments? Suggestions?
See Ticket.
EDIT: BTW, I am currently working on this feature, but if someone else wants to as well we can see whose implementation is better.