Today when a user is disabled by inapropiate behavior or when the account was not activated yet, Noosfero hide by setting
and changing its password, but there is no real way to disable profiles. The profile should be notified when some env admin disable then.
Its is necessary to review all fields related to it, like: active, validated, visible, enabled and blocked.
Also, environment admin needs a way to browse in disabled profiles.
- Disabled users shouldn't login
- All content, comment and tracked actions should be hide
- Profile itself should not be listed among others profiles
- 20 Oct 2011
I've made some contributions to [ProfileFlags] that may help with the use of fields to implement this
- 23 Oct 2011
We noticed that is necessary to have this "disable" behaviour to all of our models. So we'll now extend this ActionItem
to be "Disable Models", instead of "Disable Profiles".
The "disabled" status means that the model is completely inaccessible to common users. Only the environment administrators and the "owner" of the model will be able to see this models. All of the visualizations of the disabled models must contain any visual information that indicates the disabled status. Also, in every disabled model must be a way (button, link, etc;) to enable the model again or ask for reenable (in the case of the owner of de model).
For example, if I have a blog and the administrator disabled my blog, I, as the owner of the blog, must be able to see it.
Every model that is considered "son" of another, carries the father's disabled status (disabled or not).
All the models with this hability will have methods #disable and #enable that, respectively, disables and enables itself and all it's children.
The features that already implements some kind of behaviour alike this one (abuse report, email confirmation on sign up) must be refactored to work accordingly with this specification.
It's desirable that every list of objects retrieved from the database be transparently filtered, based on the correct disabled status, according to the user. This will avoid the need of remembering to filter every query.
Every disabled model can't have any new child created. It's frozen until reenabled. For so, there must be a way of each model define what models are its children and the contrary too.
Also, there must be a way to change the permissions of the files that are child of a disabled folder. For example, if the administrator disable a folder due to inappropriate files, this files will still be accessible on Apache level. The proposal for this problem is to iterate recursively over the folder change the permission of each file, since our file sctructure does not preserves Noosfero's file structure.
Oops, the link hadn't worked: ProfileFlags
I think this really look like a soft delete problem, which is very problematic do solve.
I advice you to look for default_scope (there is a port for rails 2.1). But maybe it is not the case for it, cause this disabled behavious make them still visible but limited.
Of the 4 flags we have in ProfileFlags
, the one it is completely useless is activated.
The name is not totally nice for this case; but also a flag disabled would conflict with the enabled, which means something different, for enterprises, but this may be the solution for the Profile model and maybe other models.
Really don't know, just brainstorming…
- 06 Nov 2011