@resolveio/server-lib 9.2.19 → 9.2.21

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 (221) hide show
  1. package/client-server-app.js +55 -1
  2. package/client-server-app.js.map +1 -1
  3. package/collections/app-status.collection.js +40 -1
  4. package/collections/app-status.collection.js.map +1 -1
  5. package/collections/app-version.collection.js +40 -1
  6. package/collections/app-version.collection.js.map +1 -1
  7. package/collections/counter.collection.js +43 -1
  8. package/collections/counter.collection.js.map +1 -1
  9. package/collections/cron-job-history.collection.js +71 -1
  10. package/collections/cron-job-history.collection.js.map +1 -1
  11. package/collections/cron-job.collection.js +74 -1
  12. package/collections/cron-job.collection.js.map +1 -1
  13. package/collections/email-history.collection.js +55 -1
  14. package/collections/email-history.collection.js.map +1 -1
  15. package/collections/email-verified.collection.js +50 -1
  16. package/collections/email-verified.collection.js.map +1 -1
  17. package/collections/file.collection.js +62 -1
  18. package/collections/file.collection.js.map +1 -1
  19. package/collections/flag.collection.js +44 -1
  20. package/collections/flag.collection.js.map +1 -1
  21. package/collections/log-method-latency.collection.js +53 -1
  22. package/collections/log-method-latency.collection.js.map +1 -1
  23. package/collections/log-subscription.collection.js +57 -1
  24. package/collections/log-subscription.collection.js.map +1 -1
  25. package/collections/log.collection.js +72 -1
  26. package/collections/log.collection.js.map +1 -1
  27. package/collections/logged-in-users.collection.js +58 -1
  28. package/collections/logged-in-users.collection.js.map +1 -1
  29. package/collections/method-call.collection.js +51 -1
  30. package/collections/method-call.collection.js.map +1 -1
  31. package/collections/method-response.collection.js +55 -1
  32. package/collections/method-response.collection.js.map +1 -1
  33. package/collections/monitor-cpu.collection.js +57 -1
  34. package/collections/monitor-cpu.collection.js.map +1 -1
  35. package/collections/monitor-https-inbound.collection.js +66 -1
  36. package/collections/monitor-https-inbound.collection.js.map +1 -1
  37. package/collections/monitor-https-outbound.collection.js +74 -1
  38. package/collections/monitor-https-outbound.collection.js.map +1 -1
  39. package/collections/monitor-memory.collection.js +68 -1
  40. package/collections/monitor-memory.collection.js.map +1 -1
  41. package/collections/monitor-mongo.collection.js +62 -1
  42. package/collections/monitor-mongo.collection.js.map +1 -1
  43. package/collections/notification.collection.js +40 -1
  44. package/collections/notification.collection.js.map +1 -1
  45. package/collections/report-builder-dashboard-builder.collection.js +93 -1
  46. package/collections/report-builder-dashboard-builder.collection.js.map +1 -1
  47. package/collections/report-builder-library.collection.js +76 -1
  48. package/collections/report-builder-library.collection.js.map +1 -1
  49. package/collections/report-builder-report.collection.js +138 -1
  50. package/collections/report-builder-report.collection.js.map +1 -1
  51. package/collections/user-group.collection.js +79 -1
  52. package/collections/user-group.collection.js.map +1 -1
  53. package/collections/user-guide.collection.js +46 -1
  54. package/collections/user-guide.collection.js.map +1 -1
  55. package/collections/user.collection.js +248 -1
  56. package/collections/user.collection.js.map +1 -1
  57. package/cron/cron.js +161 -1
  58. package/cron/cron.js.map +1 -1
  59. package/fixtures/cron-jobs.js +72 -1
  60. package/fixtures/cron-jobs.js.map +1 -1
  61. package/fixtures/init.js +62 -1
  62. package/fixtures/init.js.map +1 -1
  63. package/http/auth.js +697 -1
  64. package/http/auth.js.map +1 -1
  65. package/http/health.js +10 -1
  66. package/http/health.js.map +1 -1
  67. package/http/home.js +64 -1
  68. package/http/home.js.map +1 -1
  69. package/index.js +123 -1
  70. package/index.js.map +1 -1
  71. package/managers/cron.manager.js +205 -1
  72. package/managers/cron.manager.js.map +1 -1
  73. package/managers/method.manager.js +599 -1
  74. package/managers/method.manager.js.map +1 -1
  75. package/managers/mongo.manager.js +1777 -1
  76. package/managers/mongo.manager.js.map +1 -1
  77. package/managers/monitor.manager.js +334 -1
  78. package/managers/monitor.manager.js.map +1 -1
  79. package/managers/subscription.manager.js +867 -1
  80. package/managers/subscription.manager.js.map +1 -1
  81. package/managers/subscription.performance.js +100 -1
  82. package/managers/subscription.performance.js.map +1 -1
  83. package/methods/accounts.js +224 -1
  84. package/methods/accounts.js.map +1 -1
  85. package/methods/aws.js +449 -1
  86. package/methods/aws.js.map +1 -1
  87. package/methods/cloudconvert.js +214 -1
  88. package/methods/cloudconvert.js.map +1 -1
  89. package/methods/collections.js +526 -1
  90. package/methods/collections.js.map +1 -1
  91. package/methods/counters.js +121 -1
  92. package/methods/counters.js.map +1 -1
  93. package/methods/cron-jobs.js +1284 -1
  94. package/methods/cron-jobs.js.map +1 -1
  95. package/methods/flags.js +8 -1
  96. package/methods/flags.js.map +1 -1
  97. package/methods/logs.js +370 -1
  98. package/methods/logs.js.map +1 -1
  99. package/methods/monitor.js +384 -1
  100. package/methods/monitor.js.map +1 -1
  101. package/methods/pdf.js +685 -1
  102. package/methods/pdf.js.map +1 -1
  103. package/methods/report-builder.js +826 -1
  104. package/methods/report-builder.js.map +1 -1
  105. package/methods/support.js +263 -1
  106. package/methods/support.js.map +1 -1
  107. package/models/app-status.model.js +3 -1
  108. package/models/app-status.model.js.map +1 -1
  109. package/models/app-version.model.js +3 -1
  110. package/models/app-version.model.js.map +1 -1
  111. package/models/billing-logged-in-users.model.js +3 -1
  112. package/models/billing-logged-in-users.model.js.map +1 -1
  113. package/models/collection-document.model.js +3 -1
  114. package/models/collection-document.model.js.map +1 -1
  115. package/models/counter.model.js +3 -1
  116. package/models/counter.model.js.map +1 -1
  117. package/models/cron-job-history.model.js +3 -1
  118. package/models/cron-job-history.model.js.map +1 -1
  119. package/models/cron-job.model.js +3 -1
  120. package/models/cron-job.model.js.map +1 -1
  121. package/models/dialog.model.js +3 -1
  122. package/models/dialog.model.js.map +1 -1
  123. package/models/email-history.model.js +3 -1
  124. package/models/email-history.model.js.map +1 -1
  125. package/models/email-verified.model.js +3 -1
  126. package/models/email-verified.model.js.map +1 -1
  127. package/models/file.model.js +3 -1
  128. package/models/file.model.js.map +1 -1
  129. package/models/flag.model.js +3 -1
  130. package/models/flag.model.js.map +1 -1
  131. package/models/log-method-latency.model.js +3 -1
  132. package/models/log-method-latency.model.js.map +1 -1
  133. package/models/log-subscription.model.js +3 -1
  134. package/models/log-subscription.model.js.map +1 -1
  135. package/models/log.model.js +3 -1
  136. package/models/log.model.js.map +1 -1
  137. package/models/logged-in-users.model.js +3 -1
  138. package/models/logged-in-users.model.js.map +1 -1
  139. package/models/method-call.model.js +3 -1
  140. package/models/method-call.model.js.map +1 -1
  141. package/models/method-response.model.js +3 -1
  142. package/models/method-response.model.js.map +1 -1
  143. package/models/method.model.js +3 -1
  144. package/models/method.model.js.map +1 -1
  145. package/models/monitor-cpu.model.js +3 -1
  146. package/models/monitor-cpu.model.js.map +1 -1
  147. package/models/monitor-https-inbound.model.js +3 -1
  148. package/models/monitor-https-inbound.model.js.map +1 -1
  149. package/models/monitor-https-outbound.model.js +3 -1
  150. package/models/monitor-https-outbound.model.js.map +1 -1
  151. package/models/monitor-memory.model.js +3 -1
  152. package/models/monitor-memory.model.js.map +1 -1
  153. package/models/monitor-mongo.model.js +3 -1
  154. package/models/monitor-mongo.model.js.map +1 -1
  155. package/models/notification.model.js +3 -1
  156. package/models/notification.model.js.map +1 -1
  157. package/models/pagination.model.js +23 -1
  158. package/models/pagination.model.js.map +1 -1
  159. package/models/permission.model.js +3 -1
  160. package/models/permission.model.js.map +1 -1
  161. package/models/report-builder-dashboard-builder.model.js +3 -1
  162. package/models/report-builder-dashboard-builder.model.js.map +1 -1
  163. package/models/report-builder-library.model.js +3 -1
  164. package/models/report-builder-library.model.js.map +1 -1
  165. package/models/report-builder-report.model.js +3 -1
  166. package/models/report-builder-report.model.js.map +1 -1
  167. package/models/report-builder.model.js +3 -1
  168. package/models/report-builder.model.js.map +1 -1
  169. package/models/select-data-label.model.js +3 -1
  170. package/models/select-data-label.model.js.map +1 -1
  171. package/models/server-response.model.js +3 -1
  172. package/models/server-response.model.js.map +1 -1
  173. package/models/subscription.model.js +3 -1
  174. package/models/subscription.model.js.map +1 -1
  175. package/models/support-ticket.model.js +3 -1
  176. package/models/support-ticket.model.js.map +1 -1
  177. package/models/user-group.model.js +3 -1
  178. package/models/user-group.model.js.map +1 -1
  179. package/models/user-guide.model.js +3 -1
  180. package/models/user-guide.model.js.map +1 -1
  181. package/models/user.model.js +3 -1
  182. package/models/user.model.js.map +1 -1
  183. package/package.json +1 -2
  184. package/public_api.js +78 -1
  185. package/public_api.js.map +1 -1
  186. package/publications/app-status.js +16 -1
  187. package/publications/app-status.js.map +1 -1
  188. package/publications/app-version.js +16 -1
  189. package/publications/app-version.js.map +1 -1
  190. package/publications/cron-jobs.js +32 -1
  191. package/publications/cron-jobs.js.map +1 -1
  192. package/publications/files.js +36 -1
  193. package/publications/files.js.map +1 -1
  194. package/publications/flags.js +22 -1
  195. package/publications/flags.js.map +1 -1
  196. package/publications/logs.js +90 -1
  197. package/publications/logs.js.map +1 -1
  198. package/publications/method-calls.js +16 -1
  199. package/publications/method-calls.js.map +1 -1
  200. package/publications/method-responses.js +16 -1
  201. package/publications/method-responses.js.map +1 -1
  202. package/publications/notifications.js +16 -1
  203. package/publications/notifications.js.map +1 -1
  204. package/publications/report-builder-dashboard-builders.js +42 -1
  205. package/publications/report-builder-dashboard-builders.js.map +1 -1
  206. package/publications/report-builder-libraries.js +89 -1
  207. package/publications/report-builder-libraries.js.map +1 -1
  208. package/publications/report-builder-reports.js +50 -1
  209. package/publications/report-builder-reports.js.map +1 -1
  210. package/publications/super-admin.js +16 -1
  211. package/publications/super-admin.js.map +1 -1
  212. package/publications/user-groups.js +16 -1
  213. package/publications/user-groups.js.map +1 -1
  214. package/publications/user-guides.js +16 -1
  215. package/publications/user-guides.js.map +1 -1
  216. package/server-app.js +682 -1
  217. package/server-app.js.map +1 -1
  218. package/util/common.js +498 -1
  219. package/util/common.js.map +1 -1
  220. package/util/schema-report-builder.js +452 -1
  221. package/util/schema-report-builder.js.map +1 -1
