> Just to toss some gas on the fire, I'd say that "delete" falls in this
> category as well.

How is delete fundamentally different from editing a page to contain
nothing? I realize that there's some difference (unlinking) but I'm leery of
making any change that requires modifications to the security model: it took
forever to get it to the point it is now, which I believe to be fairly
elegant and reasonably easy to understand. 

Rename is fundamentally different because it's a *batch operation*. That's
actually why it's a problem: because it makes something easier to do than to
undo. If we were to have real changesets ala some of the more sophisticated
SCC systems (FlexWiki is a version control system), then undo would be
trivial, and the problem would be much less severe. 

So there are two solutions to the problem: 

1) Make it easier to undo batch changes. Perhaps a "roll back wiki to point
in time" administrative function. Or "undo all changes for user X". Or some
combination. Or go completely insane and implement changesets or atomic
operations (unlikely). 
2) Restrict who can use rename. 

IIRC, we've already got a simple version of #2, in that I believe you can
turn off rename altogether via configuration. After thinking about it for a
few minutes, I think it would be reasonable to add permissions for rename
based on namespace permissions. You'd add a property, let's call it
"AllowRename" and set it to one of three values: "all", "NamespaceEditors",
"NamespaceManagers". If set to "all", anyone could rename. If set to
"Editors", then only people with edit permission at the namespace level
could use rename. If set to "NamespaceManagers", then only people with
ManageNamespace could use rename. 

In truth, we could probably get by with just "all" and "NamespaceManagers"
because it's unlikely that rename would work for anyone without Edit anyway
- rename is implemented by the web app, not by the engine, and as such the
engine just sees it as a series of edits against topics, so you need edit on
every page you're trying to modify [1]. This is another reason I think it's
a bad idea to add a special permission for rename: because it would cut
across layers. 

Anyway, if you did that, you'd have the ability to restrict rename to be
either a) essentially an administrative function or b) a convenience for
users with edit permission. On an authenticated wiki (b) is probably good
enough. On a public wiki (a) is probably good enough. Adding in some sort of
namespace-level rollback functionality would cover 80% of the remaining 20%
after that. 

[1] In fact, there's a minor bug in rename right now such that if you do a
rename with update and you only have permission to edit some of the topics,
the rename will barf partway through, having updated only some topics.



-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Flexwiki-users mailing list
Flexwiki-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flexwiki-users

Reply via email to