Users should be deletable from the user management screen in control panel just like groups currently are.
The gist: Extend "disabled" to become "deleted" by adding a status in the XML and disabling a few API features; this would behave very similarly to deleted pages.
When a user is deleted, the user account gets flagged as "deleted". This isn't so different from being "disabled," but the API would have to return some sort of status in the XML.
Upon selection of user deletion, Deki:
Any user who is created with the same name as the deleted user will be treated as a new user.
Attribution to a user should not be lost, even if that user is deleted. A user being deleted, should means that the user is no longer allowed access to Deki, and that this user has "moved on." This shouldn't mean that the user never existed at all. I'm not a huge fan of attributing the changes to another user (in that case, why wouldn't a user just rename the user and disable them?)
My feeling is that the API would return information about this user in the page/file metadata, but somehow modify the XML to just return the username with some sort of deleted status message. This would allow the front-end to continue to display the attribution, but indicate a user has been deleted. For example:
Page last modified by RoyK.
Page last modified by RoyK.
I'm not sure what ramifications this has on the API, as it means that the API would have to block external access to this user's features (GET:user/=username), but still need be able to retrieve that information internally for return of metadata.
The upside of this approach is it does allow for "undelete", which means we could remove the "disable" functionality from Deki - disable would be delete, and we could easily undelete users as well. (And in the case of username conflicts, we can username renames).
Give admins a choice if they want to delete a user and remove any record of them (behavior#1) OR mark them as removed with attribution preserved (behavior#2).
In some cases a user simply needs to be deleted from the system -- as a simple undo from the user creation -- with no trace left of the user and the username freed up.
In other cases a user is no longer in the organization and others need to see previous work attributed back to them while seeing that the user is no longer active. This can be handled as described in behavior #2 above through an api attribute marking the user as disabled and the front end showing the user with a strikethrough.
This gives an admin a choice as to whether they want to permanently delete and free up the name or to simply mark the user as disabled.
If a user doesn't have contributions
User has contributions:
Contribution can be one or more of:
UI allows batch delete
API Feature: DELETE: user/{ID}
Returns 200 if a user is deleted
Returns an error code if user has contributions and cannot be deleted
Error raised if user references in tables:
Tables to have rows removed matching user reference
| Images 0 | ||
|---|---|---|
| No images to display in the gallery. |
Copyright © 2011 MindTouch, Inc. Powered by
Actually thinking a little deeper. It would often be good to keep the users home page also as there will likely be significant information there about who they were and the nature of their relationship to the site.
What really needs to be dis-entangled is "username which can login" from "page about username".