Comments (10)
I like the way Reddit handles deleted accounts. The account's comments stay put, but are attributed to "(deleted)".
There's a difference between data an account has contributed and other people depend on (classifications, comments) and data they're working on (projects, workflows, collections/subject sets, subjects). I'd say keep the former (not displaying the original username) and remove the latter.
from panoptes.
After chatting with @chrislintott @ttfnrob and @brian-c the following is proposed when a user deletes
their account.
- Remove their personal information (email) and hash their login name. Replace any display name with an anonymous human readable name for talk, legacy display, etc.
- Disable any active projects they currently own even if currently active for classifications. We can always transfer ownership and reactivate the project.
- Do not delete any information that the user contributed as the science for understanding classifications only makes sense in regard to the project and classifying workflows.
- As long as we aren't storing any personal information across the system there is no need to delete it.
Thoughts?
from panoptes.
I'm up for that approach. I think it's a bit weird to leave comments in place with a "deleted user" name, but that's just me.
from panoptes.
I think the point is itโs very weird if bits of a threaded discussion disappear - especially if the discussion as a whole is useful.
Chris
On 6 Jun 2014, at 15:03, Michael Parrish [email protected] wrote:
I'm up for that approach. I think it's a bit weird to leave comments in place with a "deleted user" name, but that's just me.
โ
Reply to this email directly or view it on GitHub.
from panoptes.
I should also have mentioned we mark the user account as disabled as well.
from panoptes.
I should also have mentioned we mark the user account as disabled as well.
I figured
I think the point is itโs very weird if bits of a threaded discussion disappear - especially if the discussion as a whole is useful.
We currently allow comments to be deleted, so that's not that weird.
I guess a good example of when you'd like to hang onto a deleted users' comments is when a productive/helpful user deletes their account (ala _why or Mark Pilgrim).
from panoptes.
@edpaget - i like the Activateable concern for activated_state field and enable!/disable! methods but would prefer to extract the traversable relation proxy to a PORO that accepts a container of instances calling activate!/deactivate on each instance.
I don't think the model should mutate state on it's relations. Instead when disabling a user / usergroup / project we can pass the list of relations to the activation PORO via the controller. We can test the PORO separately and ensure it's being called in integration / controller tests.
Thoughts?
from panoptes.
@camallen can you tell me if the following senario is similar to what you're envisioning?
PATCH /users/2
[
{ "op": "replace", "path": "/users/1/activated_state", "value": "inactive" }
]
users_controller.rb
def update
# some other stuff happens
user.disable!
ActivationProxy.new(user, :collections, :projects, :memberships).disable_each!
end
activation_proxy.rb
class ActivationProxy
def initialize(instance, *relations)
@instance = instance
@relations = relations
end
def disable_each
@relations.each do |r|
@instance.send(r).each{ |m| m.disable! }
end
end
Or should it actually be passing each object in the relation to the proxy instead?
from panoptes.
Yeah pretty much, perhaps a class method to disable all instances it receives.
users_controller.rb
def update
# some other stuff happens
user.disable!
related_instances_to_disable = user.collections | user.projects | user.memberships
ActivationProxy.disable_instances!(related_instances_to_disable)
end
activation_proxy.rb
class ActivationProxy
def self.disable_instances!(instances=[])
instances.each do |i|
i.disable!
end
end
end
from panoptes.
I think we've sorted this one via #39 and #46
from panoptes.
Related Issues (20)
- Allow admins to update user project preferences HOT 1
- Add avatar_src to the Panoptes JWT HOT 4
- Add "training" designation to workflows that should not keep projects active HOT 1
- API always startes at Page 1 when asking for subjects HOT 1
- Field guide's attached images not included in project copy HOT 1
- Owner/collab read permissions for Project Preferences HOT 2
- Deleting a subject set removes subjects that are still members of other sets HOT 5
- Talk Users are not created with project copy HOT 1
- Add favorite status to recents response
- Request user_groups not linked to individual users HOT 1
- rubygems-update requires ruby 3, breaking docker image creation
- subject_set_id filter doesn't retrieve all the subjects for a subject set HOT 7
- Reset email validity on change of email address HOT 1
- Able to add soft-deleted subjects to subject set HOT 2
- Living Sailor uses 2MB subject images HOT 6
- Should Workflow Version also track changes to Steps? HOT 1
- Check for unwanted subject deletion via set_member_subjects or subjects controllers HOT 2
- Email notification for email address change should be sent to old address HOT 4
- A copied workflow with survey task does not show images linked to survey task HOT 5
- Change automatic email notifications for project status changes HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from panoptes.