This how-to is about installing Node.js and the Nuxeo JavaScript Client, and creating a few users in your Nuxeo Platform instance that you will need later in the tutorial.
Nuxeo JavaScript Client is a library for the Nuxeo Automation and REST API. The library can work in a browser or in Node.js using the same API. In this tutorial you will use Node.js to discover the features of Nuxeo Platform. If you want an overview of the JavaScript client, read the Nuxeo JavaScript Client page.
Setting up the JavaScript Environment
In this section, you will set up your work environment: install Node.js on your system, install Nuxeo JavaScript Client and prepare a folder on your system in which you will save your JavaScript files.
Install Node.js.. The minimum required version is v6.5.0.
If you previously installed Node.js, you can check your version with the following command:
$ node --version
- Create a folder called
nuxeo_tutorial
on your computer. Install the JavaScript Client package in that folder.
Open a terminal and go that folder.
$ cd PATH/TO/nuxeo_tutorial
Initiate the Node module and follow the steps displayed to generate the module
package.json
file.$ npm init
Use
npm
to install the Nuxeo JavaScript Client package.$ npm install [email protected] --save
A
node_modules
folder is now available innuxeo_tutorial
.
You are now set: you have a folder in which you will save your JavaScript files, and from which the Nuxeo JavaScript client is available.
Creating Users and Groups
The goal is to create the sales
and managers
group, as well as three users in Nuxeo Platform:
- John Doe - a regular user — username and password:
jdoe
- Alicia Fraser - part of the sales team — username and password:
afraser
- Sarah Connor - sales manager — username and password:
sconnor
To create the users:
Using your favorite text editor or IDE, create a file called
usersGroups.js
with the following content:#!/usr/bin/env node const Nuxeo = require('nuxeo'); const nuxeo = new Nuxeo({ auth: { method: 'basic', username: 'Administrator', password: 'Administrator' } }); const groups = [ // sales group { groupname: 'sales', grouplabel: 'Sales' }, // managers group { groupname: 'managers', grouplabel: 'Managers' } ]; // Define the users const users = [{ properties: { 'entity-type': 'user', username: 'jdoe', password: 'jdoe', firstName: 'John', lastName: 'Doe', company: 'Big Corp', email: '[email protected]', groups: ['members'] } }, { properties: { 'entity-type': 'user', username: 'afraser', password: 'afraser', firstName: 'Alicia', lastName: 'Fraser', company: 'Big Corp', email: '[email protected]', groups: ['members', 'sales'] } }, { properties: { 'entity-type': 'user', username: 'sconnor', password: 'sconnor', firstName: 'Sarah', lastName: 'Connor', company: 'Big Corp', email: '[email protected]', groups: ['members', 'sales', 'managers'] } }]; Promise.all(groups.map((group) => { return nuxeo.groups().create(group); })) .then(values => { values.forEach(group => { console.log(`Group ${group.groupname} has been created.`); }); }) .then(() => { return Promise.all(users.map(function(user) { return nuxeo.users().create(user); })); }) .then(values => { values.forEach(user => { // Display the usernames that have been created console.log(`User ${user.properties.username} has been created.`); }); }) .catch(error => { console.log('Apologies, an error occurred.'); console.log(error); if (error.response) { error.response.json().then(json => console.log(json)); } });
Save and run:
$ node usersGroups.js