Hi does someone please see what i am getting wrong here? The rights are not
just beeing set.

protected void addUserToGroup(String xwikiname, XWikiContext context)
            throws XWikiException {
        //
        // Create a group and add the user to the newly created group.
        BaseClass groupClass = context.getWiki().getGroupClass(context);
        // Get document representing group
        DocumentReference groupDocumentReference = new DocumentReference(
                context.getDatabase(), "Myspace", "Testgroup");
        XWikiDocument groupDoc = context.getWiki().getDocument(
                groupDocumentReference, context);

        BaseClass rightsClass = context.getWiki().getRightsClass(context);
        // trying to see how to add rights
        if (groupDoc.isNew()) {
            log.error("Creating Test group");
            synchronized (groupDoc) {
                // Add a member object to document
                BaseObject memberObj = groupDoc.newXObject(
                        groupClass.getDocumentReference(), context);
                memberObj.setStringValue("member", xwikiname);

                // groupDoc.getObject("XWiki.XWikiGlobalRights");

                // If the document is new, set its content

                groupDoc.setSyntax(Syntax.XWIKI_2_1);
                groupDoc.setContent("{{include
document='XWiki.XWikiGroupSheet' /}}");

                // Save modifications
                context.getWiki().saveDocument(groupDoc, context);

                DocumentReference spacePrefsRef = new
DocumentReference(context
                        .getWiki().getDatabase(), "Myspace",
"WebPreferences");
                XWikiDocument spacePrefs = context.getWiki().getDocument(
                        spacePrefsRef, context);
                BaseObject rights = spacePrefs.newXObject(
                        rightsClass.getDocumentReference(), context);
                rights.setStringValue("groups", "XWiki.XWikiAllGroup");
                rights.setStringValue("levels", "view,edit");
                rights.setStringValue("users", "");
                rights.setIntValue("deny", 1);
                context.getWiki().saveDocument(spacePrefs, context);

            }
            log.error("Added user" + xwikiname + "to Testgroup");
        }

    }

thanks in advance.


2014-04-19 16:09 GMT+02:00 Clemens Klein-Robbenhaar <
[email protected]>:

> Hi,
>
>  to add access rights to a space, you have to add an "XWiki.XWikiRight"
> object to the page <spacename>."WebPreferences".
>
> I have not tested it, but it should look somewhat like:
>
> DocumentReference spacePrefsReference = new DocumentReference(
> context.getWiki().getName(), spaceName, "WebPreferences")
> XWikiDocument spacePrefs  =
> context.getWiki().getDocument(spacePrefsReference, context)
> [...]
>    then add the "rights" object like you did in your code, except that you
> add it to spacePrefs instead of groupDoc.
> (I guess you also need to set
>  rights.setStringValue("levels","view,edit");  instead of doing two calls)
> Do not forget to save spacePrefs, too.
>
> hope this helps,
> clemens
>
> On 04/19/2014 08:14 AM, Daniel Ebanja wrote:
> > Hi Developers,
> > i have been trying this the whole time already and decided to ask for
> help.
> > I want to create a space, a group and add a member to the group. The
> space
> > should only be viewed by this group.
> > Here is my code till now. The Space is created, the group too and the
> user
> > login in is added to the group. I can't figure how to assign the rights.
> >
> > The CODE:
> >
> > protected void addUserToGroup(String xwikiname, XWikiContext context)
> > throws XWikiException{
> >         //
> >         // Create a group and add the user to the newly created group.
> >         BaseClass groupClass = context.getWiki().getGroupClass(context);
> >         // Get document representing group
> >         DocumentReference groupDocumentReference = new DocumentReference(
> >                 context.getDatabase(), "myspace",
> >                 "Testgroup");
> >         XWikiDocument groupDoc = context.getWiki().getDocument(
> >                 groupDocumentReference, context);
> >
> >         BaseClass rightsClass =
> context.getWiki().getRightsClass(context);
> >
> >         if (groupDoc.isNew()) {
> >             log.error("Creating Test group");
> >             synchronized (groupDoc) {
> >                 // Add a member object to document
> >                 BaseObject memberObj = groupDoc.newXObject(
> >                         groupClass.getDocumentReference(), context);
> >                 memberObj.setStringValue("member", xwikiname);
> >
> >                 BaseObject rights=
> > groupDoc.newXObject(rightsClass.getDocumentReference(),context);
> >                 rights.setStringValue("groups", "Testgroup");
> >                 rights.setStringValue("levels","view");
> >                 rights.setStringValue("levels", "edit");
> >                 rights.setStringValue("users", "");
> >                 rights.setIntValue("allow",1);
> >                 //groupDoc.getObject("XWiki.XWikiGlobalRights");
> >
> >
> >
> >                     groupDoc.setSyntax(Syntax.XWIKI_2_1);
> >                     groupDoc.setContent("{{include
> > document='XWiki.XWikiGroupSheet' /}}");
> >
> >
> >
> >                 // Save modifications
> >                 context.getWiki().saveDocument(groupDoc, context);
> >             }
> >             log.error("Added user"+ xwikiname +"to Testgroup");
> >         }
> >
> >     }
> >
> > Thanks for any help.
> > _______________________________________________
> > users mailing list
> > [email protected]
> > http://lists.xwiki.org/mailman/listinfo/users
> >
>
> _______________________________________________
> users mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/users
>



-- 
Ebanja Daniel
Informatikstudent der Hochschule Darmstadt
Deutschland
_______________________________________________
users mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/users

Reply via email to