On 06/24/2010 05:21 PM, Fabio Mancinelli wrote:
> On 06/24/2010 12:10 AM, xManish wrote:
>>
>>
>> Fabio Mancinelli-4 wrote:
>>>
>>> So as long as what you want to do is achievable by page and object
>>> manipulation (like the most of the XWiki functionalities) you are able
>>> to use the REST api to do it.
>>>
>> Hi Fabio,
>> Thanks for replying to my thread.
>> Coming to the creating user issue. Does that mean we can create a user by
>> creating a page and have object of class XWikiUser, but won't be able to add
>> the user details like personal information and contact information through
>> REST Api?
>> Or may be there is a way to do it??
>>
>> Thanks,
>> Manish
>
> Just to be clear I'll show you how to create a user using curl
> (http://curl.haxx.se), a handy command line tool for sending HTTP requests.
>
> Step1: Create a page that will represent the user. This page will be
> located in the XWiki space and its name will correspond to the username
>
> $ curl -v -u Admin:admin  -X PUT -H "Content-type: text/plain"
> --data-ascii '{{include document="XWiki.XWikiUserSheet"/}}'
> http://localhost:8080/xwiki/rest/wikis/xwiki/spaces/XWiki/pages/Foo
>
> Quick explanation:
>
> * -u Admin:admin uses HTTP basic authentication in order to authenticate
> the request. It will be executed as Admin.
>
> * We send PUT request
>
> * The content type is text/plain. This is accepted by the
> http://localhost:8080/xwiki/rest/wikis/xwiki/spaces/XWiki/pages/Foo
> resource and the effect is that whatever is specified as the request
> payload (entity) will become the page content. You could have also used
> the application/xml content type, but in this case you should have sent
> an XML document that is compliant to the REST Api model schema for Page
> objects defined here:
> http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-rest/src/main/resources/xwiki.rest.model.xsd
>
> Once this command is executed you will receive back the XML
> representation of the newly created page and if you point your browser
> to http://localhost:8080/xwiki/bin/view/XWiki/Foo you will see a user
> page that is incomplete; in fact the message says: "This stylesheet must
> be applied on a document containing a XWiki.XWikiUsers object."
>
> Step2: Create a XWiki.XWikiUsers object containing user information.
>
> $ curl -v -u Admin:admin -X POST -d
> "className=XWiki.XWikiUsers&property#first_name=Foo&property#last_name=Foo&property#password=foo"
> http://localhost:8080/xwiki/rest/wikis/xwiki/spaces/XWiki/pages/Foo/objects
>
> Quick explanation:
>
> * We create a new XWiki.XWikiUsers object attached to the previously
> created page. This time the content type will be
> "application/x-www-form-urlencoded" sent by default by curl.
>
> * The entity will contain several urlencoded fields that will be used to
> initialize the fields of the XWikiUsers object. In particular these
> fields are:
>
> ** className : Tells the REST Api that we want to create an object of a
> given class, in this clas XWiki.XWikiUsers
>
> ** property#first_name, property#last_name, property#password : These
> are used to define the values that will be set to the object's property.
> The property# prefix is not part of the property name but it is used to
> distinguish metadata about the object (like the classname) from the
> actual object's properties. To check the available properties for the
> XWiki.XWikiUsers class you can look at
> http://localhost:8080/xwiki/bin/view/XWiki/XWikiUsers. It is *here* that
> you specify all the data associated to your user: her name, last name,
> blog, password, etc.
>
> Once this command is executed you will receive back the XML
> representation of the newly created object and if you point your browser
> to http://localhost:8080/xwiki/bin/view/XWiki/Foo now you will see a
> complete user page with all the correct details.
>
> Step3: Add the newly created user to the XWikiAllGroup in order to make
> it correctly access the wiki.
>
> $ curl -v -u Admin:admin -X POST -d
> "className=XWiki.XWikiGroups&property#member=XWiki.Foo"
> http://localhost:8080/xwiki/rest/wikis/xwiki/spaces/XWiki/pages/XWikiAllGroup/objects
>
> This should be pretty clear now. You just add a XWiki.XWikiGroups object
> to the XWiki.XWikiAllGroups page and set the member field of this object
> the user id, in this case XWiki.Foo
>
> Now you should be able to login to the wiki using the new user (i.e.,
> Foo, password foo).
>
> Actually there is another step to be done before Step3. In fact, if you
> login as Foo and you go to the Foo profile you will see that you won't
> be able to edit it. This is because you need to set the access rights to
> this page in order to make Foo able to edit it.
>
> I leave this as an exercise. (Hint: look to the XWiki.XWikiRights
> objects attached to a user created in the standard way)

Very nice explanation, should go on xwiki.org as a tutorial.

-- 
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
users mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/users

Reply via email to