daveappserver 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/appserver.js +73 -49
  2. package/package.json +1 -1
package/appserver.js CHANGED
@@ -1,4 +1,4 @@
1
- var myVersion = "0.6.0", myProductName = "daveAppServer";
1
+ var myVersion = "0.6.2", myProductName = "daveAppServer";
2
2
 
3
3
  exports.start = startup;
4
4
  exports.notifySocketSubscribers = notifySocketSubscribers;
@@ -934,71 +934,94 @@ function cleanFileStats (stats) { //4/19/21 by DW
934
934
  });
935
935
  }
936
936
  //email registration -- 12/7/22 by DW
937
- function sendConfirmingEmail (email, screenname, callback) {
938
- const magicString = utils.getRandomPassword (10);
939
- const urlWebApp = "http://" + config.myDomain + "/";
940
- console.log ("sendConfirmingEmail: email == " + email + ", urlWebApp == " + urlWebApp);
941
- var obj = {
942
- magicString: magicString,
943
- email: email,
944
- flDeleted: false,
945
- screenname,
946
- when: new Date ()
947
- };
948
- stats.pendingConfirmations.push (obj);
949
- statsChanged ();
950
- console.log ("sendConfirmingEmail: obj == " + utils.jsonStringify (obj));
951
- var params = {
952
- title: config.confirmEmailSubject,
953
- operationToConfirm: config.operationToConfirm,
954
- confirmationUrl: urlWebApp + "userconfirms?emailConfirmCode=" + encodeURIComponent (magicString)
955
- };
956
- fs.readFile (config.fnameEmailTemplate, function (err, emailTemplate) {
937
+ function sendConfirmingEmail (email, screenname, flNewUser=false, callback) {
938
+ function getScreenname (callback) {
939
+ if (flNewUser) { //the caller had to provide it
940
+ callback (undefined, screenname);
941
+ }
942
+ else { //we have to look it up
943
+ config.getScreenNameFromEmail (email, callback);
944
+ }
945
+ }
946
+ getScreenname (function (err, screenname) {
957
947
  if (err) {
958
- const message = "Error reading email template.";
959
- console.log ("sendConfirmingEmail: err.message == " + err.message);
960
- callback ({message});
948
+ callback (err);
961
949
  }
962
950
  else {
963
- var mailtext = utils.multipleReplaceAll (emailTemplate.toString (), params, false, "[%", "%]");
964
- mail.send (email, params.title, mailtext, config.mailSender, function (err, data) {
951
+ const magicString = utils.getRandomPassword (10);
952
+ const urlWebApp = "http://" + config.myDomain + "/";
953
+ console.log ("sendConfirmingEmail: email == " + email + ", urlWebApp == " + urlWebApp);
954
+ var obj = {
955
+ magicString: magicString,
956
+ email: email,
957
+ flDeleted: false,
958
+ screenname,
959
+ flNewUser, //1/7/23 by DW
960
+ when: new Date ()
961
+ };
962
+ stats.pendingConfirmations.push (obj);
963
+ statsChanged ();
964
+ console.log ("sendConfirmingEmail: obj == " + utils.jsonStringify (obj));
965
+ var params = {
966
+ title: config.confirmEmailSubject,
967
+ operationToConfirm: config.operationToConfirm,
968
+ confirmationUrl: urlWebApp + "userconfirms?emailConfirmCode=" + encodeURIComponent (magicString)
969
+ };
970
+ fs.readFile (config.fnameEmailTemplate, function (err, emailTemplate) {
965
971
  if (err) {
966
- callback (err);
972
+ const message = "Error reading email template.";
973
+ console.log ("sendConfirmingEmail: err.message == " + err.message);
974
+ callback ({message});
967
975
  }
968
976
  else {
969
- callback (undefined, obj);
977
+ var mailtext = utils.multipleReplaceAll (emailTemplate.toString (), params, false, "[%", "%]");
978
+ mail.send (email, params.title, mailtext, config.mailSender, function (err, data) {
979
+ if (err) {
980
+ callback (err);
981
+ }
982
+ else {
983
+ callback (undefined, {message: "Please check your email."});
984
+ }
985
+ });
986
+ const f = config.dataFolder + "lastmail.html";
987
+ utils.sureFilePath (f, function () {
988
+ fs.writeFile (f, mailtext, function (err) {
989
+ });
990
+ });
970
991
  }
971
992
  });
972
- const f = config.dataFolder + "lastmail.html";
973
- utils.sureFilePath (f, function () {
974
- fs.writeFile (f, mailtext, function (err) {
975
- });
976
- });
977
993
  }
978
994
  });
979
995
  }
980
996
  function receiveConfirmation (emailConfirmCode, callback) {
981
997
  const urlWebApp = "http://" + config.myDomain + "/";
982
- var urlRedirect = undefined;
998
+ var urlRedirect = undefined, flFoundConfirm = false;
999
+ function encode (s) {
1000
+ return (encodeURIComponent (s));
1001
+ }
983
1002
  stats.pendingConfirmations.forEach (function (item) {
984
1003
  if (item.magicString == emailConfirmCode) {
985
- console.log (utils.jsonStringify (item));
986
-
987
-
988
1004
  if (config.addEmailToUserInDatabase !== undefined) {
989
- config.addEmailToUserInDatabase (item.screenname, item.email, item.magicString);
1005
+ config.addEmailToUserInDatabase (item.screenname, item.email, item.magicString, item.flNewUser, function (err, emailSecret) {
1006
+ if (err) {
1007
+ urlRedirect = urlWebApp + "?failedLogin=true&message=" + encode (err.message);
1008
+ }
1009
+ else {
1010
+ urlRedirect = urlWebApp + "?emailconfirmed=true&email=" + item.email + "&code=" + encode (emailSecret) + "&screenname=" + encode (item.screenname);
1011
+ item.flDeleted = true;
1012
+ }
1013
+ callback (urlRedirect);
1014
+ });
990
1015
  }
991
-
992
- urlRedirect = urlWebApp + "?emailconfirmed=true&email=" + item.email + "&code=" + item.magicString;
993
-
994
- item.flDeleted = true;
1016
+ flFoundConfirm = true;
995
1017
  }
996
1018
  });
997
- if (urlRedirect === undefined) {
998
- urlRedirect = urlWebApp + "?failedLogin=true"; //add an error message here
1019
+ if (!flFoundConfirm) {
1020
+ if (urlRedirect === undefined) {
1021
+ urlRedirect = urlWebApp + "?failedLogin=true&message=" + encode ("Can't find the pending confirmation.");
1022
+ }
1023
+ callback (urlRedirect);
999
1024
  }
1000
- console.log ("receiveConfirmation: urlRedirect == " + urlRedirect);
1001
- callback (urlRedirect);
1002
1025
  }
1003
1026
  function checkPendingConfirmations () {
1004
1027
  var flChanged = false;
@@ -1375,9 +1398,10 @@ function startup (options, callback) {
1375
1398
  });
1376
1399
  return (true);
1377
1400
  case "/sendconfirmingemail": //12/7/22 by DW
1378
- callWithScreenname (function (screenname) {
1379
- sendConfirmingEmail (params.email, screenname, httpReturn);
1380
- });
1401
+ sendConfirmingEmail (params.email, undefined, false, httpReturn);
1402
+ return (true);
1403
+ case "/createnewuser": //1/7/23 by DW
1404
+ sendConfirmingEmail (params.email, params.name, true, httpReturn);
1381
1405
  return (true);
1382
1406
  case "/userconfirms": //12/7/22 by DW
1383
1407
  receiveConfirmation (params.emailConfirmCode, httpReturnRedirect);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "daveappserver",
3
3
  "description": "Factored code that was appearing in all my servers.",
4
- "version": "0.6.0",
4
+ "version": "0.6.2",
5
5
  "main": "appserver.js",
6
6
  "repository": {
7
7
  "type" : "git",