On 02/24/2011 04:58 PM, Lukapt wrote:
Hi,
I'm trying to set rights over a document automatically.
In my wiki i have the "Publication" concept. Each Publication has one or
more authors. Each author is an "Researcher" that is directly related to an
XWikiUser. What I want to do is to set editing rights only for the authors
of that publication. If I add (or remove) an author he should be able (not
able) to edit the document.
What i thought first was to check and add user rights every time the
document was loaded. However this didn't worked because, initially, users
don't have rights to add new rights (lol). That doesn't seemed a good
practice anyway.
What is the best way to do this? Maybe after every change in editing mode,
system may apply the rights? How can I do that?
With a Groovy listener. See this tutorial for a starting point:
http://platform.xwiki.org/xwiki/bin/DevGuide/GroovyNotificationTutorial
Or you can go low level and write a Java component that does the same
thing, this should be a bit more bulletproof (you have to register the
groovy listener when the wiki restarts).
An alternative is not to update rights when changing the document, but
to plug in a different XWikiRightsService implementation that checks the
authors instead of the rights objects when determining if the current
user has edit right on a document. For other rights, or if there are no
authors, fall back to the default XWikiRightServiceImpl base class.
Btw, I'm using this snippet to add the user
rights:
http://extensions.xwiki.org/xwiki/bin/view/Extension/Setting+Rights
Thanks in advance,
Luís Braga
--
Sergiu Dumitriu
http://purl.org/net/sergiu/