package/http/auth.js CHANGED
@@ -1,2 +1,698 @@
1
- "use strict";var __awaiter=this&&this.__awaiter||function(e,r,n,t){return new(n||(n=Promise))((function(s,o){function fulfilled(e){try{step(t.next(e))}catch(e){o(e)}}function rejected(e){try{step(t.throw(e))}catch(e){o(e)}}function step(e){e.done?s(e.value):function adopt(e){return e instanceof n?e:new n((function(r){r(e)}))}(e.value).then(fulfilled,rejected)}step((t=t.apply(e,r||[])).next())}))},__generator=this&&this.__generator||function(e,r){var n,t,s,o,i={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]};return o={next:verb(0),throw:verb(1),return:verb(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function verb(o){return function(a){return function step(o){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,t&&(s=2&o[0]?t.return:o[0]?t.throw||((s=t.return)&&s.call(t),0):t.next)&&!(s=s.call(t,o[1])).done)return s;switch(t=0,s&&(o=[2&o[0],s.value]),o[0]){case 0:case 1:s=o;break;case 4:return i.label++,{value:o[1],done:!1};case 5:i.label++,t=o[1],o=[0];continue;case 7:o=i.ops.pop(),i.trys.pop();continue;default:if(!(s=i.trys,(s=s.length>0&&s[s.length-1])||6!==o[0]&&2!==o[0])){i=0;continue}if(3===o[0]&&(!s||o[1]>s[0]&&o[1]<s[3])){i.label=o[1];break}if(6===o[0]&&i.label<s[1]){i.label=s[1],s=o;break}if(s&&i.label<s[2]){i.label=s[2],i.ops.push(o);break}s[2]&&i.ops.pop(),i.trys.pop();continue}o=r.call(e,i)}catch(e){o=[6,e],t=0}finally{n=s=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupAuthRoutes=void 0;var user_collection_1=require("../collections/user.collection"),jwt=require("jsonwebtoken"),handlebars=require("handlebars"),__1=require(".."),simpl_schema_1=require("simpl-schema");function setupAuthRoutes(e,r,n){var t=this;r.post("/login",(function(r,s){return __awaiter(t,void 0,void 0,(function(){var t,o,i,a,l,d;return __generator(this,(function(u){switch(u.label){case 0:return r.headers.origin===n.ROOT_URL||r.headers.origin===n.SEC_ROOT_URL?[3,1]:(s.send(JSON.stringify({error:!0,result:"Invalid header"})),[3,8]);case 1:t=r.body,o=new simpl_schema_1.default({username:{type:String},password:{type:String}});try{o.validate(t)}catch(e){if(e)return console.error("Error in HTTP Check (/login)",e),__1.ResolveIOServer.getMainServer().getMethodManager().sendEmail("dev@resolveio.com",__1.ResolveIOServer.getClientName()+"HTTP - Error Detected","Match Error On HTTP /login\n\nData Being Checked\n"+JSON.stringify(t,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2)),s.send(JSON.stringify({error:!0,result:"Invalid Parameters"})),[2]}return[4,user_collection_1.Users.findOne({username:t.username})];case 2:return(i=u.sent())?[3,4]:[4,user_collection_1.Users.findOne({email:t.username})];case 3:i=u.sent(),u.label=4;case 4:return i?[4,user_collection_1.Users.authenticate(i,t.password)]:(s.send(JSON.stringify({error:!0,result:"Invalid Username And Password"})),[2]);case 5:return(a=u.sent()).error?("Too Many Attempts"===a.error?(s.send(JSON.stringify({error:!0,result:a.error+". A password reset link has been sent to your email, please reset your password."})),i.services.forgot_password=jwt.sign({id_user:i._id},n.JWT_SECRET),l={userToChangePassword:i.fullname,userWhoResetPassword:__1.ResolveIOServer.getClientName()+" System",url:n.ROOT_URL+"/forgot-password?"+encodeURIComponent(n.SERVER_URL)+"&"+i.services.forgot_password},user_collection_1.Users.updateOne({_id:i._id},{$set:{services:i.services}}).then((function(r){e.getMethodManager().readFile("email-templates/forgot-password.html").then((function(r){var n=handlebars.compile(r);handlebars.registerHelper("equals",(function(e,r){return e===r})),e.getMethodManager().sendEmail(i.email,"ResolveIO ("+__1.ResolveIOServer.getClientName()+") - Forgot Password","",n(l))}),(function(e){return console.log(e)}))}),(function(e){}))):"No Salt Value Stored"===a.error?(s.send(JSON.stringify({error:!0,result:"A password reset link has been sent to your email, please reset your password."})),i.services.forgot_password=jwt.sign({id_user:i._id},n.JWT_SECRET),d={userToChangePassword:i.fullname,userWhoResetPassword:__1.ResolveIOServer.getClientName()+" System",url:n.ROOT_URL+"/forgot-password?"+encodeURIComponent(n.SERVER_URL)+"&"+i.services.forgot_password},user_collection_1.Users.updateOne({_id:i._id},{$set:{services:i.services}}).then((function(r){e.getMethodManager().readFile("email-templates/forgot-password.html").then((function(r){var n=handlebars.compile(r);handlebars.registerHelper("equals",(function(e,r){return e===r})),e.getMethodManager().sendEmail(i.email,"ResolveIO ("+__1.ResolveIOServer.getClientName()+") - Forgot Password","",n(d))}),(function(e){return console.log(e)}))}),(function(e){}))):s.send(JSON.stringify({error:!0,result:a.error})),[3,8]):[3,6];case 6:return a&&a.data&&a.data.active?[4,user_collection_1.Users.resetAttempts(a.data)]:[3,8];case 7:u.sent(),s.send(JSON.stringify({error:!1,result:{token:jwt.sign({id_user:a.data._id},n.JWT_SECRET,{expiresIn:7776e6})}})),u.label=8;case 8:return[2]}}))}))})),r.post("/accessToken",(function(e,r){return __awaiter(this,void 0,void 0,(function(){var t,s,o=this;return __generator(this,(function(i){if(e.headers.origin!==n.ROOT_URL&&e.headers.origin!==n.SEC_ROOT_URL&&e.headers.origin!==n.RESOLVEIO_URL&&e.headers.origin!==n.RESOLVEIO_SECONDARY_URL)r.send(JSON.stringify({error:!0,result:"Invalid header"}));else{t=e.body,s=new simpl_schema_1.default({refreshToken:{type:String},appVersion:{type:Number}});try{s.validate(t)}catch(e){if(e)return console.error("Error in HTTP Check (/accessToken)",e),__1.ResolveIOServer.getMainServer().getMethodManager().sendEmail("dev@resolveio.com",__1.ResolveIOServer.getClientName()+"HTTP - Error Detected","Match Error On HTTP /accessToken\n\nData Being Checked\n"+JSON.stringify(t,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2)),r.send(JSON.stringify({error:!0,result:"Invalid Parameters"})),[2]}n.ROOT_URL,jwt.verify(t.refreshToken,n.JWT_SECRET,(function(e,t){e?r.send(JSON.stringify({error:!0,result:"Invalid Token"})):user_collection_1.Users.findById(t.id_user).then((function(e){return __awaiter(o,void 0,void 0,(function(){return __generator(this,(function(t){switch(t.label){case 0:return e?e.active?[4,user_collection_1.Users.resetAttempts(e)]:[3,2]:[3,4];case 1:return t.sent(),r.send(JSON.stringify({error:!1,result:{token:jwt.sign({id_user:e._id},n.JWT_SECRET,{expiresIn:2592e5}),user:e}})),[3,3];case 2:r.send(JSON.stringify({error:!0,result:"Account is Disabled"})),t.label=3;case 3:return[3,5];case 4:r.send(JSON.stringify({error:!0,result:"Invalid User"})),t.label=5;case 5:return[2]}}))}))}),(function(e){r.send(JSON.stringify({error:!0,result:"Invalid Mongo Get User"}))}))}))}return[2]}))}))})),r.post("/userWithEnrollmentToken",(function(e,r){if(e.headers.origin!==n.ROOT_URL&&e.headers.origin!==n.SEC_ROOT_URL&&e.headers.origin!==n.RESOLVEIO_URL&&e.headers.origin!==n.RESOLVEIO_SECONDARY_URL)r.send(JSON.stringify({error:!0,result:"Invalid header"}));else{var t=e.body,s=new simpl_schema_1.default({enrollmentToken:{type:String}});try{s.validate(t)}catch(e){if(e)return console.error("Error in HTTP Check (/userWithEnrollmentToken)",e),__1.ResolveIOServer.getMainServer().getMethodManager().sendEmail("dev@resolveio.com",__1.ResolveIOServer.getClientName()+"HTTP - Error Detected","Match Error On HTTP /userWithEnrollmentToken\n\nData Being Checked\n"+JSON.stringify(t,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2)),void r.send(JSON.stringify({error:!0,result:"Invalid Parameters"}))}jwt.verify(t.enrollmentToken,n.JWT_SECRET,(function(e,n){e?r.send(JSON.stringify({error:!0,result:"Invalid Token"})):user_collection_1.Users.findOne({$and:[{_id:n.id_user},{"services.enrollment":t.enrollmentToken}]},{projection:{_id:1,__v:1,username:1,active:1}}).then((function(e){e?e.active?r.send(JSON.stringify({error:!1,result:{user:e}})):r.send(JSON.stringify({error:!0,result:"Account is Disabled"})):r.send(JSON.stringify({error:!0,result:"Invalid User"}))}),(function(e){r.send(JSON.stringify({error:!0,result:"Invalid Mongo Get User"}))}))}))}})),r.post("/setUserWithEnrollmentToken",(function(e,r){var t=this;if(e.headers.origin!==n.ROOT_URL&&e.headers.origin!==n.SEC_ROOT_URL&&e.headers.origin!==n.RESOLVEIO_URL&&e.headers.origin!==n.RESOLVEIO_SECONDARY_URL)r.send(JSON.stringify({error:!0,result:"Invalid header"}));else{var s=e.body,o=new simpl_schema_1.default({enrollmentToken:{type:String},password:{type:String}});try{o.validate(s)}catch(e){if(e)return console.error("Error in HTTP Check (/setUserWithEnrollmentToken)",e),__1.ResolveIOServer.getMainServer().getMethodManager().sendEmail("dev@resolveio.com",__1.ResolveIOServer.getClientName()+"HTTP - Error Detected","Match Error On HTTP /setUserWithEnrollmentToken\n\nData Being Checked\n"+JSON.stringify(s,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2)),void r.send(JSON.stringify({error:!0,result:"Invalid Parameters"}))}jwt.verify(s.enrollmentToken,n.JWT_SECRET,(function(e,n){return __awaiter(t,void 0,void 0,(function(){var t=this;return __generator(this,(function(o){return e?r.send(JSON.stringify({error:!0,result:"Invalid Token"})):user_collection_1.Users.findOne({$and:[{_id:n.id_user},{"services.enrollment":s.enrollmentToken}]}).then((function(e){return __awaiter(t,void 0,void 0,(function(){return __generator(this,(function(n){switch(n.label){case 0:return e?e.active?[4,user_collection_1.Users.setPassword(e,s.password)]:[3,2]:[3,4];case 1:return n.sent(),r.send(JSON.stringify({error:!1,result:!0})),[3,3];case 2:r.send(JSON.stringify({error:!0,result:"Account is Disabled"})),n.label=3;case 3:return[3,5];case 4:r.send(JSON.stringify({error:!0,result:"Invalid User"})),n.label=5;case 5:return[2]}}))}))}),(function(e){r.send(JSON.stringify({error:!0,result:"Invalid Mongo Get User"}))})),[2]}))}))}))}})),r.post("/userWithForgotPasswordToken",(function(e,r){if(e.headers.origin!==n.ROOT_URL&&e.headers.origin!==n.SEC_ROOT_URL&&e.headers.origin!==n.RESOLVEIO_URL&&e.headers.origin!==n.RESOLVEIO_SECONDARY_URL)r.send(JSON.stringify({error:!0,result:"Invalid header"}));else{var t=e.body,s=new simpl_schema_1.default({forgotPasswordToken:{type:String}});try{s.validate(t)}catch(e){if(e)return console.error("Error in HTTP Check (/userWithForgotPasswordToken)",e),__1.ResolveIOServer.getMainServer().getMethodManager().sendEmail("dev@resolveio.com",__1.ResolveIOServer.getClientName()+"HTTP - Error Detected","Match Error On HTTP /userWithForgotPasswordToken\n\nData Being Checked\n"+JSON.stringify(t,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2)),void r.send(JSON.stringify({error:!0,result:"Invalid Parameters"}))}jwt.verify(t.forgotPasswordToken,n.JWT_SECRET,(function(e,n){e?r.send(JSON.stringify({error:!0,result:"Invalid Token"})):user_collection_1.Users.findOne({$and:[{_id:n.id_user},{"services.forgot_password":t.forgotPasswordToken}]},{projection:{_id:1,__v:1,username:1,active:1}}).then((function(e){e?e.active?r.send(JSON.stringify({error:!1,result:{user:e}})):r.send(JSON.stringify({error:!0,result:"Account is Disabled"})):r.send(JSON.stringify({error:!0,result:"Invalid Token"}))}),(function(e){r.send(JSON.stringify({error:!0,result:"Invalid Mongo Get User"}))}))}))}})),r.post("/setUserWithForgotPasswordToken",(function(e,r){var t=this;if(e.headers.origin!==n.ROOT_URL&&e.headers.origin!==n.SEC_ROOT_URL&&e.headers.origin!==n.RESOLVEIO_URL&&e.headers.origin!==n.RESOLVEIO_SECONDARY_URL)r.send(JSON.stringify({error:!0,result:"Invalid header"}));else{var s=e.body,o=new simpl_schema_1.default({forgotPasswordToken:{type:String},password:{type:String}});try{o.validate(s)}catch(e){if(e)return console.error("Error in HTTP Check (/setUserWithForgotPasswordToken)",e),__1.ResolveIOServer.getMainServer().getMethodManager().sendEmail("dev@resolveio.com",__1.ResolveIOServer.getClientName()+"HTTP - Error Detected","Match Error On HTTP /setUserWithForgotPasswordToken\n\nData Being Checked\n"+JSON.stringify(s,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2)),void r.send(JSON.stringify({error:!0,result:"Invalid Parameters"}))}jwt.verify(s.forgotPasswordToken,n.JWT_SECRET,(function(e,n){return __awaiter(t,void 0,void 0,(function(){var t=this;return __generator(this,(function(o){return e?r.send(JSON.stringify({error:!0,result:"Invalid Token"})):user_collection_1.Users.findOne({$and:[{_id:n.id_user},{"services.forgot_password":s.forgotPasswordToken}]}).then((function(e){return __awaiter(t,void 0,void 0,(function(){return __generator(this,(function(n){switch(n.label){case 0:return e?e.active?[4,user_collection_1.Users.setPassword(e,s.password)]:[3,2]:[3,4];case 1:return n.sent(),r.send(JSON.stringify({error:!1,result:!0})),[3,3];case 2:r.send(JSON.stringify({error:!0,result:"Account is Disabled"})),n.label=3;case 3:return[3,5];case 4:r.send(JSON.stringify({error:!0,result:"Invalid User"})),n.label=5;case 5:return[2]}}))}))}),(function(e){r.send(JSON.stringify({error:!0,result:"Invalid Mongo Get User"}))})),[2]}))}))}))}})),r.post("/resetPassword",(function(r,s){return __awaiter(t,void 0,void 0,(function(){var t,o,i;return __generator(this,(function(a){switch(a.label){case 0:return r.headers.origin===n.ROOT_URL||r.headers.origin===n.SEC_ROOT_URL?[3,1]:(s.send(JSON.stringify({error:!0,result:"Invalid header"})),[3,5]);case 1:t=r.body,o=new simpl_schema_1.default({username:{type:String}});try{o.validate(t)}catch(e){if(e)return console.error("Error in HTTP Check (/resetPassword)",e),__1.ResolveIOServer.getMainServer().getMethodManager().sendEmail("dev@resolveio.com",__1.ResolveIOServer.getClientName()+"HTTP - Error Detected","Match Error On HTTP /resetPassword\n\nData Being Checked\n"+JSON.stringify(t,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2)),s.send(JSON.stringify({error:!0,result:"Invalid Parameters"})),[2]}return[4,user_collection_1.Users.findOne({username:t.username})];case 2:return(i=a.sent())?[3,4]:[4,user_collection_1.Users.findOne({email:t.username})];case 3:i=a.sent(),a.label=4;case 4:i&&e.getMethodManager().callMethodInternal.call(e.getMethodManager(),"resetUserPassword",i._id),s.send(JSON.stringify({error:!1,result:""})),a.label=5;case 5:return[2]}}))}))}))}exports.setupAuthRoutes=setupAuthRoutes;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.setupAuthRoutes = void 0;
40
+ var user_collection_1 = require("../collections/user.collection");
41
+ var jwt = require("jsonwebtoken");
42
+ var handlebars = require("handlebars");
43
+ var __1 = require("..");
44
+ var simpl_schema_1 = require("simpl-schema");
45
+ function setupAuthRoutes(mainServer, app, serverConfig) {
46
+ var _this = this;
47
+ // Login via HTTP, return refresh token if authenticated
48
+ app.post('/login', function (request, response) { return __awaiter(_this, void 0, void 0, function () {
49
+ var body, schema, user_1, resAuth, emailData_1, emailData_2;
50
+ return __generator(this, function (_a) {
51
+ switch (_a.label) {
52
+ case 0:
53
+ if (!(request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'])) return [3 /*break*/, 1];
54
+ response.send(JSON.stringify({
55
+ error: true,
56
+ result: 'Invalid header'
57
+ }));
58
+ return [3 /*break*/, 8];
59
+ case 1:
60
+ body = request.body;
61
+ schema = new simpl_schema_1.default({
62
+ username: {
63
+ type: String
64
+ },
65
+ password: {
66
+ type: String
67
+ }
68
+ });
69
+ try {
70
+ schema.validate(body);
71
+ }
72
+ catch (errors) {
73
+ if (errors) {
74
+ console.error('Error in HTTP Check (/login)', errors);
75
+ __1.ResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', __1.ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/login' + '\n\nData Being Checked\n' + JSON.stringify(body, null, 2) + '\n\nErrors\n' + JSON.stringify(errors, null, 2));
76
+ response.send(JSON.stringify({
77
+ error: true,
78
+ result: 'Invalid Parameters'
79
+ }));
80
+ return [2 /*return*/];
81
+ }
82
+ }
83
+ return [4 /*yield*/, user_collection_1.Users.findOne({ username: body.username })];
84
+ case 2:
85
+ user_1 = _a.sent();
86
+ if (!!user_1) return [3 /*break*/, 4];
87
+ return [4 /*yield*/, user_collection_1.Users.findOne({ email: body.username })];
88
+ case 3:
89
+ user_1 = _a.sent();
90
+ _a.label = 4;
91
+ case 4:
92
+ if (!user_1) {
93
+ response.send(JSON.stringify({
94
+ error: true,
95
+ result: 'Invalid Username And Password'
96
+ }));
97
+ return [2 /*return*/];
98
+ }
99
+ return [4 /*yield*/, user_collection_1.Users.authenticate(user_1, body.password)];
100
+ case 5:
101
+ resAuth = _a.sent();
102
+ if (!resAuth['error']) return [3 /*break*/, 6];
103
+ if (resAuth['error'] === 'Too Many Attempts') {
104
+ response.send(JSON.stringify({
105
+ error: true,
106
+ result: resAuth['error'] + '. A password reset link has been sent to your email, please reset your password.'
107
+ }));
108
+ user_1.services['forgot_password'] = jwt.sign({ id_user: user_1._id }, serverConfig['JWT_SECRET']);
109
+ emailData_1 = {
110
+ userToChangePassword: user_1.fullname,
111
+ userWhoResetPassword: __1.ResolveIOServer.getClientName() + ' System',
112
+ url: serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(serverConfig['SERVER_URL']) + '&' + user_1.services['forgot_password']
113
+ };
114
+ user_collection_1.Users.updateOne({ _id: user_1._id }, { $set: { services: user_1.services } }).then(function (resUp) {
115
+ mainServer.getMethodManager().readFile('email-templates/forgot-password.html').then(function (html) {
116
+ var template = handlebars.compile(html);
117
+ handlebars.registerHelper('equals', function (a, b) {
118
+ return a === b;
119
+ });
120
+ mainServer.getMethodManager().sendEmail(user_1.email, 'ResolveIO (' + __1.ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData_1));
121
+ }, function (errEmail) { return console.log(errEmail); });
122
+ }, function (errUp) { });
123
+ }
124
+ else if (resAuth['error'] === 'No Salt Value Stored') {
125
+ response.send(JSON.stringify({
126
+ error: true,
127
+ result: 'A password reset link has been sent to your email, please reset your password.'
128
+ }));
129
+ user_1.services['forgot_password'] = jwt.sign({ id_user: user_1._id }, serverConfig['JWT_SECRET']);
130
+ emailData_2 = {
131
+ userToChangePassword: user_1.fullname,
132
+ userWhoResetPassword: __1.ResolveIOServer.getClientName() + ' System',
133
+ url: serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(serverConfig['SERVER_URL']) + '&' + user_1.services['forgot_password']
134
+ };
135
+ user_collection_1.Users.updateOne({ _id: user_1._id }, { $set: { services: user_1.services } }).then(function (resUp) {
136
+ mainServer.getMethodManager().readFile('email-templates/forgot-password.html').then(function (html) {
137
+ var template = handlebars.compile(html);
138
+ handlebars.registerHelper('equals', function (a, b) {
139
+ return a === b;
140
+ });
141
+ mainServer.getMethodManager().sendEmail(user_1.email, 'ResolveIO (' + __1.ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData_2));
142
+ }, function (errEmail) { return console.log(errEmail); });
143
+ }, function (err) { });
144
+ }
145
+ else {
146
+ response.send(JSON.stringify({
147
+ error: true,
148
+ result: resAuth['error']
149
+ }));
150
+ }
151
+ return [3 /*break*/, 8];
152
+ case 6:
153
+ if (!(resAuth && resAuth['data'] && resAuth['data'].active)) return [3 /*break*/, 8];
154
+ return [4 /*yield*/, user_collection_1.Users.resetAttempts(resAuth['data'])];
155
+ case 7:
156
+ _a.sent();
157
+ response.send(JSON.stringify({
158
+ error: false,
159
+ result: {
160
+ token: jwt.sign({ id_user: resAuth['data']._id }, serverConfig['JWT_SECRET'], {
161
+ expiresIn: 90 * 24 * 60 * 60 * 1000 // 90 days
162
+ })
163
+ }
164
+ }));
165
+ _a.label = 8;
166
+ case 8: return [2 /*return*/];
167
+ }
168
+ });
169
+ }); });
170
+ app.post('/accessToken', function (request, response) {
171
+ return __awaiter(this, void 0, void 0, function () {
172
+ var body, schema;
173
+ var _this = this;
174
+ return __generator(this, function (_a) {
175
+ if (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_SECONDARY_URL']) {
176
+ response.send(JSON.stringify({
177
+ error: true,
178
+ result: 'Invalid header'
179
+ }));
180
+ }
181
+ else {
182
+ body = request.body;
183
+ schema = new simpl_schema_1.default({
184
+ refreshToken: {
185
+ type: String
186
+ },
187
+ appVersion: {
188
+ type: Number
189
+ }
190
+ });
191
+ try {
192
+ schema.validate(body);
193
+ }
194
+ catch (errors) {
195
+ if (errors) {
196
+ console.error('Error in HTTP Check (/accessToken)', errors);
197
+ __1.ResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', __1.ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/accessToken' + '\n\nData Being Checked\n' + JSON.stringify(body, null, 2) + '\n\nErrors\n' + JSON.stringify(errors, null, 2));
198
+ response.send(JSON.stringify({
199
+ error: true,
200
+ result: 'Invalid Parameters'
201
+ }));
202
+ return [2 /*return*/];
203
+ }
204
+ }
205
+ if (serverConfig['ROOT_URL'] !== 'http://localhost:4200') {
206
+ jwt.verify(body.refreshToken, serverConfig['JWT_SECRET'], function (err, decoded) {
207
+ if (err) {
208
+ response.send(JSON.stringify({
209
+ error: true,
210
+ result: 'Invalid Token'
211
+ }));
212
+ }
213
+ else {
214
+ user_collection_1.Users.findById(decoded['id_user']).then(function (user) { return __awaiter(_this, void 0, void 0, function () {
215
+ return __generator(this, function (_a) {
216
+ switch (_a.label) {
217
+ case 0:
218
+ if (!user) return [3 /*break*/, 4];
219
+ if (!user.active) return [3 /*break*/, 2];
220
+ return [4 /*yield*/, user_collection_1.Users.resetAttempts(user)];
221
+ case 1:
222
+ _a.sent();
223
+ response.send(JSON.stringify({
224
+ error: false,
225
+ result: {
226
+ token: jwt.sign({ id_user: user._id }, serverConfig['JWT_SECRET'], {
227
+ expiresIn: 3 * 24 * 60 * 60 * 1000 // 3 days
228
+ }),
229
+ user: user
230
+ }
231
+ }));
232
+ return [3 /*break*/, 3];
233
+ case 2:
234
+ response.send(JSON.stringify({
235
+ error: true,
236
+ result: 'Account is Disabled'
237
+ }));
238
+ _a.label = 3;
239
+ case 3: return [3 /*break*/, 5];
240
+ case 4:
241
+ response.send(JSON.stringify({
242
+ error: true,
243
+ result: 'Invalid User'
244
+ }));
245
+ _a.label = 5;
246
+ case 5: return [2 /*return*/];
247
+ }
248
+ });
249
+ }); }, function (error) {
250
+ response.send(JSON.stringify({
251
+ error: true,
252
+ result: 'Invalid Mongo Get User'
253
+ }));
254
+ });
255
+ }
256
+ });
257
+ }
258
+ else {
259
+ jwt.verify(body.refreshToken, serverConfig['JWT_SECRET'], function (err, decoded) {
260
+ if (err) {
261
+ response.send(JSON.stringify({
262
+ error: true,
263
+ result: 'Invalid Token'
264
+ }));
265
+ }
266
+ else {
267
+ user_collection_1.Users.findById(decoded['id_user']).then(function (user) { return __awaiter(_this, void 0, void 0, function () {
268
+ return __generator(this, function (_a) {
269
+ switch (_a.label) {
270
+ case 0:
271
+ if (!user) return [3 /*break*/, 4];
272
+ if (!user.active) return [3 /*break*/, 2];
273
+ return [4 /*yield*/, user_collection_1.Users.resetAttempts(user)];
274
+ case 1:
275
+ _a.sent();
276
+ response.send(JSON.stringify({
277
+ error: false,
278
+ result: {
279
+ token: jwt.sign({ id_user: user._id }, serverConfig['JWT_SECRET'], {
280
+ expiresIn: 3 * 24 * 60 * 60 * 1000 // 3 days
281
+ }),
282
+ user: user
283
+ }
284
+ }));
285
+ return [3 /*break*/, 3];
286
+ case 2:
287
+ response.send(JSON.stringify({
288
+ error: true,
289
+ result: 'Account is Disabled'
290
+ }));
291
+ _a.label = 3;
292
+ case 3: return [3 /*break*/, 5];
293
+ case 4:
294
+ response.send(JSON.stringify({
295
+ error: true,
296
+ result: 'Invalid User'
297
+ }));
298
+ _a.label = 5;
299
+ case 5: return [2 /*return*/];
300
+ }
301
+ });
302
+ }); }, function (error) {
303
+ response.send(JSON.stringify({
304
+ error: true,
305
+ result: 'Invalid Mongo Get User'
306
+ }));
307
+ });
308
+ }
309
+ });
310
+ }
311
+ }
312
+ return [2 /*return*/];
313
+ });
314
+ });
315
+ });
316
+ app.post('/userWithEnrollmentToken', function (request, response) {
317
+ if (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_SECONDARY_URL']) {
318
+ response.send(JSON.stringify({
319
+ error: true,
320
+ result: 'Invalid header'
321
+ }));
322
+ }
323
+ else {
324
+ var body_1 = request.body;
325
+ var schema = new simpl_schema_1.default({
326
+ enrollmentToken: {
327
+ type: String
328
+ }
329
+ });
330
+ try {
331
+ schema.validate(body_1);
332
+ }
333
+ catch (errors) {
334
+ if (errors) {
335
+ console.error('Error in HTTP Check (/userWithEnrollmentToken)', errors);
336
+ __1.ResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', __1.ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/userWithEnrollmentToken' + '\n\nData Being Checked\n' + JSON.stringify(body_1, null, 2) + '\n\nErrors\n' + JSON.stringify(errors, null, 2));
337
+ response.send(JSON.stringify({
338
+ error: true,
339
+ result: 'Invalid Parameters'
340
+ }));
341
+ return;
342
+ }
343
+ }
344
+ jwt.verify(body_1.enrollmentToken, serverConfig['JWT_SECRET'], function (err, decoded) {
345
+ if (err) {
346
+ response.send(JSON.stringify({
347
+ error: true,
348
+ result: 'Invalid Token'
349
+ }));
350
+ }
351
+ else {
352
+ user_collection_1.Users.findOne({
353
+ $and: [
354
+ { _id: decoded['id_user'] },
355
+ { 'services.enrollment': body_1.enrollmentToken }
356
+ ]
357
+ }, { projection: { _id: 1, __v: 1, username: 1, active: 1 } }).then(function (user) {
358
+ if (user) {
359
+ if (user.active) {
360
+ response.send(JSON.stringify({
361
+ error: false,
362
+ result: {
363
+ user: user
364
+ }
365
+ }));
366
+ }
367
+ else {
368
+ response.send(JSON.stringify({
369
+ error: true,
370
+ result: 'Account is Disabled'
371
+ }));
372
+ }
373
+ }
374
+ else {
375
+ response.send(JSON.stringify({
376
+ error: true,
377
+ result: 'Invalid User'
378
+ }));
379
+ }
380
+ }, function (error) {
381
+ response.send(JSON.stringify({
382
+ error: true,
383
+ result: 'Invalid Mongo Get User'
384
+ }));
385
+ });
386
+ }
387
+ });
388
+ }
389
+ });
390
+ app.post('/setUserWithEnrollmentToken', function (request, response) {
391
+ var _this = this;
392
+ if (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_SECONDARY_URL']) {
393
+ response.send(JSON.stringify({
394
+ error: true,
395
+ result: 'Invalid header'
396
+ }));
397
+ }
398
+ else {
399
+ var body_2 = request.body;
400
+ var schema = new simpl_schema_1.default({
401
+ enrollmentToken: {
402
+ type: String
403
+ },
404
+ password: {
405
+ type: String
406
+ }
407
+ });
408
+ try {
409
+ schema.validate(body_2);
410
+ }
411
+ catch (errors) {
412
+ if (errors) {
413
+ console.error('Error in HTTP Check (/setUserWithEnrollmentToken)', errors);
414
+ __1.ResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', __1.ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/setUserWithEnrollmentToken' + '\n\nData Being Checked\n' + JSON.stringify(body_2, null, 2) + '\n\nErrors\n' + JSON.stringify(errors, null, 2));
415
+ response.send(JSON.stringify({
416
+ error: true,
417
+ result: 'Invalid Parameters'
418
+ }));
419
+ return;
420
+ }
421
+ }
422
+ jwt.verify(body_2.enrollmentToken, serverConfig['JWT_SECRET'], function (err, decoded) { return __awaiter(_this, void 0, void 0, function () {
423
+ var _this = this;
424
+ return __generator(this, function (_a) {
425
+ if (err) {
426
+ response.send(JSON.stringify({
427
+ error: true,
428
+ result: 'Invalid Token'
429
+ }));
430
+ }
431
+ else {
432
+ user_collection_1.Users.findOne({
433
+ $and: [
434
+ { _id: decoded['id_user'] },
435
+ { 'services.enrollment': body_2.enrollmentToken }
436
+ ]
437
+ }).then(function (user) { return __awaiter(_this, void 0, void 0, function () {
438
+ return __generator(this, function (_a) {
439
+ switch (_a.label) {
440
+ case 0:
441
+ if (!user) return [3 /*break*/, 4];
442
+ if (!user.active) return [3 /*break*/, 2];
443
+ return [4 /*yield*/, user_collection_1.Users.setPassword(user, body_2.password)];
444
+ case 1:
445
+ _a.sent();
446
+ response.send(JSON.stringify({
447
+ error: false,
448
+ result: true
449
+ }));
450
+ return [3 /*break*/, 3];
451
+ case 2:
452
+ response.send(JSON.stringify({
453
+ error: true,
454
+ result: 'Account is Disabled'
455
+ }));
456
+ _a.label = 3;
457
+ case 3: return [3 /*break*/, 5];
458
+ case 4:
459
+ response.send(JSON.stringify({
460
+ error: true,
461
+ result: 'Invalid User'
462
+ }));
463
+ _a.label = 5;
464
+ case 5: return [2 /*return*/];
465
+ }
466
+ });
467
+ }); }, function (error) {
468
+ response.send(JSON.stringify({
469
+ error: true,
470
+ result: 'Invalid Mongo Get User'
471
+ }));
472
+ });
473
+ }
474
+ return [2 /*return*/];
475
+ });
476
+ }); });
477
+ }
478
+ });
479
+ app.post('/userWithForgotPasswordToken', function (request, response) {
480
+ if (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_SECONDARY_URL']) {
481
+ response.send(JSON.stringify({
482
+ error: true,
483
+ result: 'Invalid header'
484
+ }));
485
+ }
486
+ else {
487
+ var body_3 = request.body;
488
+ var schema = new simpl_schema_1.default({
489
+ forgotPasswordToken: {
490
+ type: String
491
+ }
492
+ });
493
+ try {
494
+ schema.validate(body_3);
495
+ }
496
+ catch (errors) {
497
+ if (errors) {
498
+ console.error('Error in HTTP Check (/userWithForgotPasswordToken)', errors);
499
+ __1.ResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', __1.ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/userWithForgotPasswordToken' + '\n\nData Being Checked\n' + JSON.stringify(body_3, null, 2) + '\n\nErrors\n' + JSON.stringify(errors, null, 2));
500
+ response.send(JSON.stringify({
501
+ error: true,
502
+ result: 'Invalid Parameters'
503
+ }));
504
+ return;
505
+ }
506
+ }
507
+ jwt.verify(body_3.forgotPasswordToken, serverConfig['JWT_SECRET'], function (err, decoded) {
508
+ if (err) {
509
+ response.send(JSON.stringify({
510
+ error: true,
511
+ result: 'Invalid Token'
512
+ }));
513
+ }
514
+ else {
515
+ user_collection_1.Users.findOne({
516
+ $and: [
517
+ { _id: decoded['id_user'] },
518
+ { 'services.forgot_password': body_3.forgotPasswordToken }
519
+ ]
520
+ }, { projection: { _id: 1, __v: 1, username: 1, active: 1 } }).then(function (user) {
521
+ if (user) {
522
+ if (user.active) {
523
+ response.send(JSON.stringify({
524
+ error: false,
525
+ result: {
526
+ user: user
527
+ }
528
+ }));
529
+ }
530
+ else {
531
+ response.send(JSON.stringify({
532
+ error: true,
533
+ result: 'Account is Disabled'
534
+ }));
535
+ }
536
+ }
537
+ else {
538
+ response.send(JSON.stringify({
539
+ error: true,
540
+ result: 'Invalid Token'
541
+ }));
542
+ }
543
+ }, function (error) {
544
+ response.send(JSON.stringify({
545
+ error: true,
546
+ result: 'Invalid Mongo Get User'
547
+ }));
548
+ });
549
+ }
550
+ });
551
+ }
552
+ });
553
+ app.post('/setUserWithForgotPasswordToken', function (request, response) {
554
+ var _this = this;
555
+ if (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_SECONDARY_URL']) {
556
+ response.send(JSON.stringify({
557
+ error: true,
558
+ result: 'Invalid header'
559
+ }));
560
+ }
561
+ else {
562
+ var body_4 = request.body;
563
+ var schema = new simpl_schema_1.default({
564
+ forgotPasswordToken: {
565
+ type: String
566
+ },
567
+ password: {
568
+ type: String
569
+ }
570
+ });
571
+ try {
572
+ schema.validate(body_4);
573
+ }
574
+ catch (errors) {
575
+ if (errors) {
576
+ console.error('Error in HTTP Check (/setUserWithForgotPasswordToken)', errors);
577
+ __1.ResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', __1.ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/setUserWithForgotPasswordToken' + '\n\nData Being Checked\n' + JSON.stringify(body_4, null, 2) + '\n\nErrors\n' + JSON.stringify(errors, null, 2));
578
+ response.send(JSON.stringify({
579
+ error: true,
580
+ result: 'Invalid Parameters'
581
+ }));
582
+ return;
583
+ }
584
+ }
585
+ jwt.verify(body_4.forgotPasswordToken, serverConfig['JWT_SECRET'], function (err, decoded) { return __awaiter(_this, void 0, void 0, function () {
586
+ var _this = this;
587
+ return __generator(this, function (_a) {
588
+ if (err) {
589
+ response.send(JSON.stringify({
590
+ error: true,
591
+ result: 'Invalid Token'
592
+ }));
593
+ }
594
+ else {
595
+ user_collection_1.Users.findOne({
596
+ $and: [
597
+ { _id: decoded['id_user'] },
598
+ { 'services.forgot_password': body_4.forgotPasswordToken }
599
+ ]
600
+ }).then(function (user) { return __awaiter(_this, void 0, void 0, function () {
601
+ return __generator(this, function (_a) {
602
+ switch (_a.label) {
603
+ case 0:
604
+ if (!user) return [3 /*break*/, 4];
605
+ if (!user.active) return [3 /*break*/, 2];
606
+ return [4 /*yield*/, user_collection_1.Users.setPassword(user, body_4.password)];
607
+ case 1:
608
+ _a.sent();
609
+ response.send(JSON.stringify({
610
+ error: false,
611
+ result: true
612
+ }));
613
+ return [3 /*break*/, 3];
614
+ case 2:
615
+ response.send(JSON.stringify({
616
+ error: true,
617
+ result: 'Account is Disabled'
618
+ }));
619
+ _a.label = 3;
620
+ case 3: return [3 /*break*/, 5];
621
+ case 4:
622
+ response.send(JSON.stringify({
623
+ error: true,
624
+ result: 'Invalid User'
625
+ }));
626
+ _a.label = 5;
627
+ case 5: return [2 /*return*/];
628
+ }
629
+ });
630
+ }); }, function (error) {
631
+ response.send(JSON.stringify({
632
+ error: true,
633
+ result: 'Invalid Mongo Get User'
634
+ }));
635
+ });
636
+ }
637
+ return [2 /*return*/];
638
+ });
639
+ }); });
640
+ }
641
+ });
642
+ app.post('/resetPassword', function (request, response) { return __awaiter(_this, void 0, void 0, function () {
643
+ var body, schema, user;
644
+ return __generator(this, function (_a) {
645
+ switch (_a.label) {
646
+ case 0:
647
+ if (!(request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'])) return [3 /*break*/, 1];
648
+ response.send(JSON.stringify({
649
+ error: true,
650
+ result: 'Invalid header'
651
+ }));
652
+ return [3 /*break*/, 5];
653
+ case 1:
654
+ body = request.body;
655
+ schema = new simpl_schema_1.default({
656
+ username: {
657
+ type: String
658
+ }
659
+ });
660
+ try {
661
+ schema.validate(body);
662
+ }
663
+ catch (errors) {
664
+ if (errors) {
665
+ console.error('Error in HTTP Check (/resetPassword)', errors);
666
+ __1.ResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', __1.ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/resetPassword' + '\n\nData Being Checked\n' + JSON.stringify(body, null, 2) + '\n\nErrors\n' + JSON.stringify(errors, null, 2));
667
+ response.send(JSON.stringify({
668
+ error: true,
669
+ result: 'Invalid Parameters'
670
+ }));
671
+ return [2 /*return*/];
672
+ }
673
+ }
674
+ return [4 /*yield*/, user_collection_1.Users.findOne({ username: body.username })];
675
+ case 2:
676
+ user = _a.sent();
677
+ if (!!user) return [3 /*break*/, 4];
678
+ return [4 /*yield*/, user_collection_1.Users.findOne({ email: body.username })];
679
+ case 3:
680
+ user = _a.sent();
681
+ _a.label = 4;
682
+ case 4:
683
+ if (user) {
684
+ mainServer.getMethodManager().callMethodInternal.call(mainServer.getMethodManager(), 'resetUserPassword', user._id);
685
+ }
686
+ response.send(JSON.stringify({
687
+ error: false,
688
+ result: ''
689
+ }));
690
+ _a.label = 5;
691
+ case 5: return [2 /*return*/];
692
+ }
693
+ });
694
+ }); });
695
+ }
696
+ exports.setupAuthRoutes = setupAuthRoutes;
697
+
2
698
  //# sourceMappingURL=auth.js.map