USER MANAGMENT Component¶
Warning
Update the function names
Function addUserAccess¶
-
addUserAccess
(year, username, id, ONOFF)¶ The function coordinates adding the users to completed template
- Arguments
year (string) – the current year
username (object) – the current username
id (type) – data id
ONOFF (type) – access with status ON/OFF (DataEntry/Readonly)
- Returns
string – result (User access updated”)
Warning
Update the function names
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | function addUserAccess(year, username, id, ONOFF)
{
/*Checking the existing beneficiary surveys to add users*/
var jsonData = KOBOFORM(key["APITOKEN2"]);
var r = 0,
rr = 0,
pr = 0;
var realformid,
demoformid,
partnerformid;
for (i = 0; i < jsonData.length; i++) {
if (jsonData[i]["title"].indexOf(year) > -1 && jsonData[i]["title"].indexOf("TRAINING (DEMO)") == -1 && jsonData[i]["title"].indexOf("Beneficiary") > -1) {
r = 1;
realformid = jsonData[i]["formid"];
}
if (jsonData[i]["title"].indexOf(year) > -1 && jsonData[i]["title"].indexOf("TRAINING (DEMO)") > -1) {
rr = 1;
demoformid = jsonData[i]["formid"];
}
if (jsonData[i]["title"].indexOf(year) > -1 && jsonData[i]["title"].indexOf("Partner") > -1) {
pr = 1;
partnerformid = jsonData[i]["formid"];
}
}
/*IF SURVEY IS CONFIRMED, ADD USERS*/
if (r == 1) {
result = GIVEACCESSUSER(realformid, username, id, ONOFF);
}
if (rr == 1) {
result = GIVEACCESSUSER(demoformid, username, id, ONOFF);
}
if (pr == 1) {
result = GIVEACCESSUSER(partnerformid, username, id, ONOFF);
}
if (result == 2 && ONOFF == "ON") { Browser.msgBox("Username does not exist. First, create username manually in KoboToolbox."); }
if (result == 1 && ONOFF == "ON" && key["EMAIL"] == "ON") {
generateEmailNotice(id,
"User Access Granted in Kobo",
"Username: " + username + " has been authorised to access Customised Surveys in Kobo",
"0",
"Thank you very much for submitting the " + year + " " + key["SECTOR"] + " Monitoring Template." +
"<br><br>We confirm the receipt and please find the PDF version for your kind attention." +
"<br><br>Please kindly let us know in case you find any information missing, or parts not reflecting correctly what you submitted." +
"<br><br>Based on the information submitted in this template, your customized surveys are developed. Please kindly find your ID and password to access your Customised Beneficiary and Partner Surveys." +
"<br><br><b>Username</b>: " + username + " (<i>Note: all in lowercase</i>)" +
"<br><b>Password</b>: 1951" +
"<br>Please keep these credentials confidential." +
"<br><br>To access your surveys, please install Apps called “KoBoCollect” in your smartphone/tablets (<i>Note: Android only</i>) and download your customized survey, by executing the following 2 tasks explained in the Kobo User guidance." +
"<br><br><b>Step.1</b>: Installing KoboCollect in your mobile" +
"<br><b>Step.2</b>: Setting up your customised beneficiary / partner survey" +
"<br> <b>2a</b>. Training survey (For Training Only)" +
"<br><br>Should you encounter any technical challenges, please do not hesitate to contact us." +
"<br><br>We would like to organize a brief training session on how to use Kobo and the customised surveys through a skype or Webex call in the coming weeks. Please let us come back to you with more details on this." +
"<br><br>Thank you and best regards,");
}
updateOnCustomisation(id);
if (result == 1) { updateLog("User access updated: " + year + " " + username + " " + ONOFF); }
return result;
}
|
Function addUserAccessCompletedTemplate¶
-
addUserAccessCompletedTemplate
(formid, username, id, ONOFF)¶ The function coordinates adding users to completed template
- Arguments
formid (type) – id of template
username (object) – current username
id (type) – id of data
ONOFF (type) – access with status ON/OFF (DataEntry/Readonly)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | function addUserAccessCompletedTemplate(formid, username, id, ONOFF) {
var kkk = 'UNA' + id;
var url = 'https://kobocat.unhcr.org/api/v1/forms/' + formid + '/share';
if (ONOFF == "ON") {
var requestBody = {
"username": username,
"role": "dataentry"
};
}
if (ONOFF == "OFF") {
var requestBody = {
"username": username,
"role": "readonly"
};
}
var option = {
"method": "POST",
"payload": requestBody,
"headers": {
"Authorization": "Token " + key["APITOKEN2"]
}
};
try {
var json = UrlFetchApp.fetch(url, option);
}
catch (e) {
keyinputs[kkk] = "NO";
key[kkk] = "NO";
return 2;
}
return 1;
}
|
Function updateUsername¶
-
updateUsername
(pkey, skip)¶ The function checks if there is any change of username in the Control Panel
- Arguments
pkey (Object) – the list of key properties and their values
skip (string) – staus of manual update
- Returns
keyinputs – list of key parameters
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | function updateUsername(skip, pkey) {
if (pkey != null) { key = pkey };
/*For manual click*/
if (skip != "skip") {
var r = Browser.msgBox("Warning: You can change username only once at a time", "You will not be allowed to change username again until all the recustomisation process finishes. Are you sure to proceed?", Browser.Buttons.YES_NO);
if (r == "no") { return; }
SpreadsheetApp.flush();
Utilities.sleep(2000);
}
/*For manual update: If customise has not been yet done for the first time and there us not previous username, so this part will be skipped.*/
var data = getData("CONTROL");
{ /*USERNAME CHANGE YN*/
for (di = 2; di < data.length; di++) {
if (data[di][data[0].indexOf("PROGRAMME_SYNOPSIS/PROGRAMME_INFORMATION/Year")] == "2017" || parseInt(data[di][data[0].indexOf("PROGRAMME_SYNOPSIS/PROGRAMME_INFORMATION/Year")]) < parseInt(key["AUTOYEAR"])) { continue; }
var kk = 'UN' + data[di][data[0].indexOf("_id")];
var kko = 'UNO' + data[di][data[0].indexOf("_id")];
var k = 'TEMP' + String(data[di][data[0].indexOf("_id")]);
var kkk = 'UNA' + String(data[di][data[0].indexOf("_id")]);
if (key[kk] != null && key[kk] != data[di][data[0].indexOf("Username")]) {
if (key["UNA" + data[di][data[0].indexOf("_id")]] == "LOCKED") {
Browser.msgBox("Warning [" + key[kk] + "]: The username has been already used to submit the data on surveys and should not be changed. The request will be canceled.");
var control = ss.getSheetByName("CONTROL");
control.getRange(di + 1, data[0].indexOf("Username") + 2).setValue(key[kk]);
}
else {
var old = key[kko];
if (key[kkk] != "Changing") { keyinputs[kko] = key[kk]; key[kko] = key[kk]; };
keyinputs[kk] = data[di][data[0].indexOf("Username")];
key[kk] = data[di][data[0].indexOf("Username")];
if (yearcheck(data[di][data[0].indexOf("PROGRAMME_SYNOPSIS/PROGRAMME_INFORMATION/Year")]) == 1) { keyinputs[kkk] = "Changing"; key[kkk] = "Changing"; }
if (yearcheck(data[di][data[0].indexOf("PROGRAMME_SYNOPSIS/PROGRAMME_INFORMATION/Year")]) == 1) {
var id = data[di][data[0].indexOf("_id")];
updateLog("Username changed: " + old + " to " + data[di][data[0].indexOf("Username")]);
updateOnCustomisation(id);
var htmlOutput = HtmlService
.createHtmlOutput("<style>p { margin-left: 0pt; margin-top: 5pt;margin-bottom: 5pt;color: black; font: 16px bold, Arial; }</style><p>Completed [" + key[kk] + "→" + data[di][data[0].indexOf("Username")] + "] : Username will be changed. The survey will be recustomised in the next task update.<br><br>Please <b>delete the old user access</b> if necessary (if the old username was given access already) and add the new user access manually through <a href='https://kobo.unhcr.org/' target='_blank'>KoboToolbox</a> for each of the 3 surveys.</p>")
.setWidth(500)
.setHeight(120);
SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Username changed');
}
}
}
/*ENDLINE Databridge passing ON/OFF*/
{
var eof = "EOF" + String(data[di][data[0].indexOf("_id")]);
if (key[eof] != null && key[eof] != data[di][data[0].indexOf("EOF")].toString().toLowerCase()){
keyinputs["LASTDATA" + String(data[di][data[0].indexOf("_id")])] = 0;
}
key[eof] = data[di][data[0].indexOf("EOF")];
keyinputs[eof] = key[eof];
}
}
}
if (pkey != null) { return (keyinputs); }
}
|