Skip to content

Commit 81b8df4

Browse files
added examples
1 parent 6961cdc commit 81b8df4

10 files changed

+595
-1
lines changed

index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ const {
4949
const {
5050
eg001admin, eg002admin, eg003admin,
5151
eg004admin, eg005admin, eg006admin,
52-
eg007admin
52+
eg007admin, eg008admin, eg009admin
5353
} = require("./lib/admin/controllers");
5454

5555
const PORT = process.env.PORT || 3000;
@@ -161,6 +161,10 @@ if (examplesApi.examplesApi.isRoomsApi) {
161161
.post('/eg006', eg006admin.createController)
162162
.get('/eg007', eg007admin.getController)
163163
.post('/eg007', eg007admin.createController)
164+
.get('/eg008', eg008admin.getController)
165+
.post('/eg008', eg008admin.createController)
166+
.get('/eg009', eg009admin.getController)
167+
.post('/eg009', eg009admin.createController)
164168
} else {
165169
app.get('/eg001', eg001.getController)
166170
.post('/eg001', eg001.createController)

lib/admin/controllers/eg002CreateCLMESignUser.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ eg002CreateCLMESignUser.createController = async (req, res) => {
6363
res.render("pages/error", { err: error, errorCode, errorMessage });
6464
}
6565
if (results) {
66+
req.session.clmEmail = validator.escape(body.email);
67+
6668
res.render("pages/example_done", {
6769
title: "Create active user for CLM and eSignature",
6870
h1: "Create active user for CLM and eSignature",
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
/**
2+
* @file
3+
* Example 008: Update user product permission profiles using an email address
4+
* @author DocuSign
5+
*/
6+
7+
const path = require('path')
8+
const { updateUserProductPermissionProfile, getProductPermissionProfiles } = require('../examples/updateUserProductPermissionProfile');
9+
const dsConfig = require('../../../config/index.js').config;
10+
const validator = require('validator');
11+
const { getOrganizationId } = require("../getOrganizationId.js");
12+
13+
const eg008UpdateUserProductPermissionProfile = exports;
14+
const eg = 'eg008' // This example reference.;
15+
const mustAuthenticate = '/ds/mustAuthenticate';
16+
const minimumBufferMin = 3;
17+
18+
/**
19+
* Update user product permission profiles using an email address
20+
* @param {object} req Request obj
21+
* @param {object} res Response obj
22+
*/
23+
eg008UpdateUserProductPermissionProfile.createController = async (req, res) => {
24+
// At this point we should have a good token. But we
25+
// double-check here to enable a better UX to the user.
26+
let isTokenOK = req.dsAuth.checkToken(minimumBufferMin);
27+
if (!isTokenOK) {
28+
req.flash("info", "Sorry, you need to re-authenticate.");
29+
// Save the current operation so it will be resumed after authentication
30+
req.dsAuth.setEg(req, eg);
31+
res.redirect(mustAuthenticate);
32+
}
33+
34+
if(!req.session.clmEmail) {
35+
res.render("pages/admin-examples/eg008UpdateUserProductPermissionProfile", {
36+
eg: eg, csrfToken: req.csrfToken(),
37+
title: "Update user product permission profiles using an email address",
38+
emailOk: false,
39+
sourceFile: sourceFile,
40+
sourceUrl: dsConfig.githubExampleUrl + 'admin/examples/' + sourceFile,
41+
documentation: dsConfig.documentation + eg,
42+
showDoc: dsConfig.documentation
43+
});
44+
}
45+
46+
let results = null;
47+
const { body } = req;
48+
49+
const productId = validator.escape(body.productId);
50+
let args = {
51+
accessToken: req.user.accessToken,
52+
basePath: dsConfig.adminAPIUrl,
53+
accountId: req.session.accountId,
54+
organizationId: req.session.organizationId,
55+
email: req.session.clmEmail,
56+
productId: productId
57+
};
58+
59+
const { clmProductId } = await getProductPermissionProfiles(args);
60+
61+
if(productId === clmProductId) {
62+
args.permissionProfileId = validator.escape(body.clmPermissionProfileId);
63+
} else {
64+
args.permissionProfileId = validator.escape(body.eSignPermissionProfileId);
65+
}
66+
67+
try {
68+
results = await updateUserProductPermissionProfile(args)
69+
}
70+
catch (error) {
71+
const errorBody = error && error.response && error.response.body;
72+
// we can pull the DocuSign error code and message from the response body
73+
const errorCode = errorBody && errorBody.errorCode;
74+
const errorMessage = errorBody && errorBody.message;
75+
76+
// In production, may want to provide customized error messages and
77+
// remediation advice to the user.
78+
res.render("pages/error", { err: error, errorCode, errorMessage });
79+
}
80+
if (results) {
81+
res.render("pages/example_done", {
82+
title: "Update user product permission profiles using an email address",
83+
h1: "Update user product permission profiles using an email address",
84+
message: "Results from MultiProductUserManagement:addUserProductPermissionProfilesByEmail method:",
85+
json: JSON.stringify(results).replace(/'/g, '')
86+
});
87+
}
88+
}
89+
90+
/**
91+
* Form page for this application
92+
*/
93+
eg008UpdateUserProductPermissionProfile.getController = async (req, res) => {
94+
// Check that the authentication token is ok with a long buffer time.
95+
// If needed, now is the best time to ask the user to authenticate
96+
// since they have not yet entered any information into the form.
97+
let isTokenOK = req.dsAuth.checkToken();
98+
if (!isTokenOK) {
99+
// Save the current operation so it will be resumed after authentication
100+
req.dsAuth.setEg(req, eg);
101+
res.redirect(mustAuthenticate);
102+
}
103+
104+
const sourceFile = (path.basename(__filename))[5].toLowerCase() + (path.basename(__filename)).substr(6);
105+
if(!req.session.clmEmail) {
106+
res.render("pages/admin-examples/eg008UpdateUserProductPermissionProfile", {
107+
eg: eg, csrfToken: req.csrfToken(),
108+
title: "Update user product permission profiles using an email address",
109+
emailOk: false,
110+
sourceFile: sourceFile,
111+
sourceUrl: dsConfig.githubExampleUrl + 'admin/examples/' + sourceFile,
112+
documentation: dsConfig.documentation + eg,
113+
showDoc: dsConfig.documentation
114+
});
115+
}
116+
117+
try {
118+
await getOrganizationId(req)
119+
const args = {
120+
accessToken: req.user.accessToken,
121+
basePath: dsConfig.adminAPIUrl,
122+
accountId: req.session.accountId,
123+
organizationId: req.session.organizationId
124+
};
125+
126+
const { clmPermissionProfiles, eSignPermissionProfiles, products } = await getProductPermissionProfiles(args);
127+
128+
res.render("pages/admin-examples/eg008UpdateUserProductPermissionProfile", {
129+
eg: eg, csrfToken: req.csrfToken(),
130+
title: "Update user product permission profiles using an email address",
131+
clmPermissionProfiles: clmPermissionProfiles,
132+
eSignPermissionProfiles: eSignPermissionProfiles,
133+
emailOk: true,
134+
email: req.session.clmEmail,
135+
products: products,
136+
sourceFile: sourceFile,
137+
sourceUrl: dsConfig.githubExampleUrl + 'admin/examples/' + sourceFile,
138+
documentation: dsConfig.documentation + eg,
139+
showDoc: dsConfig.documentation
140+
});
141+
}
142+
catch (error) {
143+
const errorBody = error && error.response && error.response.body;
144+
// we can pull the DocuSign error code and message from the response body
145+
const errorCode = errorBody && errorBody.errorCode;
146+
const errorMessage = errorBody && errorBody.message;
147+
148+
// In production, may want to provide customized error messages and
149+
// remediation advice to the user.
150+
res.render("pages/error", { err: error, errorCode: errorCode, errorMessage: errorMessage });
151+
}
152+
}
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
/**
2+
* @file
3+
* Example 009: Delete user product permission profiles using an email address
4+
* @author DocuSign
5+
*/
6+
7+
const path = require('path')
8+
const { deleteUserProductPermissionProfile, getProductPermissionProfilesByEmail } = require('../examples/deleteUserProductPermissionProfile');
9+
const dsConfig = require('../../../config/index.js').config;
10+
const validator = require('validator');
11+
const { getOrganizationId } = require("../getOrganizationId.js");
12+
13+
const eg009DeleteUserProductPermissionProfile = exports;
14+
const eg = 'eg009' // This example reference.;
15+
const mustAuthenticate = '/ds/mustAuthenticate';
16+
const minimumBufferMin = 3;
17+
18+
/**
19+
* Delete user product permission profiles using an email address
20+
* @param {object} req Request obj
21+
* @param {object} res Response obj
22+
*/
23+
eg009DeleteUserProductPermissionProfile.createController = async (req, res) => {
24+
// At this point we should have a good token. But we
25+
// double-check here to enable a better UX to the user.
26+
let isTokenOK = req.dsAuth.checkToken(minimumBufferMin);
27+
if (!isTokenOK) {
28+
req.flash("info", "Sorry, you need to re-authenticate.");
29+
// Save the current operation so it will be resumed after authentication
30+
req.dsAuth.setEg(req, eg);
31+
res.redirect(mustAuthenticate);
32+
}
33+
34+
if(!req.session.clmEmail) {
35+
res.render("pages/admin-examples/eg009DeleteUserProductPermissionProfile", {
36+
eg: eg, csrfToken: req.csrfToken(),
37+
title: "Delete user product permission profiles using an email address",
38+
emailOk: false,
39+
sourceFile: sourceFile,
40+
sourceUrl: dsConfig.githubExampleUrl + 'admin/examples/' + sourceFile,
41+
documentation: dsConfig.documentation + eg,
42+
showDoc: dsConfig.documentation
43+
});
44+
}
45+
46+
let results = null;
47+
const body = req.body;
48+
const args = {
49+
accessToken: req.user.accessToken,
50+
basePath: dsConfig.adminAPIUrl,
51+
accountId: req.session.accountId,
52+
organizationId: req.session.organizationId,
53+
email: req.session.clmEmail,
54+
productId: validator.escape(body.productId)
55+
}
56+
57+
try {
58+
results = await deleteUserProductPermissionProfile(args)
59+
}
60+
catch (error) {
61+
const errorBody = error && error.response && error.response.body;
62+
// we can pull the DocuSign error code and message from the response body
63+
const errorCode = errorBody && errorBody.errorCode;
64+
const errorMessage = errorBody && errorBody.message;
65+
66+
// In production, may want to provide customized error messages and
67+
// remediation advice to the user.
68+
res.render("pages/error", { err: error, errorCode, errorMessage });
69+
}
70+
if (results) {
71+
res.render("pages/example_done", {
72+
title: "Delete user product permission profiles using an email address",
73+
h1: "Delete user product permission profiles using an email address",
74+
message: "Results from MultiProductUserManagement:removeUserProductPermission method:",
75+
json: JSON.stringify(results).replace(/'/g, '')
76+
});
77+
}
78+
}
79+
80+
/**
81+
* Form page for this application
82+
*/
83+
eg009DeleteUserProductPermissionProfile.getController = async (req, res) => {
84+
// Check that the authentication token is ok with a long buffer time.
85+
// If needed, now is the best time to ask the user to authenticate
86+
// since they have not yet entered any information into the form.
87+
let isTokenOK = req.dsAuth.checkToken();
88+
if (!isTokenOK) {
89+
req.flash("info", "Sorry, you need to re-authenticate.");
90+
// Save the current operation so it will be resumed after authentication
91+
req.dsAuth.setEg(req, eg);
92+
res.redirect(mustAuthenticate);
93+
}
94+
95+
const sourceFile = (path.basename(__filename))[5].toLowerCase() + (path.basename(__filename)).substr(6);
96+
if(!req.session.clmEmail) {
97+
res.render("pages/admin-examples/eg009DeleteUserProductPermissionProfile", {
98+
eg: eg, csrfToken: req.csrfToken(),
99+
title: "Delete user product permission profiles using an email address",
100+
emailOk: false,
101+
sourceFile: sourceFile,
102+
sourceUrl: dsConfig.githubExampleUrl + 'admin/examples/' + sourceFile,
103+
documentation: dsConfig.documentation + eg,
104+
showDoc: dsConfig.documentation
105+
});
106+
}
107+
108+
try {
109+
await getOrganizationId(req)
110+
const args = {
111+
accessToken: req.user.accessToken,
112+
basePath: dsConfig.adminAPIUrl,
113+
accountId: req.session.accountId,
114+
organizationId: req.session.organizationId,
115+
email: req.session.clmEmail
116+
};
117+
118+
const productPermissionProfiles = await getProductPermissionProfilesByEmail(args);
119+
let permissionProfileList = [];
120+
let clmProductId;
121+
let clmPermissionProfileName;
122+
let eSignProductId;
123+
let eSignPermissionProfileName;
124+
125+
if(productPermissionProfiles && productPermissionProfiles.length > 0) {
126+
productPermissionProfiles.forEach(product => {
127+
let permissionProfiles = product["permission_profiles"];
128+
129+
permissionProfiles.forEach(profile => {
130+
if(product["product_name"].includes("CLM")) {
131+
clmPermissionProfileName = profile["permission_profile_name"];
132+
clmProductId = product["product_id"];
133+
} else {
134+
eSignPermissionProfileName = profile["permission_profile_name"];
135+
eSignProductId = product["product_id"];
136+
}
137+
});
138+
});
139+
140+
if(clmProductId !== undefined) {
141+
permissionProfileList.push({ productId: clmProductId, permissionName: `CLM - ${clmPermissionProfileName}`})
142+
}
143+
if(eSignProductId !== undefined) {
144+
permissionProfileList.push({ productId: eSignProductId, permissionName: `eSignature - ${eSignPermissionProfileName}`})
145+
}
146+
}
147+
148+
res.render("pages/admin-examples/eg009DeleteUserProductPermissionProfile", {
149+
eg: eg, csrfToken: req.csrfToken(),
150+
title: "Delete user product permission profiles using an email address",
151+
permissionProfileList: permissionProfileList,
152+
emailOk: true,
153+
email: req.session.clmEmail,
154+
sourceFile: sourceFile,
155+
sourceUrl: dsConfig.githubExampleUrl + 'admin/examples/' + sourceFile,
156+
documentation: dsConfig.documentation + eg,
157+
showDoc: dsConfig.documentation
158+
});
159+
}
160+
catch (error) {
161+
const errorBody = error && error.response && error.response.body;
162+
// we can pull the DocuSign error code and message from the response body
163+
const errorCode = errorBody && errorBody.errorCode;
164+
const errorMessage = errorBody && errorBody.message;
165+
166+
// In production, may want to provide customized error messages and
167+
// remediation advice to the user.
168+
res.render("pages/error", { err: error, errorCode: errorCode, errorMessage: errorMessage });
169+
}
170+
}

lib/admin/controllers/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ module.exports.eg004admin = require('./eg004ImportUser');
55
module.exports.eg005admin = require('./eg005AuditUsers');
66
module.exports.eg006admin = require('./eg006GetUserProfileByEmail');
77
module.exports.eg007admin = require('./eg007GetUserProfileByUserId');
8+
module.exports.eg008admin = require('./eg008UpdateUserProductPermissionProfile')
9+
module.exports.eg009admin = require('./eg009DeleteUserProductPermissionProfile')

0 commit comments

Comments
 (0)