flexbiz-server 12.3.55 → 12.3.56

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 (1067) hide show
  1. package/package.json +2 -2
  2. package/server/app.js +13 -13
  3. package/server/auths/bearer.js +2 -2
  4. package/server/auths/facebook.js +11 -12
  5. package/server/auths/google.js +12 -13
  6. package/server/auths/local.js +45 -45
  7. package/server/cluster.js +11 -11
  8. package/server/controllers/controller.js +36 -36
  9. package/server/controllers/controllerRPT.js +10 -10
  10. package/server/controllers/controllerUtils.js +64 -64
  11. package/server/controllers/createHandler.js +34 -36
  12. package/server/controllers/createRouteHandler.js +2 -2
  13. package/server/controllers/deleteHandler.js +11 -12
  14. package/server/controllers/deleteManyHandler.js +1 -1
  15. package/server/controllers/exportHandler.js +17 -18
  16. package/server/controllers/findHandler.js +47 -50
  17. package/server/controllers/handlers.js +2 -2
  18. package/server/controllers/historyHandler.js +2 -2
  19. package/server/controllers/importFromExcelHandler.js +9 -9
  20. package/server/controllers/importFromGsHandler.js +10 -10
  21. package/server/controllers/importFromJsonHandler.js +3 -3
  22. package/server/controllers/importHandler.js +18 -19
  23. package/server/controllers/logHandler.js +3 -3
  24. package/server/controllers/rptCreateRouteHandler.js +3 -3
  25. package/server/controllers/rptExcelHandler.js +17 -17
  26. package/server/controllers/rptHandler.js +8 -8
  27. package/server/controllers/updateBookHandler.js +8 -8
  28. package/server/controllers/updateFieldHandler.js +12 -12
  29. package/server/controllers/updateHandler.js +37 -38
  30. package/server/controllers/updateKeyHandler.js +14 -15
  31. package/server/controllers/viewHandler.js +8 -9
  32. package/server/flow/FlowEngine.js +32 -32
  33. package/server/flow/WebhookManager.js +8 -8
  34. package/server/flow/handlers.js +1 -1
  35. package/server/flow/nodes/aiAnalysis.js +6 -6
  36. package/server/flow/nodes/customer.js +3 -3
  37. package/server/flow/nodes/data.js +5 -5
  38. package/server/flow/nodes/debug.js +2 -2
  39. package/server/flow/nodes/delay.js +1 -1
  40. package/server/flow/nodes/email.js +3 -3
  41. package/server/flow/nodes/event.js +11 -11
  42. package/server/flow/nodes/facebook.js +2 -2
  43. package/server/flow/nodes/facebookConversations.js +1 -1
  44. package/server/flow/nodes/facebookCreatePost.js +3 -3
  45. package/server/flow/nodes/facebookSendMessage.js +4 -4
  46. package/server/flow/nodes/forEachItem.js +5 -5
  47. package/server/flow/nodes/function.js +2 -2
  48. package/server/flow/nodes/httprequest.js +4 -4
  49. package/server/flow/nodes/inject.js +9 -9
  50. package/server/flow/nodes/pushNotification.js +5 -5
  51. package/server/flow/nodes/report.js +1 -1
  52. package/server/flow/nodes/saveData.js +2 -2
  53. package/server/flow/nodes/switch.js +13 -13
  54. package/server/flow/nodes/webhook.js +1 -1
  55. package/server/flow/nodes/zaloSendMessage.js +2 -2
  56. package/server/flow/utils.js +2 -2
  57. package/server/global.js +7 -7
  58. package/server/libs/BlockchainTransactionPool.js +3 -3
  59. package/server/libs/WorkerPool.js +2 -2
  60. package/server/libs/WorkerStaticPool.js +6 -6
  61. package/server/libs/WorkerStaticPool_v1.js +3 -3
  62. package/server/libs/assbonus.js +1 -1
  63. package/server/libs/backup.js +1 -1
  64. package/server/libs/blockchainconnect.js +12 -13
  65. package/server/libs/cdpsdiem.js +3 -3
  66. package/server/libs/cdpsdt.js +5 -5
  67. package/server/libs/cdpskh.js +6 -6
  68. package/server/libs/cdpsnphep.js +4 -4
  69. package/server/libs/cdpstk.js +9 -10
  70. package/server/libs/ckcn.js +11 -11
  71. package/server/libs/ckdiem.js +2 -2
  72. package/server/libs/ckdt.js +6 -6
  73. package/server/libs/cknphep.js +3 -3
  74. package/server/libs/cktk.js +4 -4
  75. package/server/libs/cktt.js +9 -9
  76. package/server/libs/ckvt.js +12 -12
  77. package/server/libs/ckvtcapphat.js +2 -2
  78. package/server/libs/ckvtnpp.js +3 -3
  79. package/server/libs/ckvttt.js +4 -4
  80. package/server/libs/createSocaitheongay.js +9 -9
  81. package/server/libs/ctdiem.js +3 -4
  82. package/server/libs/ctvt.js +5 -5
  83. package/server/libs/ctvtnpp.js +5 -5
  84. package/server/libs/ctvttt.js +5 -5
  85. package/server/libs/databanle.js +12 -13
  86. package/server/libs/databanlenpp.js +8 -8
  87. package/server/libs/databanletheongay.js +27 -27
  88. package/server/libs/dkcn.js +10 -10
  89. package/server/libs/dkdiem.js +2 -2
  90. package/server/libs/dkdt.js +6 -6
  91. package/server/libs/dknphep.js +3 -3
  92. package/server/libs/dktk.js +4 -4
  93. package/server/libs/dktt.js +7 -7
  94. package/server/libs/dkvt.js +9 -9
  95. package/server/libs/dkvtnpp.js +2 -2
  96. package/server/libs/dkvttt.js +2 -2
  97. package/server/libs/dncn.js +5 -5
  98. package/server/libs/dntk.js +4 -4
  99. package/server/libs/dntt.js +6 -6
  100. package/server/libs/docs.js +26 -26
  101. package/server/libs/dstkcn.js +1 -1
  102. package/server/libs/dstktt.js +1 -1
  103. package/server/libs/dtbanletheonpp.js +13 -13
  104. package/server/libs/dtbanletheosp.js +9 -9
  105. package/server/libs/dtbanletheospnpp.js +8 -8
  106. package/server/libs/email.js +1 -1
  107. package/server/libs/excel.js +1 -1
  108. package/server/libs/getGiaban.js +41 -41
  109. package/server/libs/getGiabanAsync.js +1 -1
  110. package/server/libs/getNotifies.js +1 -1
  111. package/server/libs/htmlReport.js +8 -8
  112. package/server/libs/initDatabase.js +6 -6
  113. package/server/libs/invoiceEasy.js +9 -9
  114. package/server/libs/invoiceViettel.js +14 -14
  115. package/server/libs/invoiceVnpt.js +5 -5
  116. package/server/libs/kpistatus.js +27 -27
  117. package/server/libs/load-template.js +1 -1
  118. package/server/libs/mailmanagement.js +12 -13
  119. package/server/libs/mongooseDeletePost.js +5 -5
  120. package/server/libs/mongooseLeanId.js +1 -1
  121. package/server/libs/mongoosePatch.js +3 -3
  122. package/server/libs/onepay-payment.js +4 -4
  123. package/server/libs/parse-template.js +4 -4
  124. package/server/libs/permission.js +39 -39
  125. package/server/libs/phanbokh.js +3 -3
  126. package/server/libs/post-book.js +19 -20
  127. package/server/libs/post-socai.js +23 -24
  128. package/server/libs/post-sokho.js +25 -26
  129. package/server/libs/prototypes.js +22 -22
  130. package/server/libs/psdt.js +1 -1
  131. package/server/libs/pskh.js +1 -1
  132. package/server/libs/pstk.js +1 -1
  133. package/server/libs/redis-cache.js +12 -12
  134. package/server/libs/restore.js +1 -1
  135. package/server/libs/schedule.js +11 -11
  136. package/server/libs/sessionContext.js +4 -2
  137. package/server/libs/textReport.js +1 -1
  138. package/server/libs/thnxt.js +6 -6
  139. package/server/libs/thnxtnpp.js +5 -5
  140. package/server/libs/thnxttt.js +5 -5
  141. package/server/libs/tinhGt.js +1 -1
  142. package/server/libs/tinhGtCapnhatPNK.js +5 -5
  143. package/server/libs/tinhGtPhanboHeSo.js +11 -11
  144. package/server/libs/tinhGtPhanboSltp.js +9 -9
  145. package/server/libs/tinhGtPhanboYtcp.js +6 -6
  146. package/server/libs/tinhGtSltk.js +6 -7
  147. package/server/libs/tinhGtThcppstk.js +6 -6
  148. package/server/libs/tinhGtTrucTiep.js +6 -6
  149. package/server/libs/tinhGtXoa.js +1 -1
  150. package/server/libs/tinhgiatb.js +35 -36
  151. package/server/libs/tinhgiatb1vt.js +1 -1
  152. package/server/libs/tinhhoahong.js +36 -36
  153. package/server/libs/tinhhoahongnpp.js +23 -23
  154. package/server/libs/tinhkhauhao1ts.js +8 -8
  155. package/server/libs/tinhkhauhaots.js +7 -7
  156. package/server/libs/tuoinophaithu.js +9 -9
  157. package/server/libs/tuoinophaitra.js +8 -8
  158. package/server/libs/utils.js +49 -49
  159. package/server/libs/validate.js +4 -4
  160. package/server/libs/validator-acc-cust.js +1 -1
  161. package/server/libs/validator-account.js +4 -4
  162. package/server/libs/validator-vt.js +1 -1
  163. package/server/libs/validator.js +1 -1
  164. package/server/libs/vsocai.js +8 -8
  165. package/server/models/account.js +3 -3
  166. package/server/models/afflink.js +1 -1
  167. package/server/models/app.js +1 -1
  168. package/server/models/approve.js +20 -21
  169. package/server/models/assabcihandler.js +22 -22
  170. package/server/models/assbank.js +10 -11
  171. package/server/models/assbooking.js +2 -2
  172. package/server/models/assbuy.js +3 -3
  173. package/server/models/asscashwithdraw.js +2 -2
  174. package/server/models/assfindhash.js +1 -1
  175. package/server/models/assinvestment.js +7 -8
  176. package/server/models/assissue.js +1 -1
  177. package/server/models/asskey.js +4 -4
  178. package/server/models/assneedtobuy.js +4 -4
  179. package/server/models/assperiod.js +5 -5
  180. package/server/models/assproduct.js +5 -5
  181. package/server/models/assprofitsharing.js +2 -2
  182. package/server/models/assreceiver.js +1 -1
  183. package/server/models/assrequest.js +3 -3
  184. package/server/models/asssell.js +3 -3
  185. package/server/models/asstransaction.js +1 -1
  186. package/server/models/asstransfer.js +1 -1
  187. package/server/models/assuser_identity.js +2 -2
  188. package/server/models/asswithdraw.js +2 -2
  189. package/server/models/attend.js +1 -1
  190. package/server/models/banggiaban.js +1 -1
  191. package/server/models/bangtinhluong.js +4 -4
  192. package/server/models/base.js +1 -2
  193. package/server/models/bds_area.js +3 -3
  194. package/server/models/bds_block.js +1 -1
  195. package/server/models/bds_building.js +3 -3
  196. package/server/models/bds_floor.js +1 -1
  197. package/server/models/bds_floordetail.js +9 -9
  198. package/server/models/bds_nhadat.js +5 -5
  199. package/server/models/bds_nhomnhadat.js +1 -1
  200. package/server/models/bds_phanloainhadat.js +1 -1
  201. package/server/models/bg1.js +1 -1
  202. package/server/models/bg2.js +4 -4
  203. package/server/models/cache.js +1 -1
  204. package/server/models/calllog.js +2 -2
  205. package/server/models/campaign.js +5 -5
  206. package/server/models/cart.js +3 -3
  207. package/server/models/cddiem.js +1 -1
  208. package/server/models/cddt.js +2 -2
  209. package/server/models/cdkh.js +1 -1
  210. package/server/models/cdkhtheongay.js +3 -3
  211. package/server/models/cdnphep.js +1 -1
  212. package/server/models/cdtk.js +2 -2
  213. package/server/models/cdtktheongay.js +1 -1
  214. package/server/models/cdvt.js +3 -3
  215. package/server/models/cdvtnpp.js +3 -3
  216. package/server/models/cdvttheongay.js +3 -3
  217. package/server/models/chamcong.js +2 -2
  218. package/server/models/checkin.js +2 -2
  219. package/server/models/checkinactivity.js +1 -2
  220. package/server/models/checkinkpi.js +1 -1
  221. package/server/models/checkinlocation.js +1 -1
  222. package/server/models/chitieukpi.js +2 -2
  223. package/server/models/chudethaoluan.js +1 -1
  224. package/server/models/ckgtluong.js +1 -1
  225. package/server/models/colleague.js +1 -1
  226. package/server/models/comment.js +3 -4
  227. package/server/models/congdoansx.js +2 -2
  228. package/server/models/congtacvien.js +3 -3
  229. package/server/models/congthuctinhgiaban.js +4 -4
  230. package/server/models/consultant.js +1 -1
  231. package/server/models/contract.js +1 -1
  232. package/server/models/counter.js +1 -1
  233. package/server/models/ctds.js +3 -3
  234. package/server/models/ctds2.js +4 -4
  235. package/server/models/currency.js +3 -3
  236. package/server/models/customer.js +14 -14
  237. package/server/models/databanle.js +4 -4
  238. package/server/models/datlich.js +2 -2
  239. package/server/models/department.js +4 -4
  240. package/server/models/dh2.js +2 -2
  241. package/server/models/diagram.js +2 -3
  242. package/server/models/dinhmucsx.js +2 -2
  243. package/server/models/dkhoc.js +3 -3
  244. package/server/models/dknphep.js +1 -1
  245. package/server/models/dmban.js +2 -2
  246. package/server/models/dmbp.js +1 -1
  247. package/server/models/dmca.js +2 -2
  248. package/server/models/dmchietkhau.js +5 -5
  249. package/server/models/dmchietkhauhd.js +8 -8
  250. package/server/models/dmcpmh.js +1 -1
  251. package/server/models/dmdiemthuong.js +3 -3
  252. package/server/models/dmdoi.js +1 -1
  253. package/server/models/dmdoituongdanhgia.js +1 -1
  254. package/server/models/dmdt.js +4 -4
  255. package/server/models/dmdvt.js +1 -1
  256. package/server/models/dmgiaban.js +3 -3
  257. package/server/models/dmgiamua.js +3 -3
  258. package/server/models/dmgiathitruong.js +2 -2
  259. package/server/models/dmgiathitruong_ngay.js +1 -1
  260. package/server/models/dmgiathitruong_theodoi.js +1 -1
  261. package/server/models/dmhoahonghd.js +5 -5
  262. package/server/models/dmhoahongnpp.js +1 -1
  263. package/server/models/dmkc.js +1 -1
  264. package/server/models/dmkho.js +3 -3
  265. package/server/models/dmkhuyenmai.js +5 -5
  266. package/server/models/dmkhuyenmaihd.js +3 -3
  267. package/server/models/dmletet.js +2 -2
  268. package/server/models/dmlo.js +2 -2
  269. package/server/models/dmloaicong.js +2 -2
  270. package/server/models/dmloaitask.js +1 -1
  271. package/server/models/dmloaits.js +1 -1
  272. package/server/models/dmnckkm.js +2 -2
  273. package/server/models/dmnghiepvu.js +2 -2
  274. package/server/models/dmnguonvon.js +1 -1
  275. package/server/models/dmnhnv.js +1 -1
  276. package/server/models/dmnv.js +4 -4
  277. package/server/models/dmnvt.js +3 -3
  278. package/server/models/dmphatdichvu.js +1 -1
  279. package/server/models/dmphi.js +3 -3
  280. package/server/models/dmqct.js +2 -2
  281. package/server/models/dmqddvt.js +1 -1
  282. package/server/models/dmtanggiamts.js +2 -2
  283. package/server/models/dmto.js +2 -2
  284. package/server/models/dmtt.js +2 -2
  285. package/server/models/dmvt.js +4 -4
  286. package/server/models/dmyt.js +2 -2
  287. package/server/models/dn0.js +3 -3
  288. package/server/models/dnm.js +4 -4
  289. package/server/models/dokho.js +1 -1
  290. package/server/models/domain.js +1 -1
  291. package/server/models/dvcs.js +1 -1
  292. package/server/models/ecomcategories.js +1 -1
  293. package/server/models/ecomcategories_cty.js +1 -1
  294. package/server/models/ecomproductlines.js +1 -1
  295. package/server/models/ecompromotion_flashsales.js +2 -2
  296. package/server/models/ecompromotion_freeships.js +2 -2
  297. package/server/models/email.js +1 -1
  298. package/server/models/endpoint.js +1 -2
  299. package/server/models/events.js +2 -2
  300. package/server/models/evoucher.js +3 -3
  301. package/server/models/experiencejourney.js +1 -1
  302. package/server/models/experiencejourneydata.js +2 -2
  303. package/server/models/experiencejourneypersona.js +2 -2
  304. package/server/models/experiencejourneystage.js +1 -1
  305. package/server/models/exportexceltemplate.js +1 -1
  306. package/server/models/fbconversation.js +6 -6
  307. package/server/models/fbmessage.js +1 -1
  308. package/server/models/fbpage.js +1 -1
  309. package/server/models/fbpost.js +1 -1
  310. package/server/models/fieldright.js +1 -1
  311. package/server/models/file.js +1 -1
  312. package/server/models/financialroadmap.js +1 -1
  313. package/server/models/flow.js +1 -1
  314. package/server/models/flowdata.js +1 -1
  315. package/server/models/folder.js +2 -2
  316. package/server/models/follow.js +1 -1
  317. package/server/models/form.js +2 -2
  318. package/server/models/forminfo.js +5 -5
  319. package/server/models/formvalue.js +1 -1
  320. package/server/models/giaoca.js +2 -2
  321. package/server/models/giatb.js +2 -2
  322. package/server/models/group.js +2 -2
  323. package/server/models/gt_ctgt.js +1 -1
  324. package/server/models/gt_hspb.js +2 -2
  325. package/server/models/gt_sltk.js +2 -2
  326. package/server/models/gt_thcppstk.js +1 -1
  327. package/server/models/hanmucton.js +4 -4
  328. package/server/models/hd1.js +1 -1
  329. package/server/models/hd2.js +3 -3
  330. package/server/models/hd3.js +7 -7
  331. package/server/models/hd4.js +1 -1
  332. package/server/models/hd7.js +4 -4
  333. package/server/models/hd8.js +4 -4
  334. package/server/models/hde.js +3 -3
  335. package/server/models/hlink.js +1 -1
  336. package/server/models/hlinkvalue.js +2 -2
  337. package/server/models/hmcn.js +1 -1
  338. package/server/models/hmcnct.js +1 -1
  339. package/server/models/hspbts.js +3 -3
  340. package/server/models/htl.js +2 -2
  341. package/server/models/importexceltemplate.js +1 -1
  342. package/server/models/introducebonus.js +2 -2
  343. package/server/models/introducecode.js +1 -1
  344. package/server/models/introducer.js +1 -1
  345. package/server/models/kbbtpb.js +2 -2
  346. package/server/models/kbmPttct.js +3 -3
  347. package/server/models/kbmTkgtgt.js +4 -4
  348. package/server/models/kbm_bcdkt.js +3 -3
  349. package/server/models/kbm_kqhdkd.js +2 -2
  350. package/server/models/kbm_lcttgt.js +5 -5
  351. package/server/models/kbm_lctttt.js +3 -4
  352. package/server/models/kbm_pttct.js +1 -1
  353. package/server/models/kbm_tkgtgt.js +4 -4
  354. package/server/models/kbmbcdkt.js +3 -3
  355. package/server/models/kbmbcqt.js +4 -5
  356. package/server/models/kbmkqhdkd.js +2 -2
  357. package/server/models/kbmlcttgt.js +5 -5
  358. package/server/models/kbmlctttt.js +3 -4
  359. package/server/models/kbmtmbctc.js +3 -3
  360. package/server/models/kehoachdtcp.js +2 -2
  361. package/server/models/kehoachmh.js +1 -1
  362. package/server/models/keyresult.js +5 -5
  363. package/server/models/khunghangthanhvien.js +3 -3
  364. package/server/models/label.js +1 -1
  365. package/server/models/labelinfo.js +1 -1
  366. package/server/models/lenhcapphat.js +1 -1
  367. package/server/models/lenhsx.js +2 -2
  368. package/server/models/lienhe.js +2 -2
  369. package/server/models/like_module.js +1 -1
  370. package/server/models/link.js +1 -1
  371. package/server/models/loaidiem.js +1 -1
  372. package/server/models/lock.js +1 -1
  373. package/server/models/log.js +3 -3
  374. package/server/models/mailaccount.js +2 -2
  375. package/server/models/mailgroup.js +1 -1
  376. package/server/models/mailreceived.js +1 -1
  377. package/server/models/mailschedule.js +1 -1
  378. package/server/models/mailsent.js +1 -1
  379. package/server/models/mailtemplate.js +1 -1
  380. package/server/models/maudanhgia.js +1 -1
  381. package/server/models/menuinfo.js +1 -1
  382. package/server/models/message.js +5 -5
  383. package/server/models/message2.js +1 -1
  384. package/server/models/message2setting.js +1 -1
  385. package/server/models/moduleinfo.js +2 -2
  386. package/server/models/momo.js +6 -6
  387. package/server/models/news.js +1 -1
  388. package/server/models/newsfeed.js +1 -1
  389. package/server/models/note.js +1 -1
  390. package/server/models/notification.js +4 -4
  391. package/server/models/okr.js +2 -2
  392. package/server/models/okrdiagram.js +2 -2
  393. package/server/models/onepay.js +12 -12
  394. package/server/models/opportunity.js +2 -2
  395. package/server/models/options.js +2 -3
  396. package/server/models/originimportid.js +1 -1
  397. package/server/models/otp.js +1 -1
  398. package/server/models/parameter.js +1 -1
  399. package/server/models/participant.js +14 -14
  400. package/server/models/partner.js +1 -1
  401. package/server/models/payload.js +1 -1
  402. package/server/models/pbl.js +5 -5
  403. package/server/models/pc0.js +3 -3
  404. package/server/models/pc1.js +3 -3
  405. package/server/models/pc2.js +3 -3
  406. package/server/models/pc3.js +3 -3
  407. package/server/models/pc5.js +2 -2
  408. package/server/models/pc6.js +3 -3
  409. package/server/models/pcl.js +2 -2
  410. package/server/models/pdn.js +3 -3
  411. package/server/models/pdx.js +1 -1
  412. package/server/models/pgh.js +3 -3
  413. package/server/models/phieudanhgia.js +2 -2
  414. package/server/models/pht.js +3 -3
  415. package/server/models/phucap.js +1 -1
  416. package/server/models/pkc.js +2 -2
  417. package/server/models/pkh.js +2 -2
  418. package/server/models/pkk.js +1 -1
  419. package/server/models/pkt.js +2 -2
  420. package/server/models/pn1.js +5 -5
  421. package/server/models/pn2.js +2 -2
  422. package/server/models/pn3.js +4 -4
  423. package/server/models/pn5.js +3 -3
  424. package/server/models/pn6.js +1 -1
  425. package/server/models/pn9.js +1 -1
  426. package/server/models/pnc.js +4 -4
  427. package/server/models/pnh.js +1 -1
  428. package/server/models/pnk.js +3 -3
  429. package/server/models/po1.js +11 -12
  430. package/server/models/ppb.js +2 -2
  431. package/server/models/profile.js +1 -1
  432. package/server/models/pt1.js +3 -3
  433. package/server/models/pt5.js +2 -2
  434. package/server/models/ptl.js +2 -2
  435. package/server/models/ptthanhtoan.js +1 -1
  436. package/server/models/purchase_contract.js +9 -9
  437. package/server/models/pxc.js +4 -5
  438. package/server/models/pxh.js +1 -1
  439. package/server/models/pxk.js +4 -4
  440. package/server/models/qts.js +4 -4
  441. package/server/models/qts_dieuchinh.js +2 -2
  442. package/server/models/qts_dieuchuyen.js +2 -2
  443. package/server/models/quanhuyen.js +1 -1
  444. package/server/models/reason.js +1 -1
  445. package/server/models/receivedinvoice.js +2 -2
  446. package/server/models/reportinfo.js +1 -1
  447. package/server/models/right.js +2 -2
  448. package/server/models/rpt.js +1 -1
  449. package/server/models/rptform.js +4 -4
  450. package/server/models/rptobject.js +1 -1
  451. package/server/models/sale_contract.js +2 -2
  452. package/server/models/schedule.js +13 -13
  453. package/server/models/schedule_log.js +1 -1
  454. package/server/models/service.js +2 -2
  455. package/server/models/shipbook.js +3 -3
  456. package/server/models/shortcut.js +1 -1
  457. package/server/models/smsaccount.js +3 -3
  458. package/server/models/smssend.js +1 -1
  459. package/server/models/so1.js +1 -1
  460. package/server/models/so2.js +1 -1
  461. package/server/models/so3.js +3 -3
  462. package/server/models/so5.js +1 -1
  463. package/server/models/so9.js +7 -7
  464. package/server/models/socai.js +9 -9
  465. package/server/models/socainpp.js +6 -6
  466. package/server/models/socaitc.js +3 -3
  467. package/server/models/socaitmp.js +8 -8
  468. package/server/models/socaitt.js +2 -2
  469. package/server/models/sodiemthuong.js +2 -2
  470. package/server/models/sokho.js +4 -4
  471. package/server/models/sokhocapphat.js +3 -3
  472. package/server/models/sokhokhongton.js +3 -3
  473. package/server/models/sokhonpp.js +12 -12
  474. package/server/models/sokhotc.js +5 -5
  475. package/server/models/sokhott.js +3 -3
  476. package/server/models/sophanbokh.js +2 -2
  477. package/server/models/sosanxuat.js +3 -3
  478. package/server/models/sotinhkh.js +2 -3
  479. package/server/models/spdd_ck.js +3 -3
  480. package/server/models/spdd_dk.js +3 -3
  481. package/server/models/step.js +2 -2
  482. package/server/models/strategicdiagram.js +1 -1
  483. package/server/models/strategicgoal.js +1 -1
  484. package/server/models/strategickpi.js +2 -2
  485. package/server/models/strategicobjective.js +2 -2
  486. package/server/models/strategicplan.js +2 -2
  487. package/server/models/subscribe.js +2 -2
  488. package/server/models/support.js +1 -1
  489. package/server/models/synctime.js +2 -2
  490. package/server/models/sysconfig.js +1 -1
  491. package/server/models/sysgroup.js +1 -1
  492. package/server/models/tableinfo.js +2 -2
  493. package/server/models/task.js +2 -2
  494. package/server/models/taskreg.js +1 -1
  495. package/server/models/tc.js +1 -1
  496. package/server/models/tdttco.js +5 -6
  497. package/server/models/tdttco_tt.js +4 -4
  498. package/server/models/tdttno.js +5 -6
  499. package/server/models/tdttno_tt.js +5 -5
  500. package/server/models/templaterpt.js +1 -1
  501. package/server/models/templatestore.js +1 -1
  502. package/server/models/templatevoucher.js +1 -1
  503. package/server/models/tinhthanh.js +1 -1
  504. package/server/models/tokens.js +1 -1
  505. package/server/models/tontucthoi.js +4 -4
  506. package/server/models/trangthai.js +2 -2
  507. package/server/models/trangthaiapp.js +2 -3
  508. package/server/models/transaction.js +8 -8
  509. package/server/models/trialinfo.js +2 -2
  510. package/server/models/user.js +21 -21
  511. package/server/models/usergroup.js +1 -1
  512. package/server/models/vanchuyen.js +4 -4
  513. package/server/models/vat.js +2 -2
  514. package/server/models/vatra.js +4 -4
  515. package/server/models/vatvao.js +2 -2
  516. package/server/models/versioninfo.js +1 -1
  517. package/server/models/vietqrbanks.js +1 -1
  518. package/server/models/vsocai.js +4 -4
  519. package/server/models/waitevent.js +1 -1
  520. package/server/models/wallet.js +1 -1
  521. package/server/models/warranty.js +1 -1
  522. package/server/models/warrantyclaim.js +2 -2
  523. package/server/models/warrantypolicy.js +1 -1
  524. package/server/models/xaphuong.js +1 -1
  525. package/server/models/xhd.js +3 -3
  526. package/server/models/ytdd_ck.js +2 -2
  527. package/server/models/ytdd_dk.js +2 -2
  528. package/server/models/zalo.js +10 -10
  529. package/server/modules/lists/bg-cddiem.js +1 -1
  530. package/server/modules/lists/bg-cddt.js +4 -4
  531. package/server/modules/lists/bg-cdkh.js +5 -5
  532. package/server/modules/lists/bg-cdnphep.js +6 -6
  533. package/server/modules/lists/bg-cdtk.js +7 -7
  534. package/server/modules/lists/bg-cdvt.js +1 -1
  535. package/server/modules/lists/bg-cdvtnpp.js +2 -2
  536. package/server/modules/lists/ls-account.js +4 -4
  537. package/server/modules/lists/ls-afflink.js +2 -2
  538. package/server/modules/lists/ls-approve.js +1 -1
  539. package/server/modules/lists/ls-assabcihandler.js +1 -1
  540. package/server/modules/lists/ls-assbank.js +1 -1
  541. package/server/modules/lists/ls-assbooking.js +14 -15
  542. package/server/modules/lists/ls-assbuy.js +2 -2
  543. package/server/modules/lists/ls-asscashwithdraw.js +5 -5
  544. package/server/modules/lists/ls-assinvestment.js +24 -23
  545. package/server/modules/lists/ls-assissue.js +1 -1
  546. package/server/modules/lists/ls-asskey.js +28 -28
  547. package/server/modules/lists/ls-assneedtobuy.js +3 -3
  548. package/server/modules/lists/ls-assperiod.js +13 -13
  549. package/server/modules/lists/ls-assproduct.js +6 -6
  550. package/server/modules/lists/ls-assprofitsharing.js +5 -5
  551. package/server/modules/lists/ls-assreceiver.js +3 -3
  552. package/server/modules/lists/ls-assrequest.js +3 -3
  553. package/server/modules/lists/ls-asssell.js +7 -7
  554. package/server/modules/lists/ls-asstransaction.js +1 -1
  555. package/server/modules/lists/ls-asstransfer.js +1 -1
  556. package/server/modules/lists/ls-assuser_identity.js +1 -1
  557. package/server/modules/lists/ls-asswithdraw.js +4 -4
  558. package/server/modules/lists/ls-bangtinhluong.js +1 -1
  559. package/server/modules/lists/ls-bds_area.js +3 -4
  560. package/server/modules/lists/ls-bds_block.js +1 -1
  561. package/server/modules/lists/ls-bds_building.js +2 -2
  562. package/server/modules/lists/ls-bds_dmnhbds.js +6 -6
  563. package/server/modules/lists/ls-bds_floor.js +2 -2
  564. package/server/modules/lists/ls-bds_floordetail.js +8 -8
  565. package/server/modules/lists/ls-bds_nhadat.js +10 -10
  566. package/server/modules/lists/ls-bds_nhomnhadat.js +1 -1
  567. package/server/modules/lists/ls-bds_phanloainhadat.js +1 -1
  568. package/server/modules/lists/ls-calllog.js +1 -1
  569. package/server/modules/lists/ls-campaign.js +1 -2
  570. package/server/modules/lists/ls-cart.js +9 -9
  571. package/server/modules/lists/ls-chamcong.js +1 -1
  572. package/server/modules/lists/ls-checkin.js +5 -5
  573. package/server/modules/lists/ls-checkinactivity.js +6 -6
  574. package/server/modules/lists/ls-checkinkpi.js +3 -3
  575. package/server/modules/lists/ls-checkinlocation.js +1 -1
  576. package/server/modules/lists/ls-chitieukpi.js +1 -2
  577. package/server/modules/lists/ls-chudethaoluan.js +1 -1
  578. package/server/modules/lists/ls-ckgtluong.js +1 -1
  579. package/server/modules/lists/ls-comment.js +1 -1
  580. package/server/modules/lists/ls-congdoansx.js +1 -1
  581. package/server/modules/lists/ls-congtacvien.js +2 -2
  582. package/server/modules/lists/ls-consultant.js +2 -2
  583. package/server/modules/lists/ls-contract.js +3 -3
  584. package/server/modules/lists/ls-ctds.js +1 -1
  585. package/server/modules/lists/ls-ctds2.js +4 -4
  586. package/server/modules/lists/ls-currency.js +1 -1
  587. package/server/modules/lists/ls-customer.js +14 -14
  588. package/server/modules/lists/ls-datlich.js +5 -5
  589. package/server/modules/lists/ls-dckhauhaots.js +1 -1
  590. package/server/modules/lists/ls-department.js +3 -3
  591. package/server/modules/lists/ls-diagram.js +1 -1
  592. package/server/modules/lists/ls-dkhoc.js +2 -2
  593. package/server/modules/lists/ls-dknphep.js +1 -1
  594. package/server/modules/lists/ls-dmban.js +2 -2
  595. package/server/modules/lists/ls-dmbp.js +4 -4
  596. package/server/modules/lists/ls-dmca.js +1 -1
  597. package/server/modules/lists/ls-dmchietkhau.js +11 -11
  598. package/server/modules/lists/ls-dmchietkhauhd.js +1 -1
  599. package/server/modules/lists/ls-dmchucvu.js +1 -1
  600. package/server/modules/lists/ls-dmcpmh.js +1 -1
  601. package/server/modules/lists/ls-dmdiemthuong.js +1 -1
  602. package/server/modules/lists/ls-dmdoi.js +1 -1
  603. package/server/modules/lists/ls-dmdoituongdanhgia.js +1 -1
  604. package/server/modules/lists/ls-dmdt.js +9 -10
  605. package/server/modules/lists/ls-dmdvt.js +2 -2
  606. package/server/modules/lists/ls-dmgiaban.js +1 -1
  607. package/server/modules/lists/ls-dmgiamua.js +1 -1
  608. package/server/modules/lists/ls-dmgiathitruong.js +5 -5
  609. package/server/modules/lists/ls-dmgiathitruong_ngay.js +1 -1
  610. package/server/modules/lists/ls-dmgiathitruong_theodoi.js +1 -1
  611. package/server/modules/lists/ls-dmhoahonghd.js +1 -2
  612. package/server/modules/lists/ls-dmhoahongnpp.js +1 -2
  613. package/server/modules/lists/ls-dmkc.js +1 -1
  614. package/server/modules/lists/ls-dmkho.js +1 -1
  615. package/server/modules/lists/ls-dmkhuyenmai.js +4 -4
  616. package/server/modules/lists/ls-dmkhuyenmaihd.js +2 -2
  617. package/server/modules/lists/ls-dmletet.js +1 -1
  618. package/server/modules/lists/ls-dmlo.js +1 -1
  619. package/server/modules/lists/ls-dmloaicong.js +1 -1
  620. package/server/modules/lists/ls-dmloaits.js +1 -1
  621. package/server/modules/lists/ls-dmnckkm.js +6 -6
  622. package/server/modules/lists/ls-dmnghiepvu.js +1 -1
  623. package/server/modules/lists/ls-dmnguonvon.js +1 -1
  624. package/server/modules/lists/ls-dmnhnv.js +2 -2
  625. package/server/modules/lists/ls-dmnhtask.js +2 -2
  626. package/server/modules/lists/ls-dmnkh.js +5 -5
  627. package/server/modules/lists/ls-dmntt.js +6 -6
  628. package/server/modules/lists/ls-dmnv.js +12 -12
  629. package/server/modules/lists/ls-dmnvt.js +7 -7
  630. package/server/modules/lists/ls-dmphatdichvu.js +1 -1
  631. package/server/modules/lists/ls-dmphi.js +4 -4
  632. package/server/modules/lists/ls-dmqct.js +1 -1
  633. package/server/modules/lists/ls-dmqddvt.js +2 -2
  634. package/server/modules/lists/ls-dmtanggiamts.js +1 -1
  635. package/server/modules/lists/ls-dmto.js +1 -1
  636. package/server/modules/lists/ls-dmtt.js +4 -4
  637. package/server/modules/lists/ls-dmvt.js +49 -50
  638. package/server/modules/lists/ls-dmyt.js +1 -1
  639. package/server/modules/lists/ls-dokho.js +1 -1
  640. package/server/modules/lists/ls-dvcs.js +1 -1
  641. package/server/modules/lists/ls-ecomcategories.js +4 -4
  642. package/server/modules/lists/ls-ecomcategories_cty.js +4 -4
  643. package/server/modules/lists/ls-email.js +1 -1
  644. package/server/modules/lists/ls-events.js +1 -1
  645. package/server/modules/lists/ls-evoucher.js +1 -1
  646. package/server/modules/lists/ls-experiencejourney.js +1 -1
  647. package/server/modules/lists/ls-experiencejourneydata.js +1 -1
  648. package/server/modules/lists/ls-experiencejourneypersona.js +1 -1
  649. package/server/modules/lists/ls-experiencejourneystage.js +1 -1
  650. package/server/modules/lists/ls-fbconversation.js +1 -1
  651. package/server/modules/lists/ls-fbmessage.js +1 -1
  652. package/server/modules/lists/ls-fbpage.js +5 -5
  653. package/server/modules/lists/ls-fbpost.js +2 -2
  654. package/server/modules/lists/ls-file.js +16 -16
  655. package/server/modules/lists/ls-financialroadmap.js +3 -3
  656. package/server/modules/lists/ls-flow.js +3 -3
  657. package/server/modules/lists/ls-flowdata.js +1 -1
  658. package/server/modules/lists/ls-folder.js +1 -1
  659. package/server/modules/lists/ls-form.js +1 -1
  660. package/server/modules/lists/ls-forminfo.js +1 -1
  661. package/server/modules/lists/ls-formvalue.js +1 -1
  662. package/server/modules/lists/ls-giaoca.js +1 -1
  663. package/server/modules/lists/ls-group.js +5 -6
  664. package/server/modules/lists/ls-hlink.js +1 -1
  665. package/server/modules/lists/ls-hlinkvalue.js +1 -1
  666. package/server/modules/lists/ls-hmcn.js +2 -2
  667. package/server/modules/lists/ls-hspbts.js +1 -1
  668. package/server/modules/lists/ls-introducebonus.js +3 -3
  669. package/server/modules/lists/ls-introducecode.js +6 -5
  670. package/server/modules/lists/ls-introducer.js +20 -21
  671. package/server/modules/lists/ls-kbm-bcdkt.js +1 -1
  672. package/server/modules/lists/ls-kbm-bcqt.js +2 -2
  673. package/server/modules/lists/ls-kbm-kqhdkd.js +1 -1
  674. package/server/modules/lists/ls-kbm-lcttgt.js +1 -1
  675. package/server/modules/lists/ls-kbm-lctttt.js +1 -1
  676. package/server/modules/lists/ls-kbm-pttct.js +2 -2
  677. package/server/modules/lists/ls-kbm-tkgtgt.js +3 -3
  678. package/server/modules/lists/ls-kbm-tmbctc.js +2 -2
  679. package/server/modules/lists/ls-kehoachdtcp.js +1 -1
  680. package/server/modules/lists/ls-keyresult.js +2 -2
  681. package/server/modules/lists/ls-khunghangthanhvien.js +1 -1
  682. package/server/modules/lists/ls-kygui.js +7 -7
  683. package/server/modules/lists/ls-label.js +1 -1
  684. package/server/modules/lists/ls-lienhe.js +1 -1
  685. package/server/modules/lists/ls-like-module.js +1 -1
  686. package/server/modules/lists/ls-link.js +1 -1
  687. package/server/modules/lists/ls-loaidiem.js +1 -1
  688. package/server/modules/lists/ls-lock.js +1 -1
  689. package/server/modules/lists/ls-log.js +1 -1
  690. package/server/modules/lists/ls-mailaccount.js +2 -2
  691. package/server/modules/lists/ls-mailreceived.js +2 -2
  692. package/server/modules/lists/ls-mailschedule.js +3 -3
  693. package/server/modules/lists/ls-mailsent.js +3 -3
  694. package/server/modules/lists/ls-mailtemplate.js +4 -4
  695. package/server/modules/lists/ls-maudanhgia.js +3 -3
  696. package/server/modules/lists/ls-message2.js +6 -6
  697. package/server/modules/lists/ls-message2setting.js +2 -2
  698. package/server/modules/lists/ls-news.js +3 -3
  699. package/server/modules/lists/ls-newsfeed.js +4 -4
  700. package/server/modules/lists/ls-note.js +2 -2
  701. package/server/modules/lists/ls-okr.js +2 -2
  702. package/server/modules/lists/ls-okrdiagram.js +1 -1
  703. package/server/modules/lists/ls-opportunity.js +4 -4
  704. package/server/modules/lists/ls-options.js +2 -2
  705. package/server/modules/lists/ls-parameter.js +1 -1
  706. package/server/modules/lists/ls-participant.js +4 -4
  707. package/server/modules/lists/ls-phieudanhgia.js +7 -7
  708. package/server/modules/lists/ls-phucap.js +2 -2
  709. package/server/modules/lists/ls-profile.js +1 -1
  710. package/server/modules/lists/ls-ptthanhtoan.js +2 -2
  711. package/server/modules/lists/ls-qts-dieuchinh.js +1 -1
  712. package/server/modules/lists/ls-qts-dieuchuyen.js +2 -2
  713. package/server/modules/lists/ls-reason.js +1 -1
  714. package/server/modules/lists/ls-rpt.js +4 -4
  715. package/server/modules/lists/ls-rptform.js +3 -3
  716. package/server/modules/lists/ls-service.js +1 -1
  717. package/server/modules/lists/ls-shortcut.js +1 -1
  718. package/server/modules/lists/ls-smsaccount.js +1 -1
  719. package/server/modules/lists/ls-smssend.js +1 -1
  720. package/server/modules/lists/ls-sosanxuat.js +3 -3
  721. package/server/modules/lists/ls-step.js +1 -1
  722. package/server/modules/lists/ls-strategicdiagram.js +1 -1
  723. package/server/modules/lists/ls-strategicgoal.js +3 -3
  724. package/server/modules/lists/ls-strategickpi.js +4 -4
  725. package/server/modules/lists/ls-strategicobjective.js +3 -3
  726. package/server/modules/lists/ls-strategicplan.js +2 -2
  727. package/server/modules/lists/ls-support.js +3 -3
  728. package/server/modules/lists/ls-task.js +17 -17
  729. package/server/modules/lists/ls-taskreg.js +2 -2
  730. package/server/modules/lists/ls-tc.js +1 -1
  731. package/server/modules/lists/ls-templaterpt.js +2 -2
  732. package/server/modules/lists/ls-templatevoucher.js +1 -1
  733. package/server/modules/lists/ls-tontucthoi.js +1 -1
  734. package/server/modules/lists/ls-trangthaiapp.js +1 -1
  735. package/server/modules/lists/ls-transaction.js +1 -1
  736. package/server/modules/lists/ls-usergroup.js +5 -5
  737. package/server/modules/lists/ls-vat.js +1 -1
  738. package/server/modules/lists/ls-vatra.js +1 -1
  739. package/server/modules/lists/ls-vatvao.js +3 -3
  740. package/server/modules/lists/ls-waitevent.js +1 -1
  741. package/server/modules/lists/ls-warranty.js +3 -3
  742. package/server/modules/lists/ls_hanmucton.js +2 -2
  743. package/server/modules/lists/ls_hspb.js +1 -1
  744. package/server/modules/lists/ls_spdd_ck.js +1 -1
  745. package/server/modules/lists/ls_spdd_dk.js +1 -1
  746. package/server/modules/lists/ls_ytdd_ck.js +1 -1
  747. package/server/modules/lists/ls_ytdd_dk.js +1 -1
  748. package/server/modules/lists/sys-attend.js +3 -3
  749. package/server/modules/lists/sys-follow.js +3 -3
  750. package/server/modules/lists/sys-right.js +1 -1
  751. package/server/modules/public/app.js +1 -1
  752. package/server/modules/public/approve.js +1 -1
  753. package/server/modules/public/callin.js +3 -3
  754. package/server/modules/public/comment.js +4 -4
  755. package/server/modules/public/dmnvt.js +4 -4
  756. package/server/modules/public/dmvt.js +8 -8
  757. package/server/modules/public/file.js +6 -6
  758. package/server/modules/public/form.js +6 -6
  759. package/server/modules/public/forminfo.js +1 -1
  760. package/server/modules/public/group.js +4 -4
  761. package/server/modules/public/hlink.js +1 -1
  762. package/server/modules/public/introducecode.js +1 -2
  763. package/server/modules/public/listinfo.js +1 -1
  764. package/server/modules/public/media-webhook.js +1 -1
  765. package/server/modules/public/partner.js +1 -1
  766. package/server/modules/public/paymentCallback.js +1 -1
  767. package/server/modules/public/province.js +1 -1
  768. package/server/modules/public/ptthanhtoan.js +4 -4
  769. package/server/modules/public/subscribe.js +1 -1
  770. package/server/modules/public/support.js +1 -1
  771. package/server/modules/public/tableinfo.js +1 -1
  772. package/server/modules/public/trialinfo.js +1 -1
  773. package/server/modules/public/versioninfo.js +1 -1
  774. package/server/modules/reports/calc-tinhgiatb.js +6 -6
  775. package/server/modules/reports/calc-tinhgiathanh.js +5 -5
  776. package/server/modules/reports/calc-tinhkhauhaots.js +1 -1
  777. package/server/modules/reports/calc-tinhluong.js +23 -24
  778. package/server/modules/reports/rp-analyzedata.js +3 -3
  779. package/server/modules/reports/rp-assbonus.js +2 -2
  780. package/server/modules/reports/rp-assinterest.js +1 -1
  781. package/server/modules/reports/rp-assproductowners.js +1 -1
  782. package/server/modules/reports/rp-asssupply.js +1 -1
  783. package/server/modules/reports/rp-asstransferlog.js +1 -1
  784. package/server/modules/reports/rp-banggiatb.js +1 -1
  785. package/server/modules/reports/rp-bangtinhkhauhao.js +6 -6
  786. package/server/modules/reports/rp-baocaokhachhang.js +6 -6
  787. package/server/modules/reports/rp-bcdkt.js +10 -10
  788. package/server/modules/reports/rp-bcintroducebonus.js +1 -1
  789. package/server/modules/reports/rp-bckhtiemnang.js +1 -1
  790. package/server/modules/reports/rp-bcqt.js +36 -36
  791. package/server/modules/reports/rp-bkct.js +5 -5
  792. package/server/modules/reports/rp-bkshipbook.js +8 -8
  793. package/server/modules/reports/rp-bkvanchuyen.js +8 -8
  794. package/server/modules/reports/rp-bkvatra.js +7 -8
  795. package/server/modules/reports/rp-bkvatvao.js +7 -7
  796. package/server/modules/reports/rp-capnhatsocaitc.js +1 -1
  797. package/server/modules/reports/rp-cdpsdiem.js +4 -4
  798. package/server/modules/reports/rp-cdpsdt.js +1 -1
  799. package/server/modules/reports/rp-cdpskh.js +4 -4
  800. package/server/modules/reports/rp-cdpsnphep.js +3 -3
  801. package/server/modules/reports/rp-cdpstk.js +1 -1
  802. package/server/modules/reports/rp-chitietchitientheohoadon.js +9 -9
  803. package/server/modules/reports/rp-chitiettaisan.js +12 -13
  804. package/server/modules/reports/rp-chitietthutientheohoadon.js +8 -8
  805. package/server/modules/reports/rp-ckcn.js +3 -3
  806. package/server/modules/reports/rp-ckdiem.js +2 -3
  807. package/server/modules/reports/rp-cktk.js +1 -1
  808. package/server/modules/reports/rp-ckvt.js +10 -10
  809. package/server/modules/reports/rp-ckvttheokho.js +4 -4
  810. package/server/modules/reports/rp-ckvttheotg.js +4 -4
  811. package/server/modules/reports/rp-ckvttt.js +3 -3
  812. package/server/modules/reports/rp-congnophaithutheotuoino.js +2 -2
  813. package/server/modules/reports/rp-congnophaitratheotuoino.js +2 -2
  814. package/server/modules/reports/rp-congnosapthu.js +4 -4
  815. package/server/modules/reports/rp-congnosaptra.js +4 -4
  816. package/server/modules/reports/rp-congviectheobp.js +8 -8
  817. package/server/modules/reports/rp-congviectheodt.js +8 -9
  818. package/server/modules/reports/rp-congviectheokh.js +8 -9
  819. package/server/modules/reports/rp-congviectheonv.js +9 -9
  820. package/server/modules/reports/rp-congviectheotimeline.js +2 -2
  821. package/server/modules/reports/rp-ctbanle.js +10 -10
  822. package/server/modules/reports/rp-ctbanle2.js +19 -19
  823. package/server/modules/reports/rp-ctbanlectv.js +19 -19
  824. package/server/modules/reports/rp-ctbanlenpp.js +20 -21
  825. package/server/modules/reports/rp-ctdanhgianhanvien.js +8 -8
  826. package/server/modules/reports/rp-cthangbanbitralai.js +1 -1
  827. package/server/modules/reports/rp-ctmuahang.js +7 -7
  828. package/server/modules/reports/rp-cttralaihang.js +1 -1
  829. package/server/modules/reports/rp-databanle.js +10 -10
  830. package/server/modules/reports/rp-diemthuong.js +1 -1
  831. package/server/modules/reports/rp-dkcn.js +3 -3
  832. package/server/modules/reports/rp-dktk.js +1 -1
  833. package/server/modules/reports/rp-dsnhanviencm.js +9 -9
  834. package/server/modules/reports/rp-dsnhanvientb.js +9 -9
  835. package/server/modules/reports/rp-dtbanlekempk.js +2 -2
  836. package/server/modules/reports/rp-dtbanletheoct.js +19 -19
  837. package/server/modules/reports/rp-dtbanletheoctkempk.js +23 -24
  838. package/server/modules/reports/rp-dtbanletheokh.js +20 -20
  839. package/server/modules/reports/rp-dtbanletheokhnpp.js +10 -11
  840. package/server/modules/reports/rp-dtbanletheokho.js +18 -18
  841. package/server/modules/reports/rp-dtbanletheonam.js +1 -1
  842. package/server/modules/reports/rp-dtbanletheongay.js +1 -1
  843. package/server/modules/reports/rp-dtbanletheonpp.js +16 -16
  844. package/server/modules/reports/rp-dtbanletheonv.js +19 -19
  845. package/server/modules/reports/rp-dtbanletheoquy.js +1 -1
  846. package/server/modules/reports/rp-dtbanletheosp.js +4 -4
  847. package/server/modules/reports/rp-dtbanletheospnpp.js +1 -1
  848. package/server/modules/reports/rp-dtbanletheothang.js +1 -1
  849. package/server/modules/reports/rp-dtbanletheothungan.js +12 -12
  850. package/server/modules/reports/rp-dtbanletheovt.js +1 -1
  851. package/server/modules/reports/rp-dtbanletheovtnpp.js +1 -1
  852. package/server/modules/reports/rp-dutoanthuchitheodt.js +4 -4
  853. package/server/modules/reports/rp-getPXC2PNC.js +4 -4
  854. package/server/modules/reports/rp-getariseofaccountsbymonth.js +2 -2
  855. package/server/modules/reports/rp-getbtpb.js +5 -5
  856. package/server/modules/reports/rp-getcashbycashier.js +7 -8
  857. package/server/modules/reports/rp-getcschietkhau.js +3 -3
  858. package/server/modules/reports/rp-getdinhmuc4lenhcp.js +1 -1
  859. package/server/modules/reports/rp-getdinhmuc4pxk.js +1 -1
  860. package/server/modules/reports/rp-getdk4pht.js +4 -4
  861. package/server/modules/reports/rp-getdk4pkc.js +7 -7
  862. package/server/modules/reports/rp-getdttheoca.js +5 -5
  863. package/server/modules/reports/rp-getinvoice2pay.js +2 -2
  864. package/server/modules/reports/rp-getinvoice2receive.js +2 -2
  865. package/server/modules/reports/rp-getinvoice2return.js +5 -5
  866. package/server/modules/reports/rp-getinvoice2return_bl.js +6 -6
  867. package/server/modules/reports/rp-getkehoachmh4lenhcp.js +4 -4
  868. package/server/modules/reports/rp-getkhauhao.js +6 -6
  869. package/server/modules/reports/rp-getluong.js +1 -1
  870. package/server/modules/reports/rp-getluongchuyen.js +1 -1
  871. package/server/modules/reports/rp-getpn2fee.js +5 -5
  872. package/server/modules/reports/rp-getpn2return.js +5 -5
  873. package/server/modules/reports/rp-getthanhpham4pnk.js +2 -2
  874. package/server/modules/reports/rp-getvc2xhd.js +11 -11
  875. package/server/modules/reports/rp-gt_cpnvltt.js +4 -4
  876. package/server/modules/reports/rp-hangbanbitralai.js +1 -1
  877. package/server/modules/reports/rp-hangthanhvien.js +1 -1
  878. package/server/modules/reports/rp-hoadonbanhangtheohantt.js +1 -1
  879. package/server/modules/reports/rp-hoadonmuahangtheohantt.js +1 -1
  880. package/server/modules/reports/rp-hoahong.js +13 -13
  881. package/server/modules/reports/rp-kcsns.js +19 -21
  882. package/server/modules/reports/rp-kgchamcong.js +6 -6
  883. package/server/modules/reports/rp-khoaso.js +8 -9
  884. package/server/modules/reports/rp-kiemtrasocaitcvssocai.js +1 -1
  885. package/server/modules/reports/rp-kqdanhgianhanvien.js +5 -5
  886. package/server/modules/reports/rp-kqhdkd.js +7 -7
  887. package/server/modules/reports/rp-lcttgt.js +17 -17
  888. package/server/modules/reports/rp-lctttt.js +11 -11
  889. package/server/modules/reports/rp-linkslist.js +4 -4
  890. package/server/modules/reports/rp-phanbochitienchohoadon.js +11 -11
  891. package/server/modules/reports/rp-phanbothutienchohoadon.js +10 -11
  892. package/server/modules/reports/rp-ptbitralai.js +6 -6
  893. package/server/modules/reports/rp-ptcttct.js +14 -14
  894. package/server/modules/reports/rp-ptdonhang.js +8 -8
  895. package/server/modules/reports/rp-pttct.js +12 -12
  896. package/server/modules/reports/rp-pttctkho.js +16 -16
  897. package/server/modules/reports/rp-pttctkho2.js +14 -14
  898. package/server/modules/reports/rp-referredusers.js +1 -1
  899. package/server/modules/reports/rp-sctbhxh.js +2 -2
  900. package/server/modules/reports/rp-sctcnkh.js +5 -5
  901. package/server/modules/reports/rp-sctdiem.js +3 -3
  902. package/server/modules/reports/rp-sctdt.js +5 -5
  903. package/server/modules/reports/rp-sctdtcp.js +11 -11
  904. package/server/modules/reports/rp-sctluong.js +2 -2
  905. package/server/modules/reports/rp-sctthuetncn.js +2 -2
  906. package/server/modules/reports/rp-scttk.js +6 -6
  907. package/server/modules/reports/rp-sctvt.js +5 -5
  908. package/server/modules/reports/rp-sctvt_sl.js +5 -5
  909. package/server/modules/reports/rp-sctvtnpp.js +6 -6
  910. package/server/modules/reports/rp-sctvttt.js +5 -5
  911. package/server/modules/reports/rp-search.js +4 -4
  912. package/server/modules/reports/rp-socai.js +6 -6
  913. package/server/modules/reports/rp-socaitk.js +6 -6
  914. package/server/modules/reports/rp-sochut.js +6 -6
  915. package/server/modules/reports/rp-sokho.js +7 -8
  916. package/server/modules/reports/rp-sokhott.js +5 -6
  917. package/server/modules/reports/rp-sonkbh.js +5 -5
  918. package/server/modules/reports/rp-sonkc.js +6 -6
  919. package/server/modules/reports/rp-sonkct.js +5 -5
  920. package/server/modules/reports/rp-sonkmh.js +5 -5
  921. package/server/modules/reports/rp-sonktt.js +5 -5
  922. package/server/modules/reports/rp-soquy.js +11 -12
  923. package/server/modules/reports/rp-sosanhkhvatt.js +12 -12
  924. package/server/modules/reports/rp-sosanhkhvatt2.js +6 -7
  925. package/server/modules/reports/rp-sotaisan.js +11 -12
  926. package/server/modules/reports/rp-sotiengui.js +6 -6
  927. package/server/modules/reports/rp-taodinhmuctudkhoc.js +2 -2
  928. package/server/modules/reports/rp-thbanhangkempk.js +16 -17
  929. package/server/modules/reports/rp-thdanhgianhanvien.js +9 -9
  930. package/server/modules/reports/rp-thgt.js +6 -6
  931. package/server/modules/reports/rp-thnxt.js +10 -10
  932. package/server/modules/reports/rp-thnxt_sl.js +9 -9
  933. package/server/modules/reports/rp-thnxtnpp.js +10 -10
  934. package/server/modules/reports/rp-thnxttt.js +9 -9
  935. package/server/modules/reports/rp-tkbanhangtheogioithieu.js +9 -9
  936. package/server/modules/reports/rp-tkgioithieukh.js +3 -3
  937. package/server/modules/reports/rp-tkgtgt.js +7 -7
  938. package/server/modules/reports/rp-tmbctc.js +13 -13
  939. package/server/modules/reports/rp-tonghopbanhang.js +5 -5
  940. package/server/modules/reports/rp-tonghopmuahang.js +4 -4
  941. package/server/modules/reports/rp-tonghoptralaihang.js +4 -4
  942. package/server/modules/reports/rp-tongquanbanle.js +16 -16
  943. package/server/modules/reports/rp-tongquanbds.js +3 -3
  944. package/server/modules/reports/rp-tongquancongty.js +5 -5
  945. package/server/modules/reports/rp-tongquanctvnpp.js +12 -12
  946. package/server/modules/reports/rp-tongquannvbh.js +12 -12
  947. package/server/modules/reports/rp-tongquannvnpp.js +1 -1
  948. package/server/modules/reports/rp-uoctinhnvl.js +11 -11
  949. package/server/modules/reports/rp-wallet.js +1 -1
  950. package/server/modules/reports/rpt-tkdiemtichluy.js +8 -8
  951. package/server/modules/systems/sys-app.js +17 -17
  952. package/server/modules/systems/sys-colleague.js +3 -3
  953. package/server/modules/systems/sys-domain.js +1 -1
  954. package/server/modules/systems/sys-ecomproductlines.js +1 -1
  955. package/server/modules/systems/sys-exportexceltemplate.js +1 -1
  956. package/server/modules/systems/sys-fieldright.js +1 -1
  957. package/server/modules/systems/sys-importexceltemplate.js +1 -1
  958. package/server/modules/systems/sys-labelinfo.js +2 -2
  959. package/server/modules/systems/sys-listinfo.js +8 -8
  960. package/server/modules/systems/sys-menuinfo.js +1 -1
  961. package/server/modules/systems/sys-message.js +7 -7
  962. package/server/modules/systems/sys-moduleinfo.js +1 -1
  963. package/server/modules/systems/sys-notification.js +4 -4
  964. package/server/modules/systems/sys-quanhuyen.js +1 -1
  965. package/server/modules/systems/sys-reportinfo.js +2 -2
  966. package/server/modules/systems/sys-rptobject.js +1 -1
  967. package/server/modules/systems/sys-schedule.js +2 -2
  968. package/server/modules/systems/sys-sysconfig.js +1 -1
  969. package/server/modules/systems/sys-sysgroup.js +1 -1
  970. package/server/modules/systems/sys-tableinfo.js +1 -1
  971. package/server/modules/systems/sys-templatestore.js +2 -2
  972. package/server/modules/systems/sys-tinhthanh.js +1 -1
  973. package/server/modules/systems/sys-token.js +1 -1
  974. package/server/modules/systems/sys-trangthai.js +2 -2
  975. package/server/modules/systems/sys-trialinfo.js +1 -1
  976. package/server/modules/systems/sys-user.js +37 -39
  977. package/server/modules/systems/sys-users.js +2 -2
  978. package/server/modules/systems/sys-versioninfo.js +1 -1
  979. package/server/modules/systems/sys-vietqrbanks.js +1 -1
  980. package/server/modules/systems/sys-xaphuong.js +1 -1
  981. package/server/modules/vouchers/vo-banggiaban.js +5 -5
  982. package/server/modules/vouchers/vo-bc1.js +30 -30
  983. package/server/modules/vouchers/vo-bc5.js +9 -9
  984. package/server/modules/vouchers/vo-bg1.js +2 -2
  985. package/server/modules/vouchers/vo-bg2.js +4 -5
  986. package/server/modules/vouchers/vo-bn1.js +27 -27
  987. package/server/modules/vouchers/vo-bn5.js +9 -9
  988. package/server/modules/vouchers/vo-dh2.js +29 -29
  989. package/server/modules/vouchers/vo-dinhmucsx.js +1 -1
  990. package/server/modules/vouchers/vo-dkb.js +6 -6
  991. package/server/modules/vouchers/vo-dn0.js +3 -3
  992. package/server/modules/vouchers/vo-dnm.js +6 -6
  993. package/server/modules/vouchers/vo-hd1.js +30 -30
  994. package/server/modules/vouchers/vo-hd2.js +102 -104
  995. package/server/modules/vouchers/vo-hd3.js +43 -46
  996. package/server/modules/vouchers/vo-hd4.js +13 -15
  997. package/server/modules/vouchers/vo-hd7.js +29 -31
  998. package/server/modules/vouchers/vo-hd8.js +10 -10
  999. package/server/modules/vouchers/vo-hde.js +39 -40
  1000. package/server/modules/vouchers/vo-htl.js +4 -4
  1001. package/server/modules/vouchers/vo-kbbtpb.js +1 -1
  1002. package/server/modules/vouchers/vo-kehoachmh.js +9 -9
  1003. package/server/modules/vouchers/vo-lenhcapphat.js +4 -4
  1004. package/server/modules/vouchers/vo-lenhsx.js +11 -11
  1005. package/server/modules/vouchers/vo-pbl.js +73 -74
  1006. package/server/modules/vouchers/vo-pc0.js +4 -4
  1007. package/server/modules/vouchers/vo-pc1.js +25 -26
  1008. package/server/modules/vouchers/vo-pc2.js +19 -20
  1009. package/server/modules/vouchers/vo-pc3.js +4 -4
  1010. package/server/modules/vouchers/vo-pc5.js +9 -9
  1011. package/server/modules/vouchers/vo-pc6.js +17 -17
  1012. package/server/modules/vouchers/vo-pcl.js +7 -8
  1013. package/server/modules/vouchers/vo-pdn.js +6 -6
  1014. package/server/modules/vouchers/vo-pdx.js +2 -2
  1015. package/server/modules/vouchers/vo-pgh.js +18 -18
  1016. package/server/modules/vouchers/vo-pht.js +3 -4
  1017. package/server/modules/vouchers/vo-pkc.js +6 -6
  1018. package/server/modules/vouchers/vo-pkh.js +7 -7
  1019. package/server/modules/vouchers/vo-pkk.js +12 -12
  1020. package/server/modules/vouchers/vo-pkt.js +6 -6
  1021. package/server/modules/vouchers/vo-pn1.js +33 -34
  1022. package/server/modules/vouchers/vo-pn2.js +15 -16
  1023. package/server/modules/vouchers/vo-pn3.js +17 -18
  1024. package/server/modules/vouchers/vo-pn5.js +19 -19
  1025. package/server/modules/vouchers/vo-pn6.js +9 -9
  1026. package/server/modules/vouchers/vo-pn9.js +22 -23
  1027. package/server/modules/vouchers/vo-pnc.js +19 -20
  1028. package/server/modules/vouchers/vo-pnh.js +19 -19
  1029. package/server/modules/vouchers/vo-pnk.js +14 -15
  1030. package/server/modules/vouchers/vo-pnknpp.js +12 -13
  1031. package/server/modules/vouchers/vo-po1.js +14 -14
  1032. package/server/modules/vouchers/vo-ppb.js +7 -7
  1033. package/server/modules/vouchers/vo-pt1.js +21 -21
  1034. package/server/modules/vouchers/vo-pt5.js +3 -3
  1035. package/server/modules/vouchers/vo-ptl.js +8 -8
  1036. package/server/modules/vouchers/vo-purchase_contract.js +2 -2
  1037. package/server/modules/vouchers/vo-pxc.js +22 -23
  1038. package/server/modules/vouchers/vo-pxh.js +27 -27
  1039. package/server/modules/vouchers/vo-pxk.js +14 -14
  1040. package/server/modules/vouchers/vo-pxknpp.js +8 -8
  1041. package/server/modules/vouchers/vo-qts.js +4 -5
  1042. package/server/modules/vouchers/vo-sale_contract.js +5 -5
  1043. package/server/modules/vouchers/vo-shipbook.js +17 -17
  1044. package/server/modules/vouchers/vo-so1.js +78 -78
  1045. package/server/modules/vouchers/vo-so2.js +26 -26
  1046. package/server/modules/vouchers/vo-so3.js +17 -17
  1047. package/server/modules/vouchers/vo-so5.js +44 -45
  1048. package/server/modules/vouchers/vo-so7.js +90 -91
  1049. package/server/modules/vouchers/vo-so9.js +91 -92
  1050. package/server/modules/vouchers/vo-vanchuyen.js +13 -13
  1051. package/server/modules/vouchers/vo-xhd.js +23 -24
  1052. package/server/route.js +48 -49
  1053. package/server/services/invoiceFetcher.js +1 -1
  1054. package/server/sslConfig.js +2 -2
  1055. package/server/transactionMiddleware.js +2 -2
  1056. package/server/workers/backupApp.js +7 -7
  1057. package/server/workers/calcGrid.js +3 -3
  1058. package/server/workers/customerOnImport.js +3 -3
  1059. package/server/workers/dmvtOnImport.js +5 -5
  1060. package/server/workers/excelParser.js +6 -6
  1061. package/server/workers/inputWorker.js +2 -2
  1062. package/server/workers/pushNotify.js +7 -7
  1063. package/server/workers/reportWorker.js +2 -2
  1064. package/server/workers/restoreApp.js +17 -17
  1065. package/server/workers/runScript.js +2 -3
  1066. package/server/workers/sendEmail.js +12 -12
  1067. package/server/workers/webhook.js +3 -3
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "flexbiz-server",
3
3
  "main": "./server/app.js",
4
4
  "description": "Flexible Server",
5
- "version": "12.3.55",
5
+ "version": "12.3.56",
6
6
  "author": {
7
7
  "name": "Van Truong Pham",
8
8
  "email": "invncur@gmail.com"
@@ -107,7 +107,7 @@
107
107
  "babel-plugin-transform-regenerator": "^6.26.0",
108
108
  "babel-polyfill": "^6.26.0",
109
109
  "eslint": "^7.2.0",
110
- "google-closure-compiler": "^20210601.0.0",
110
+ "google-closure-compiler": "^20251104.0.0",
111
111
  "gulp": "3.9.1",
112
112
  "gulp-copy": "^1.0.1",
113
113
  "gulp-uglify-cli": "latest",
package/server/app.js CHANGED
@@ -1,22 +1,22 @@
1
- 'use strict';require("events").EventEmitter.defaultMaxListeners=1E7;
1
+ require("events").EventEmitter.defaultMaxListeners=1E7;
2
2
  const os=require("os"),express=require("express"),bodyParser=require("body-parser"),crypto=require("crypto"),passport=require("passport"),https=require("https"),http=require("http"),fs=require("fs"),cors=require("cors"),_global=require("./global"),defaultConfigs=require("./defaultConfigs"),mainServer=function($app$$,$options$$={cluster:!0,port:443,useSocket:!0},$callbackServer$$=null){const $configs$$=global.configs={...defaultConfigs,...$options$$.configs,lite:$options$$.lite};$configs$$.database.url=
3
3
  process.env.MONGO_URI||$configs$$.database.url;const $User$$=global.getModel("user");$configs$$.admins||($configs$$.admins=$configs$$.adminUsers.map($u$$=>$u$$.email));$configs$$.supportUsers||($configs$$.supportUsers=[...$configs$$.admins]);$configs$$.public_token||($configs$$.public_token="flex.public.token");var $_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=$options$$.port||$configs$$.port||$configs$$.PORT||443;$configs$$.port=$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$;
4
- global.port=$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$;require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||($app$$=express());$app$$.set("trust proxy",1);const $toobusy$$=require("toobusy-js");$configs$$.maxLag&&$toobusy$$.maxLag($configs$$.maxLag);$app$$.use(function($req$$,$res$$,$next$$){$toobusy$$()?(console.error("Server is busy right now. This request has been cancel:",$req$$.originalUrl),$res$$.status(503).send({error:"Server is busy right now, sorry."})):
4
+ global.port=$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$;require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||=express();$app$$.set("trust proxy",1);const $toobusy$$=require("toobusy-js");$configs$$.maxLag&&$toobusy$$.maxLag($configs$$.maxLag);$app$$.use(function($req$$,$res$$,$next$$){$toobusy$$()?(console.error("Server is busy right now. This request has been cancel:",$req$$.originalUrl),$res$$.status(503).send({error:"Server is busy right now, sorry."})):
5
5
  $next$$()});$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("express-session");$app$$.use($_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$({secret:"QV098PVT123456HLBN",resave:!1,saveUninitialized:!0,cookie:{secure:!1}}));$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("cookie-parser");$app$$.use($_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$());$app$$.use(function($req$$,$res$$,$next$$){let $uid$$=
6
- $req$$.cookies.uid;$uid$$||($uid$$=$req$$.headers.uid);$uid$$||($uid$$="uid:"+crypto.randomBytes(20).toString("hex"),$res$$.cookie("uid",$uid$$,{expires:new Date(Date.now()+31536E6),sameSite:"none",secure:!0}));$res$$.set("uid",$uid$$);$req$$.cookies.uid=$uid$$;$next$$()});$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("compression");$app$$.use($_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$());$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=
6
+ $req$$.cookies.uid;$uid$$||=$req$$.headers.uid;$uid$$||($uid$$="uid:"+crypto.randomBytes(20).toString("hex"),$res$$.cookie("uid",$uid$$,{expires:new Date(Date.now()+31536E6),sameSite:"none",secure:!0}));$res$$.set("uid",$uid$$);$req$$.cookies.uid=$uid$$;$next$$()});$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("compression");$app$$.use($_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$());$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=
7
7
  $configs$$.paths.uploads||__dirname+"/uploads";const $limitFileSize$$=$configs$$.limitFileSize||1048576;$app$$.use(function($req$jscomp$2_size$$,$res$$,$next$$){if(($req$jscomp$2_size$$=$req$jscomp$2_size$$.headers["content-lenght"])&&$req$jscomp$2_size$$>$limitFileSize$$)return $res$$.status(400).send({error:"File too large"});$next$$()});$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("multer")({dest:$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$,
8
- limits:{files:1,fileSize:$limitFileSize$$}});$app$$.use($_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$);$app$$.use(cors({credentials:!0,exposedHeaders:["set-cookie","uid"],origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||($configs$$.paths={});!0!==$options$$.lite&&($app$$.use("/",express.static($configs$$.paths.public||__dirname+"/public")),$app$$.use("/admin",express.static($configs$$.paths.admin||__dirname+"/admin")),$app$$.use("/templates",express.static($configs$$.paths.templates||
8
+ limits:{files:1,fileSize:$limitFileSize$$}});$app$$.use($_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$);$app$$.use(cors({credentials:!0,exposedHeaders:["set-cookie","uid"],origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||($configs$$.paths={});$options$$.lite!==!0&&($app$$.use("/",express.static($configs$$.paths.public||__dirname+"/public")),$app$$.use("/admin",express.static($configs$$.paths.admin||__dirname+"/admin")),$app$$.use("/templates",express.static($configs$$.paths.templates||
9
9
  __dirname+"/templates")),$app$$.use("/images",express.static($configs$$.paths.images||__dirname+"/images")));$app$$.use(bodyParser.json({limit:$configs$$.limitRequestSize||"1mb"}));$app$$.use(bodyParser.urlencoded({limit:$configs$$.limitRequestSize||"1mb",extended:!0}));$app$$.use(passport.initialize());$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("morgan");var $accessLogStream_rfs$$=require("rotating-file-stream");const $logDirectory$$=$configs$$.paths.log||__dirname+
10
- "/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$accessLogStream_rfs$$=$accessLogStream_rfs$$("access.log",{interval:"1d",path:$logDirectory$$});$app$$.use($_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$("combined",{stream:$accessLogStream_rfs$$,skip:function($req$$,$res$$){return 400>$res$$.statusCode}}));$app$$.use(function($err$$,$req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server Error!")});console.log("[app] connect to mongodb",
10
+ "/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$accessLogStream_rfs$$=$accessLogStream_rfs$$("access.log",{interval:"1d",path:$logDirectory$$});$app$$.use($_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$("combined",{stream:$accessLogStream_rfs$$,skip:function($req$$,$res$$){return $res$$.statusCode<400}}));$app$$.use(function($err$$,$req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server Error!")});console.log("[app] connect to mongodb",
11
11
  $configs$$.database.url);$configs$$.database.url||(console.error("[app] thi\u1ebfu \u0111\u01b0\u1eddng d\u1eabn k\u1ebft n\u1ed1i v\u1edbi database trong file config"),process.exit(1));global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(async()=>{console.log("[app] Connected to Database");const $redis$$=require("redis"),{retryStrategyRedis:$retryStrategyRedis$$}=require("./libs/utils");global.clientRedis=$redis$$.createClient({host:"127.0.0.1",port:6379,retry_strategy:$retryStrategyRedis$$});
12
- global.clientRedis.on("error",$err$$=>console.error("Redis Client Error",$err$$));global.clientRedis.on("end",()=>{console.error("[app] Redis connection closed.")});global.clientRedis.on("connect",function(){console.log("[app] redis connected");$User$$.initClientSockets();0!=$options$$.createRedisCache&&require("./libs/redis-cache").set();$options$$.start_abci_handler&&global.getModel("assabcihandler").start();!0!==$options$$.lite?require("./route")($app$$,()=>{if(!1!==$options$$.createServer){var $StaticPool$jscomp$0$$=
13
- require("sticky-session");$configs$$.use_ssl?($cpus_report_cpus_server_sslConfig$$=require("./sslConfig"),$cpus_report_cpus_server_sslConfig$$=https.createServer($cpus_report_cpus_server_sslConfig$$($options$$.sslDir),$app$$)):$cpus_report_cpus_server_sslConfig$$=http.createServer($app$$);$cpus_report_cpus_server_sslConfig$$.timeout=6E5;!1!==$options$$.useSocket&&$User$$.initSocket($cpus_report_cpus_server_sslConfig$$);if(!1!==$options$$.cluster){if(!$StaticPool$jscomp$0$$.listen($cpus_report_cpus_server_sslConfig$$,
14
- global.port))$cpus_report_cpus_server_sslConfig$$.once("listening",function(){console.log("[app] server started on",global.port)});$StaticPool$jscomp$0$$=require("cluster");$StaticPool$jscomp$0$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("[app] worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool$jscomp$0$$.on("online",function($worker$$){console.info("[app] worker "+$worker$$.process.pid+" is online")})}else $cpus_report_cpus_server_sslConfig$$.listen(global.port,
15
- ()=>{console.log("[app] server start at "+global.port+" port")})}var $cpus_report_cpus_server_sslConfig$$=os.cpus().length;$StaticPool$jscomp$0$$=$options$$.import_cpus||($options$$.start_import_data_pool?$options$$.start_report_pool||$options$$.start_input_data_pool?1:Math.round($cpus_report_cpus_server_sslConfig$$/2):0);var $StaticPool$jscomp$1$$=$options$$.input_cpus||($options$$.start_input_data_pool?Math.max(Math.round($cpus_report_cpus_server_sslConfig$$/2),2):0);$cpus_report_cpus_server_sslConfig$$=
16
- $options$$.report_cpus||($options$$.start_import_data_pool?Math.max(Math.min($cpus_report_cpus_server_sslConfig$$-$StaticPool$jscomp$1$$-$StaticPool$jscomp$0$$,Math.round($cpus_report_cpus_server_sslConfig$$/2))-1,2):0);if($StaticPool$jscomp$1$$){const $StaticPool$$=require("./libs/WorkerStaticPool");global.inputMainPool=new $StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$1$$,3E5,$StaticPool$jscomp$1$$,"input pool");global.inputMainPool.exec({load:!0,
17
- configs:JSON.stringify($configs$$)},()=>{console.log("[app] Crud pool ready")})}$StaticPool$jscomp$0$$&&($StaticPool$jscomp$1$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool$jscomp$1$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,36E5,1,"import pool"),global.importDataMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("[app] Import pool ready")}));$cpus_report_cpus_server_sslConfig$$&&($StaticPool$jscomp$0$$=
18
- require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool$jscomp$0$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0,$cpus_report_cpus_server_sslConfig$$,3E5,2,"report pool"),global.reportMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("[app] Report pool ready")}));$callbackServer$$&&$callbackServer$$()}):require("./route")($app$$,()=>{$callbackServer$$&&$callbackServer$$()},!0)})}).catch($err$$=>{console.log("[app] Not Connected to Database ERROR! ",
19
- $err$$)});return $app$$};process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});process.on("uncaughtException",function($err$jscomp$3_error$$){console.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);console.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
12
+ global.clientRedis.on("error",$err$$=>console.error("Redis Client Error",$err$$));global.clientRedis.on("end",()=>{console.error("[app] Redis connection closed.")});global.clientRedis.on("connect",function(){console.log("[app] redis connected");$User$$.initClientSockets();$options$$.createRedisCache!=0&&require("./libs/redis-cache").set();$options$$.start_abci_handler&&global.getModel("assabcihandler").start();$options$$.lite!==!0?require("./route")($app$$,()=>{if($options$$.createServer!==!1){var $StaticPool$$=
13
+ require("sticky-session");if($configs$$.use_ssl){var $cpus_report_cpus_server_sslConfig$$=require("./sslConfig");$cpus_report_cpus_server_sslConfig$$=https.createServer($cpus_report_cpus_server_sslConfig$$($options$$.sslDir),$app$$)}else $cpus_report_cpus_server_sslConfig$$=http.createServer($app$$);$cpus_report_cpus_server_sslConfig$$.timeout=6E5;$options$$.useSocket!==!1&&$User$$.initSocket($cpus_report_cpus_server_sslConfig$$);if($options$$.cluster!==!1){if(!$StaticPool$$.listen($cpus_report_cpus_server_sslConfig$$,
14
+ global.port))$cpus_report_cpus_server_sslConfig$$.once("listening",function(){console.log("[app] server started on",global.port)});$StaticPool$$=require("cluster");$StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("[app] worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool$$.on("online",function($worker$$){console.info("[app] worker "+$worker$$.process.pid+" is online")})}else $cpus_report_cpus_server_sslConfig$$.listen(global.port,()=>{console.log("[app] server start at "+
15
+ global.port+" port")})}$cpus_report_cpus_server_sslConfig$$=os.cpus().length;$StaticPool$$=$options$$.import_cpus||($options$$.start_import_data_pool?$options$$.start_report_pool||$options$$.start_input_data_pool?1:Math.round($cpus_report_cpus_server_sslConfig$$/2):0);var $StaticPool$jscomp$0$$=$options$$.input_cpus||($options$$.start_input_data_pool?Math.max(Math.round($cpus_report_cpus_server_sslConfig$$/2),2):0);$cpus_report_cpus_server_sslConfig$$=$options$$.report_cpus||($options$$.start_import_data_pool?
16
+ Math.max(Math.min($cpus_report_cpus_server_sslConfig$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_report_cpus_server_sslConfig$$/2))-1,2):0);if($StaticPool$jscomp$0$$){const $StaticPool$$=require("./libs/WorkerStaticPool");global.inputMainPool=new $StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,3E5,$StaticPool$jscomp$0$$,"input pool");global.inputMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("[app] Crud pool ready")})}$StaticPool$$&&
17
+ ($StaticPool$jscomp$0$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool$jscomp$0$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$$,36E5,1,"import pool"),global.importDataMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("[app] Import pool ready")}));$cpus_report_cpus_server_sslConfig$$&&($StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool$$(__dirname+"/workers/reportWorker.js",
18
+ $options$$.max_queue_reports||0,$cpus_report_cpus_server_sslConfig$$,3E5,2,"report pool"),global.reportMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("[app] Report pool ready")}));$callbackServer$$&&$callbackServer$$()}):require("./route")($app$$,()=>{$callbackServer$$&&$callbackServer$$()},!0)})}).catch($err$$=>{console.log("[app] Not Connected to Database ERROR! ",$err$$)});return $app$$};
19
+ process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});process.on("uncaughtException",function($err$jscomp$3_error$$){console.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);console.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
20
20
  Error: ${$err$jscomp$3_error$$.message}
21
21
  Stack: ${$err$jscomp$3_error$$.stack}
22
22
  `;try{const $logDirectory$$=__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);fs.writeFile(`${$logDirectory$$}/error-${(new Date).getTime()}.txt`,$err$jscomp$3_error$$,()=>{console.log("[app] wrote log error")})}catch($e$$){console.log($e$$)}process.exit(1)});module.exports=mainServer;
@@ -1,3 +1,3 @@
1
- 'use strict';const User=global.getModel("user"),BearerStrategy=require("passport-http-bearer").Strategy;
1
+ const User=global.getModel("user"),BearerStrategy=require("passport-http-bearer").Strategy;
2
2
  module.exports=function($passport$$){$passport$$.use(new BearerStrategy({passReqToCallback:!0},function($req$$,$token$$,$done$$){let $ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress,$session_created$$=($req$$.cookies||{}).uid;setImmediate(function(){User.findByToken($token$$,$ip$$,async function($err$$,$user$$,$tokenInfo$$){if($err$$)return $done$$($err$$);if($tokenInfo$$.once&&$tokenInfo$$.used)return console.error("can't use token",$token$$,"at",$req$$.originalUrl),
3
- $done$$("Token n\u00e0y \u0111\u00e3 h\u1ebft hi\u1ec7u l\u1ef1c");if(!$user$$)return $done$$(null,!1);if(0==$user$$.status)return $done$$("T\u00e0i kho\u1ea3n n\u00e0y kh\u00f4ng c\u00f2n hi\u1ec7u l\u1ef1c");$user$$.toObject&&($user$$=$user$$.toObject());$user$$.token_id_app=$tokenInfo$$.only_id_app;$user$$.token_id_apps=$tokenInfo$$.id_apps;return $done$$(null,$user$$)},{session_created:$session_created$$})})}))};
3
+ $done$$("Token n\u00e0y \u0111\u00e3 h\u1ebft hi\u1ec7u l\u1ef1c");if(!$user$$)return $done$$(null,!1);if($user$$.status==0)return $done$$("T\u00e0i kho\u1ea3n n\u00e0y kh\u00f4ng c\u00f2n hi\u1ec7u l\u1ef1c");$user$$.toObject&&($user$$=$user$$.toObject());$user$$.token_id_app=$tokenInfo$$.only_id_app;$user$$.token_id_apps=$tokenInfo$$.id_apps;return $done$$(null,$user$$)},{session_created:$session_created$$})})}))};
@@ -1,13 +1,12 @@
1
- 'use strict';const User=global.getModel("user"),Usergroup=global.getModel("usergroup"),Participant=global.getModel("participant"),Token=global.getModel("token"),Customer=global.getModel("customer"),App=global.getModel("app"),request=require("request");
1
+ const User=global.getModel("user"),Usergroup=global.getModel("usergroup"),Participant=global.getModel("participant"),Token=global.getModel("token"),Customer=global.getModel("customer"),App=global.getModel("app"),request=require("request");
2
2
  module.exports=function($app$$){function $getProfile$$($access_token$$,$callback$$){request(`${"https://graph.facebook.com/me?fields=location,first_name,last_name,middle_name,name,gender,timezone,locale,about,address,age_range,birthday,cover,currency,email,id,languages,religion,sports,picture.type(large)"}&access_token=${$access_token$$}`,($e_profileUser$$,$res$$,$body$$)=>{if($e_profileUser$$)return $callback$$($e_profileUser$$);$e_profileUser$$=JSON.parse($body$$);if($e_profileUser$$.error)return $callback$$($e_profileUser$$);
3
- $e_profileUser$$.emails&&0<$e_profileUser$$.emails.length&&!$e_profileUser$$.email&&($e_profileUser$$.email=$e_profileUser$$.emails[0]);$e_profileUser$$.displayName||($e_profileUser$$.displayName=$e_profileUser$$.name);$callback$$(null,$e_profileUser$$)})}function $addUserToCompany$$($body$$,$newUser$$){$body$$.id_app&&App.findById($body$$.id_app,async($e$jscomp$0$$,$app$$)=>{if($e$jscomp$0$$||!$app$$)return console.log("Can't find app",$body$$.id_app,$e$jscomp$0$$);$e$jscomp$0$$=$body$$.group_id;
4
- if(!$e$jscomp$0$$)try{$e$jscomp$0$$=await Usergroup.getInfo($body$$.id_app,{status:!0,is_customer_group:!0},"_id")}catch($e$$){console.log($e$$.message)}Participant.createParticipant({id_app:$body$$.id_app,email:$newUser$$.email,group_id:$e$jscomp$0$$,active:!0},$cust_e$$=>{$cust_e$$&&console.log("can't add user",$newUser$$.email,"to company",$app$$.name,$cust_e$$);$cust_e$$={ten_kh:$newUser$$.name,email:$newUser$$.email,id_app:$body$$.id_app,user_created:$newUser$$.email,user_updated:$newUser$$.email,
5
- kh_yn:!0,of_user:$newUser$$.email};try{Customer.asyncCreateCustomer($cust_e$$)}catch($e$$){console.log("Auto create new customer with error:",$e$$.message)}})})}async function $checkExistUser$$($email$$){return new Promise(($resolve$$,$reject$$)=>{User.findOne({email:$email$$.toLowerCase()},($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$.message));$rs$$?$resolve$$($rs$$.toObject()):$resolve$$(null)})})}async function $createUser$$($accessToken$$,$profile$$,$done$$){setImmediate(async function(){let $u$$=
6
- await $checkExistUser$$($profile$$.email||$profile$$.id);if($u$$){if($u$$.facebook&&$u$$.facebook.id===$profile$$.id||$u$$.email===$profile$$.email){$addUserToCompany$$($profile$$,$u$$);(new Token({email:$u$$.email,token:$accessToken$$,service:"facebook"})).save(function($e$$){if($e$$)return $done$$($e$$);$done$$(null,$u$$)});return}return $done$$(`${$u$$.email} \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd tr\u00ean h\u1ec7 th\u1ed1ng`)}$profile$$.email||($profile$$.email=$profile$$.id);
7
- User.findOne({"facebook.id":$profile$$.id},async function($error$$,$user$$){if($error$$)return $done$$($error$$);if($user$$){if(0==$user$$.status)return $done$$("T\u00e0i kho\u1ea3n n\u00e0y kh\u00f4ng c\u00f2n hi\u1ec7u l\u1ef1c");$user$$.facebook.name=$profile$$.displayName;$user$$.facebook.picture=$profile$$.picture.data.url;$user$$.facebook.email=$profile$$.email;$user$$.name=$profile$$.displayName;$user$$.join_date||($user$$.join_date=new Date);$user$$.server="facebook";$user$$.local||($user$$.picture=
8
- $user$$.facebook.picture,$user$$.local={email:$user$$.email,name:$user$$.name,picture:$user$$.picture});$profile$$.password&&($user$$.local.password=$user$$.generateHash($user$$.email+$profile$$.password));$user$$.local.picture||($user$$.local.picture=$user$$.facebook.picture);$user$$.picture||($user$$.picture=$user$$.facebook.picture);$user$$.save(function($err$$,$user$$){if($err$$)return $done$$($err$$);$addUserToCompany$$($profile$$,$user$$);(new Token({email:$user$$.email,token:$accessToken$$,
9
- service:"facebook"})).save(function($e$$){return $e$$?$done$$($e$$):$done$$(null,$user$$)})})}else $user$$=new User,$user$$.current_user=$profile$$.email||$profile$$.id,$user$$.facebook.id=$profile$$.id,$user$$.facebook.email=$profile$$.email,$user$$.facebook.name=$profile$$.displayName,$user$$.facebook.picture=$profile$$.picture.data.url,$user$$.email=$profile$$.email||$profile$$.id,$user$$.name=$profile$$.displayName,$user$$.picture=$profile$$.picture.data.url,$user$$.server="facebook",$user$$.local=
10
- {email:$user$$.email,name:$user$$.name,picture:$user$$.picture,password:$profile$$.password?$user$$.generateHash($user$$.email+$profile$$.password):null},$user$$.join_date||($user$$.join_date=new Date),$user$$.save(function($err$$,$user$$){if($err$$)return $done$$($err$$);$addUserToCompany$$($profile$$,$user$$);(new Token({email:$user$$.email,token:$accessToken$$,service:"facebook"})).save(function($e$$){return $e$$?$done$$($e$$):$done$$(null,$user$$)})})})})}$app$$.get("/profile/facebook",($access_token$$,
11
- $res$$)=>{$access_token$$=$access_token$$.query.access_token;if(!$access_token$$)return $res$$.status(400).send("this API require access_token parameter");$getProfile$$($access_token$$,($e$jscomp$0$$,$profileUser$$)=>{if($e$jscomp$0$$)return $res$$.status(400).send($e$jscomp$0$$);User.findOne({"facebook.id":$profileUser$$.id.toString()},($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$profileUser$$.registed=$rs$$?!0:!1;$res$$.send($profileUser$$)})})});$app$$.get("/createuser/facebook",
12
- ($req$$,$res$$)=>{let $access_token$$=$req$$.query.access_token;if(!$access_token$$)return $res$$.status(400).send("this API require access_token parameter");$getProfile$$($access_token$$,($e$jscomp$0$$,$profileUser$$)=>{if($e$jscomp$0$$)return $res$$.status(400).send($e$jscomp$0$$);$profileUser$$.id_app=$req$$.query.id_app;$profileUser$$.group_id=$req$$.query.group_id;$profileUser$$.password=$req$$.query.password;$createUser$$($access_token$$,$profileUser$$,($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);
13
- $res$$.send($rs$$)})})})};
3
+ $e_profileUser$$.emails&&$e_profileUser$$.emails.length>0&&!$e_profileUser$$.email&&($e_profileUser$$.email=$e_profileUser$$.emails[0]);$e_profileUser$$.displayName||($e_profileUser$$.displayName=$e_profileUser$$.name);$callback$$(null,$e_profileUser$$)})}function $addUserToCompany$$($body$$,$newUser$$){$body$$.id_app&&App.findById($body$$.id_app,async($e$$,$app$$)=>{if($e$$||!$app$$)return console.log("Can't find app",$body$$.id_app,$e$$);$e$$=$body$$.group_id;if(!$e$$)try{$e$$=await Usergroup.getInfo($body$$.id_app,
4
+ {status:!0,is_customer_group:!0},"_id")}catch($e$$){console.log($e$$.message)}Participant.createParticipant({id_app:$body$$.id_app,email:$newUser$$.email,group_id:$e$$,active:!0},$cust_e$$=>{$cust_e$$&&console.log("can't add user",$newUser$$.email,"to company",$app$$.name,$cust_e$$);$cust_e$$={ten_kh:$newUser$$.name,email:$newUser$$.email,id_app:$body$$.id_app,user_created:$newUser$$.email,user_updated:$newUser$$.email,kh_yn:!0,of_user:$newUser$$.email};try{Customer.asyncCreateCustomer($cust_e$$)}catch($e$$){console.log("Auto create new customer with error:",
5
+ $e$$.message)}})})}async function $checkExistUser$$($email$$){return new Promise(($resolve$$,$reject$$)=>{User.findOne({email:$email$$.toLowerCase()},($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$.message));$rs$$?$resolve$$($rs$$.toObject()):$resolve$$(null)})})}async function $createUser$$($accessToken$$,$profile$$,$done$$){setImmediate(async function(){let $u$$=await $checkExistUser$$($profile$$.email||$profile$$.id);if($u$$){if($u$$.facebook&&$u$$.facebook.id===$profile$$.id||$u$$.email===
6
+ $profile$$.email){$addUserToCompany$$($profile$$,$u$$);(new Token({email:$u$$.email,token:$accessToken$$,service:"facebook"})).save(function($e$$){if($e$$)return $done$$($e$$);$done$$(null,$u$$)});return}return $done$$(`${$u$$.email} \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd tr\u00ean h\u1ec7 th\u1ed1ng`)}$profile$$.email||($profile$$.email=$profile$$.id);User.findOne({"facebook.id":$profile$$.id},async function($error$$,$user$$){if($error$$)return $done$$($error$$);if($user$$){if($user$$.status==
7
+ 0)return $done$$("T\u00e0i kho\u1ea3n n\u00e0y kh\u00f4ng c\u00f2n hi\u1ec7u l\u1ef1c");$user$$.facebook.name=$profile$$.displayName;$user$$.facebook.picture=$profile$$.picture.data.url;$user$$.facebook.email=$profile$$.email;$user$$.name=$profile$$.displayName;$user$$.join_date||($user$$.join_date=new Date);$user$$.server="facebook";$user$$.local||($user$$.picture=$user$$.facebook.picture,$user$$.local={email:$user$$.email,name:$user$$.name,picture:$user$$.picture});$profile$$.password&&($user$$.local.password=
8
+ $user$$.generateHash($user$$.email+$profile$$.password));$user$$.local.picture||($user$$.local.picture=$user$$.facebook.picture);$user$$.picture||($user$$.picture=$user$$.facebook.picture);$user$$.save(function($err$$,$user$$){if($err$$)return $done$$($err$$);$addUserToCompany$$($profile$$,$user$$);(new Token({email:$user$$.email,token:$accessToken$$,service:"facebook"})).save(function($e$$){return $e$$?$done$$($e$$):$done$$(null,$user$$)})})}else $user$$=new User,$user$$.current_user=$profile$$.email||
9
+ $profile$$.id,$user$$.facebook.id=$profile$$.id,$user$$.facebook.email=$profile$$.email,$user$$.facebook.name=$profile$$.displayName,$user$$.facebook.picture=$profile$$.picture.data.url,$user$$.email=$profile$$.email||$profile$$.id,$user$$.name=$profile$$.displayName,$user$$.picture=$profile$$.picture.data.url,$user$$.server="facebook",$user$$.local={email:$user$$.email,name:$user$$.name,picture:$user$$.picture,password:$profile$$.password?$user$$.generateHash($user$$.email+$profile$$.password):null},
10
+ $user$$.join_date||($user$$.join_date=new Date),$user$$.save(function($err$$,$user$$){if($err$$)return $done$$($err$$);$addUserToCompany$$($profile$$,$user$$);(new Token({email:$user$$.email,token:$accessToken$$,service:"facebook"})).save(function($e$$){return $e$$?$done$$($e$$):$done$$(null,$user$$)})})})})}$app$$.get("/profile/facebook",($access_token$$,$res$$)=>{$access_token$$=$access_token$$.query.access_token;if(!$access_token$$)return $res$$.status(400).send("this API require access_token parameter");
11
+ $getProfile$$($access_token$$,($e$$,$profileUser$$)=>{if($e$$)return $res$$.status(400).send($e$$);User.findOne({"facebook.id":$profileUser$$.id.toString()},($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$profileUser$$.registed=$rs$$?!0:!1;$res$$.send($profileUser$$)})})});$app$$.get("/createuser/facebook",($req$$,$res$$)=>{let $access_token$$=$req$$.query.access_token;if(!$access_token$$)return $res$$.status(400).send("this API require access_token parameter");$getProfile$$($access_token$$,
12
+ ($e$$,$profileUser$$)=>{if($e$$)return $res$$.status(400).send($e$$);$profileUser$$.id_app=$req$$.query.id_app;$profileUser$$.group_id=$req$$.query.group_id;$profileUser$$.password=$req$$.query.password;$createUser$$($access_token$$,$profileUser$$,($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)})})})};
@@ -1,14 +1,13 @@
1
- 'use strict';const User=global.getModel("user"),Usergroup=global.getModel("usergroup"),Customer=global.getModel("customer"),Token=global.getModel("token"),App=global.getModel("app"),Participant=global.getModel("participant"),request=require("request");
1
+ const User=global.getModel("user"),Usergroup=global.getModel("usergroup"),Customer=global.getModel("customer"),Token=global.getModel("token"),App=global.getModel("app"),Participant=global.getModel("participant"),request=require("request");
2
2
  module.exports=function($app$$){function $getProfile$$($token$$,$callback$$){request({url:$token$$.access_token?"https://www.googleapis.com/userinfo/v2/me":"https://oauth2.googleapis.com/tokeninfo?id_token="+$token$$.id_token,headers:{Authorization:$token$$.access_token?`Bearer ${$token$$.access_token}`:null}},($e_profileUser$$,$res$$,$body$$)=>{if($e_profileUser$$)return $callback$$($e_profileUser$$);$e_profileUser$$=JSON.parse($body$$);if($e_profileUser$$.error)return $callback$$($e_profileUser$$.error);
3
- $e_profileUser$$.emails&&0<$e_profileUser$$.emails.length&&!$e_profileUser$$.email&&($e_profileUser$$.email=$e_profileUser$$.emails[0].value);$e_profileUser$$.emails||($e_profileUser$$.emails=[{value:$e_profileUser$$.email||$e_profileUser$$.id}]);$e_profileUser$$.displayName||($e_profileUser$$.displayName=$e_profileUser$$.name);$callback$$(null,$e_profileUser$$)})}function $addUserToCompany$$($body$$,$newUser$$){$body$$.id_app&&App.findById($body$$.id_app,async($e$jscomp$0$$,$app$$)=>{if($e$jscomp$0$$||
4
- !$app$$)return console.log("Can't find app",$body$$.id_app,$e$jscomp$0$$);$e$jscomp$0$$=$body$$.group_id;if(!$e$jscomp$0$$)try{$e$jscomp$0$$=await Usergroup.getInfo($body$$.id_app,{status:!0,is_customer_group:!0},"_id")}catch($e$$){console.log($e$$.message)}Participant.createParticipant({id_app:$body$$.id_app,email:$newUser$$.email,group_id:$e$jscomp$0$$,active:!0},$cust_e$$=>{$cust_e$$&&console.log("can't add user",$newUser$$.email,"to company",$app$$.name);$cust_e$$={ten_kh:$newUser$$.name,email:$newUser$$.email,
5
- id_app:$body$$.id_app,user_created:$newUser$$.email,user_updated:$newUser$$.email,kh_yn:!0,of_user:$newUser$$.email};try{Customer.asyncCreateCustomer($cust_e$$)}catch($e$$){console.log("Auto create new customer with error:",$e$$.message)}})})}async function $checkExistUser$$($email$$){return new Promise(($resolve$$,$reject$$)=>{User.findOne({email:$email$$.toLowerCase()}).lean().then($rs$$=>{$rs$$?$resolve$$($rs$$):$resolve$$(null)}).catch($e$$=>{$reject$$(Error($e$$.message))})})}async function $createUser$$($accessToken$$,
6
- $profile$$,$done$$){setImmediate(async()=>{let $u$$=await $checkExistUser$$($profile$$.emails[0].value);if($u$$){if($u$$.google&&$u$$.google.id===$profile$$.id||$u$$.email===$profile$$.email){$addUserToCompany$$($profile$$,$u$$);(new Token({email:$u$$.email,token:$accessToken$$,service:"google"})).save(function($e$$){if($e$$)return console.log("error create token",$e$$),$done$$($e$$);$done$$(null,$u$$)});return}console.error(`${$profile$$.email} \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd tr\u00ean h\u1ec7 th\u1ed1ng`,
7
- $u$$);return $done$$(`${$profile$$.email} \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd tr\u00ean h\u1ec7 th\u1ed1ng`)}User.findOne({"google.id":$profile$$.id||$profile$$.email},async function($error$$,$user$$){if($error$$)return $done$$($error$$);if($user$$){if(0==$user$$.status)return $done$$("T\u00e0i kho\u1ea3n n\u00e0y kh\u00f4ng c\u00f2n hi\u1ec7u l\u1ef1c");console.log("update user....");$user$$.google.name=$profile$$.displayName;$profile$$._json&&($user$$.google.picture=$profile$$._json.image.url);
8
- $user$$.token=$accessToken$$;$user$$.name=$profile$$.displayName;$user$$.join_date||($user$$.join_date=new Date);$user$$.server="google";$user$$.local||($user$$.picture=$user$$.google.picture,$user$$.local={email:$user$$.email,name:$user$$.name,picture:$user$$.picture});$user$$.picture||($user$$.picture=$user$$.google.picture);$user$$.save(function($err$jscomp$1_token$$,$user$$){if($err$jscomp$1_token$$)return console.log("error update user",$err$jscomp$1_token$$),$done$$($err$jscomp$1_token$$);$err$jscomp$1_token$$=
9
- new Token({email:$user$$.email,token:$accessToken$$,service:"google"});$addUserToCompany$$($profile$$,$user$$);$err$jscomp$1_token$$.save(function($e$$){return $e$$?(console.log("error create token",$e$$),$done$$($e$$)):$done$$(null,$user$$)})})}else console.log("create new user...",$profile$$.email),$user$$=new User,$user$$.current_user=$profile$$.emails[0].value,$user$$.google.id=$profile$$.id,$user$$.google.email=$profile$$.emails[0].value,$user$$.google.name=$profile$$.displayName,$profile$$._json&&
10
- ($user$$.google.picture=$profile$$._json.image.url),$user$$.token=$accessToken$$,$user$$.email=$profile$$.emails[0].value,$user$$.name=$profile$$.displayName,$user$$.picture=$user$$.google.picture,$user$$.join_date=new Date,$user$$.server="google",$user$$.local={email:$user$$.email,name:$user$$.name,picture:$user$$.picture},$user$$.save(function($err$$,$user$$){if($err$$)return console.log("error create new user",$err$$),$done$$($err$$);$addUserToCompany$$($profile$$,$user$$);(new Token({email:$user$$.email,
11
- token:$accessToken$$,service:"google"})).save(function($e$$){return $e$$?(console.log("error create token",$e$$),$done$$($e$$)):$done$$(null,$user$$)})})})})}$app$$.get("/profile/google",($idToken_req$$,$res$$)=>{let $access_token$$=$idToken_req$$.query.access_token;$idToken_req$$=$idToken_req$$.query.id_token;if(!$access_token$$&&!$idToken_req$$)return $res$$.status(400).send("this API require access_token or id_token parameter");$getProfile$$({id_token:$idToken_req$$,access_token:$access_token$$},
12
- ($e$jscomp$0$$,$profileUser$$)=>{if($e$jscomp$0$$)return $res$$.status(400).send($e$jscomp$0$$);User.findOne({"google.id":$profileUser$$.id.toString()},($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$profileUser$$.registed=$rs$$?!0:!1;$res$$.send($profileUser$$)})})});$app$$.get("/createuser/google",($req$$,$res$$)=>{let $access_token$$=$req$$.query.access_token,$idToken$$=$req$$.query.id_token;if(!$access_token$$&&!$idToken$$)return $res$$.status(400).send("this API require access_token or id_token parameter");
13
- $getProfile$$({id_token:$idToken$$,access_token:$access_token$$},($e$jscomp$0$$,$profileUser$$)=>{if($e$jscomp$0$$)return $res$$.status(400).send($e$jscomp$0$$);$profileUser$$.id_app=$req$$.query.id_app;$profileUser$$.group_id=$req$$.query.group_id;$profileUser$$.email||($profileUser$$.email=$req$$.query.email||$profileUser$$.id);$profileUser$$.password=$req$$.query.password;let $token$$=$access_token$$||$idToken$$;$createUser$$($token$$,$profileUser$$,($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);
14
- $rs$$.toObject&&($rs$$=$rs$$.toObject());$rs$$.access_token=$token$$;$res$$.send($rs$$)})})})};
3
+ $e_profileUser$$.emails&&$e_profileUser$$.emails.length>0&&!$e_profileUser$$.email&&($e_profileUser$$.email=$e_profileUser$$.emails[0].value);$e_profileUser$$.emails||($e_profileUser$$.emails=[{value:$e_profileUser$$.email||$e_profileUser$$.id}]);$e_profileUser$$.displayName||($e_profileUser$$.displayName=$e_profileUser$$.name);$callback$$(null,$e_profileUser$$)})}function $addUserToCompany$$($body$$,$newUser$$){$body$$.id_app&&App.findById($body$$.id_app,async($e$$,$app$$)=>{if($e$$||!$app$$)return console.log("Can't find app",
4
+ $body$$.id_app,$e$$);$e$$=$body$$.group_id;if(!$e$$)try{$e$$=await Usergroup.getInfo($body$$.id_app,{status:!0,is_customer_group:!0},"_id")}catch($e$$){console.log($e$$.message)}Participant.createParticipant({id_app:$body$$.id_app,email:$newUser$$.email,group_id:$e$$,active:!0},$cust_e$$=>{$cust_e$$&&console.log("can't add user",$newUser$$.email,"to company",$app$$.name);$cust_e$$={ten_kh:$newUser$$.name,email:$newUser$$.email,id_app:$body$$.id_app,user_created:$newUser$$.email,user_updated:$newUser$$.email,
5
+ kh_yn:!0,of_user:$newUser$$.email};try{Customer.asyncCreateCustomer($cust_e$$)}catch($e$$){console.log("Auto create new customer with error:",$e$$.message)}})})}async function $checkExistUser$$($email$$){return new Promise(($resolve$$,$reject$$)=>{User.findOne({email:$email$$.toLowerCase()}).lean().then($rs$$=>{$rs$$?$resolve$$($rs$$):$resolve$$(null)}).catch($e$$=>{$reject$$(Error($e$$.message))})})}async function $createUser$$($accessToken$$,$profile$$,$done$$){setImmediate(async()=>{let $u$$=await $checkExistUser$$($profile$$.emails[0].value);
6
+ if($u$$){if($u$$.google&&$u$$.google.id===$profile$$.id||$u$$.email===$profile$$.email){$addUserToCompany$$($profile$$,$u$$);(new Token({email:$u$$.email,token:$accessToken$$,service:"google"})).save(function($e$$){if($e$$)return console.log("error create token",$e$$),$done$$($e$$);$done$$(null,$u$$)});return}console.error(`${$profile$$.email} \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd tr\u00ean h\u1ec7 th\u1ed1ng`,$u$$);return $done$$(`${$profile$$.email} \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd tr\u00ean h\u1ec7 th\u1ed1ng`)}User.findOne({"google.id":$profile$$.id||
7
+ $profile$$.email},async function($error$$,$user$$){if($error$$)return $done$$($error$$);if($user$$){if($user$$.status==0)return $done$$("T\u00e0i kho\u1ea3n n\u00e0y kh\u00f4ng c\u00f2n hi\u1ec7u l\u1ef1c");console.log("update user....");$user$$.google.name=$profile$$.displayName;$profile$$._json&&($user$$.google.picture=$profile$$._json.image.url);$user$$.token=$accessToken$$;$user$$.name=$profile$$.displayName;$user$$.join_date||($user$$.join_date=new Date);$user$$.server="google";$user$$.local||
8
+ ($user$$.picture=$user$$.google.picture,$user$$.local={email:$user$$.email,name:$user$$.name,picture:$user$$.picture});$user$$.picture||($user$$.picture=$user$$.google.picture);$user$$.save(function($err$jscomp$1_token$$,$user$$){if($err$jscomp$1_token$$)return console.log("error update user",$err$jscomp$1_token$$),$done$$($err$jscomp$1_token$$);$err$jscomp$1_token$$=new Token({email:$user$$.email,token:$accessToken$$,service:"google"});$addUserToCompany$$($profile$$,$user$$);$err$jscomp$1_token$$.save(function($e$$){return $e$$?
9
+ (console.log("error create token",$e$$),$done$$($e$$)):$done$$(null,$user$$)})})}else console.log("create new user...",$profile$$.email),$user$$=new User,$user$$.current_user=$profile$$.emails[0].value,$user$$.google.id=$profile$$.id,$user$$.google.email=$profile$$.emails[0].value,$user$$.google.name=$profile$$.displayName,$profile$$._json&&($user$$.google.picture=$profile$$._json.image.url),$user$$.token=$accessToken$$,$user$$.email=$profile$$.emails[0].value,$user$$.name=$profile$$.displayName,
10
+ $user$$.picture=$user$$.google.picture,$user$$.join_date=new Date,$user$$.server="google",$user$$.local={email:$user$$.email,name:$user$$.name,picture:$user$$.picture},$user$$.save(function($err$$,$user$$){if($err$$)return console.log("error create new user",$err$$),$done$$($err$$);$addUserToCompany$$($profile$$,$user$$);(new Token({email:$user$$.email,token:$accessToken$$,service:"google"})).save(function($e$$){return $e$$?(console.log("error create token",$e$$),$done$$($e$$)):$done$$(null,$user$$)})})})})}
11
+ $app$$.get("/profile/google",($idToken_req$$,$res$$)=>{let $access_token$$=$idToken_req$$.query.access_token;$idToken_req$$=$idToken_req$$.query.id_token;if(!$access_token$$&&!$idToken_req$$)return $res$$.status(400).send("this API require access_token or id_token parameter");$getProfile$$({id_token:$idToken_req$$,access_token:$access_token$$},($e$$,$profileUser$$)=>{if($e$$)return $res$$.status(400).send($e$$);User.findOne({"google.id":$profileUser$$.id.toString()},($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);
12
+ $profileUser$$.registed=$rs$$?!0:!1;$res$$.send($profileUser$$)})})});$app$$.get("/createuser/google",($req$$,$res$$)=>{let $access_token$$=$req$$.query.access_token,$idToken$$=$req$$.query.id_token;if(!$access_token$$&&!$idToken$$)return $res$$.status(400).send("this API require access_token or id_token parameter");$getProfile$$({id_token:$idToken$$,access_token:$access_token$$},($e$$,$profileUser$$)=>{if($e$$)return $res$$.status(400).send($e$$);$profileUser$$.id_app=$req$$.query.id_app;$profileUser$$.group_id=
13
+ $req$$.query.group_id;$profileUser$$.email||($profileUser$$.email=$req$$.query.email||$profileUser$$.id);$profileUser$$.password=$req$$.query.password;let $token$$=$access_token$$||$idToken$$;$createUser$$($token$$,$profileUser$$,($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$rs$$.toObject&&($rs$$=$rs$$.toObject());$rs$$.access_token=$token$$;$res$$.send($rs$$)})})})};
@@ -1,5 +1,5 @@
1
- 'use strict';const User=global.getModel("user"),Participant=global.getModel("participant"),UserGroup=global.getModel("usergroup"),Customer=global.getModel("customer"),axios=require("axios"),log=global.getModel("log"),App=global.getModel("app"),Wallet=global.getModel("wallet"),Token=global.getModel("token"),BasicStrategy=require("passport-http").BasicStrategy,_crypto=require("crypto"),validator=require("validator"),email=require("../libs/email"),loadTemplate=require("../libs/load-template"),permission=
2
- require("../libs/permission"),OTP=global.getModel("otp"),DIGITS="0123456789",jwt=require("jsonwebtoken"),redisCache=require("../libs/redis-cache"),utils=require("../libs/utils"),Controler=require("../controllers/controller"),{isValidObjectId}=require("mongoose"),moment=require("moment"),querystring=require("querystring"),total_time_wait_login=36E5,total_time_try_login=3;function generateOTP(){let $OTP$$="";for(let $i$$=0;6>$i$$;$i$$++)$OTP$$+=DIGITS[Math.floor(10*Math.random())];return $OTP$$}
1
+ const User=global.getModel("user"),Participant=global.getModel("participant"),UserGroup=global.getModel("usergroup"),Customer=global.getModel("customer"),axios=require("axios"),log=global.getModel("log"),App=global.getModel("app"),Wallet=global.getModel("wallet"),Token=global.getModel("token"),BasicStrategy=require("passport-http").BasicStrategy,_crypto=require("crypto"),validator=require("validator"),email=require("../libs/email"),loadTemplate=require("../libs/load-template"),permission=require("../libs/permission"),
2
+ OTP=global.getModel("otp"),DIGITS="0123456789",jwt=require("jsonwebtoken"),redisCache=require("../libs/redis-cache"),utils=require("../libs/utils"),Controler=require("../controllers/controller"),{isValidObjectId}=require("mongoose"),moment=require("moment"),querystring=require("querystring"),total_time_wait_login=36E5,total_time_try_login=3;function generateOTP(){let $OTP$$="";for(let $i$$=0;$i$$<6;$i$$++)$OTP$$+=DIGITS[Math.floor(Math.random()*10)];return $OTP$$}
3
3
  function generateToken($accessToken_user$$){var $body_n$$={email:$accessToken_user$$.email};configs.APP_SECRET?$accessToken_user$$=jwt.sign({user:$body_n$$},configs.APP_SECRET):($body_n$$=new Date,$accessToken_user$$=_crypto.createHash("md5").update($accessToken_user$$.email+$body_n$$.toISOString()).digest("hex"));return $accessToken_user$$}
4
4
  function saveOTP($Phone$$,$otp_code$$,$expires$$=5){let $expire_time$$=new Date;$expire_time$$.setMinutes($expire_time$$.getMinutes()+$expires$$);return OTP.create({phone:$Phone$$,otp:$otp_code$$,expire_time:$expire_time$$})}
5
5
  function findByUsername($username$$,$fn$$){if(!$username$$)return $fn$$("B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n");User.findOne({$or:[{email:$username$$},{"local.phone":$username$$}]},function($error$$,$result$$){return!$error$$&&$result$$&&$result$$.local?$fn$$(null,$result$$):$fn$$($error$$||`T\u00e0i kho\u1ea3n ${$username$$} kh\u00f4ng t\u1ed3n t\u1ea1i`)})}
@@ -7,58 +7,58 @@ async function addUserToApp($user$$,$body$$,$par_session_created_ug$$){if($body$
7
7
  let $cust$$;await global.getModel("customer").findOne({id_app:$body$$.id_app,of_user:$user$$.email},{_id:1}).lean()||($cust$$={ten_kh:$body$$.name||$user$$.email,email:validator.isEmail($user$$.email)?$user$$.email:void 0},$body$$.customer_info&&($cust$$={...$cust$$,...$body$$.customer_info}),$cust$$.ten_kh||($cust$$.ten_kh=$body$$.name||$user$$.email),$cust$$={...$cust$$,id_app:$body$$.id_app,user_created:$user$$.email,user_updated:$user$$.email,kh_yn:!0,of_user:$user$$.email},$par_session_created_ug$$&&
8
8
  $par_session_created_ug$$.group_id&&($par_session_created_ug$$=await global.getModel("usergroup").findOne({id_app:$body$$.id_app,_id:$par_session_created_ug$$.group_id},{nh_kh:1}),$cust$$.nh_kh=($par_session_created_ug$$||{}).nh_kh));if($body$$.introduce_code){let $contrIntroducer$$=global.controllers.INTRODUCER;await new Promise(($rs$$,$rj$$)=>{Controler.create($user$$,$contrIntroducer$$,{introduce_code:$body$$.introduce_code},($e$$,$intr$$)=>{if($e$$)return $rj$$($e$$.message||$e$$.error||$e$$);
9
9
  $cust$$&&($cust$$.phu_trach=$intr$$.be_introduced_by);$rs$$()})})}$cust$$&&await Customer.asyncCreateCustomer($cust$$)}}
10
- module.exports=async function($app$jscomp$0$$,$passport$$){const $rateLimiter$$=await global.createRateLimiterMiddleware(configs.limitRequest.auth||{},"auth");$passport$$.use(new BasicStrategy(function($username$$,$password$$,$done$$){if(!$username$$)return $done$$("B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n");$username$$=$username$$.trim();let $id_app$$;if(0<$username$$.indexOf("@app=")){const $user_app$$=$username$$.split("@app=");$username$$=$user_app$$[0];$id_app$$=$user_app$$[1]}$username$$=
11
- $username$$.toLowerCase();setImmediate(function(){findByUsername($username$$,async function($err_pars_pars$$,$user$$){if($err_pars_pars$$)return $done$$($err_pars_pars$$);if(!$user$$)return $done$$("T\u00e0i kho\u1ea3n "+$username$$+" ch\u01b0a \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd.");if(0==$user$$.status)return $done$$("T\u00e0i kho\u1ea3n n\u00e0y kh\u00f4ng c\u00f2n hi\u1ec7u l\u1ef1c");if($user$$.local.rspassword)if($user$$.validRspassword($password$$))$user$$.local.password=$user$$.local.rspassword,
12
- $user$$.local.rspassword=void 0,User.findOneAndUpdate({email:$user$$.email},{local:$user$$.local},($e$$,$rs$$)=>{if($e$$)return console.error("Can't update password",$user$$.email,$e$$);console.log("updated new password",$user$$.email,$rs$$)});else{if(!$user$$.validPassword($password$$))if($id_app$$)if(await $user$$.validAppPassword($password$$,$id_app$$))$user$$=$user$$.toObject(),$user$$.token_id_app=$id_app$$;else return $done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.");else return $err_pars_pars$$=
13
- await $user$$.getAppOfPassword($password$$),0<$err_pars_pars$$.length?($user$$=$user$$.toObject(),$user$$.token_id_apps=$err_pars_pars$$.map($p$$=>$p$$.id_app),$done$$(null,$user$$)):$done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.")}else{if(!$user$$.local.password)return $done$$("M\u1eadt kh\u1ea9u cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i. H\u00e3y s\u1eed d\u1ee5ng t\u00ednh n\u0103ng kh\u00f4i ph\u1ee5c m\u1eadt kh\u1ea9u \u0111\u1ec3 \u0111\u1eb7t l\u1ea1i m\u1eadt kh\u1ea9u cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y");
14
- if(!$user$$.validPassword($password$$))if($id_app$$)if(await $user$$.validAppPassword($password$$,$id_app$$))$user$$=$user$$.toObject(),$user$$.token_id_app=$id_app$$;else return $done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.");else return $err_pars_pars$$=await $user$$.getAppOfPassword($password$$),0<$err_pars_pars$$.length?($user$$=$user$$.toObject(),$user$$.token_id_apps=$err_pars_pars$$.map($p$$=>$p$$.id_app),$done$$(null,$user$$)):$done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.")}return $done$$(null,
15
- $user$$)})})}));$app$jscomp$0$$.get("/send-otp/:address_receive_otp",$rateLimiter$$,async($headers_req$$,$res$$)=>{var $address_receive_otp_app$jscomp$2_id_app$$=$headers_req$$.params.address_receive_otp.trim().toLowerCase();if(configs.GOOGLE_RECAPTCHA_SECRET_KEY){if(!$headers_req$$.query["g-recaptcha-response"])return $res$$.status(400).send("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u m\u1ed9t google recaptcha token");try{await permission.verifyReCaptcha($headers_req$$.query["g-recaptcha-response"])}catch($e$$){return console.error("Can't verify recaptcha when send otp",
16
- $e$$),$res$$.status(400).send($e$$.messag||$e$$.error||$e$$)}}var $data_u$$=await User.findOne({$or:[{email:$address_receive_otp_app$jscomp$2_id_app$$},{"local.phone":$address_receive_otp_app$jscomp$2_id_app$$}]});if(!$data_u$$)return $res$$.status(400).send({error:`T\u00e0i kho\u1ea3n ${$address_receive_otp_app$jscomp$2_id_app$$} kh\u00f4ng t\u1ed3n t\u1ea1i`});const $username$$=$data_u$$.email;var $message_message$jscomp$1_otp_code$jscomp$1_url$$=generateOTP();let $phone$$;$address_receive_otp_app$jscomp$2_id_app$$!=
17
- $username$$&&utils.isMobilePhone($address_receive_otp_app$jscomp$2_id_app$$)?$phone$$=$address_receive_otp_app$jscomp$2_id_app$$:utils.isMobilePhone($username$$)?$phone$$=$username$$:utils.isMobilePhone(($data_u$$.local||{}).phone||"")&&($phone$$=($data_u$$.local||{}).phone);let $optObject$$;try{$optObject$$=await saveOTP($username$$,$message_message$jscomp$1_otp_code$jscomp$1_url$$)}catch($e$$){return $res$$.status(400).send({error:"Kh\u00f4ng th\u1ec3 t\u1ea1o m\u00e3 OTP"})}if($phone$$){if(($address_receive_otp_app$jscomp$2_id_app$$=
10
+ module.exports=async function($app$$,$passport$$){const $rateLimiter$$=await global.createRateLimiterMiddleware(configs.limitRequest.auth||{},"auth");$passport$$.use(new BasicStrategy(function($username$$,$password$$,$done$$){if(!$username$$)return $done$$("B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n");$username$$=$username$$.trim();let $id_app$$;if($username$$.indexOf("@app=")>0){const $user_app$$=$username$$.split("@app=");$username$$=$user_app$$[0];$id_app$$=$user_app$$[1]}$username$$=$username$$.toLowerCase();
11
+ setImmediate(function(){findByUsername($username$$,async function($err_pars_pars$$,$user$$){if($err_pars_pars$$)return $done$$($err_pars_pars$$);if(!$user$$)return $done$$("T\u00e0i kho\u1ea3n "+$username$$+" ch\u01b0a \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd.");if($user$$.status==0)return $done$$("T\u00e0i kho\u1ea3n n\u00e0y kh\u00f4ng c\u00f2n hi\u1ec7u l\u1ef1c");if($user$$.local.rspassword)if($user$$.validRspassword($password$$))$user$$.local.password=$user$$.local.rspassword,$user$$.local.rspassword=
12
+ void 0,User.findOneAndUpdate({email:$user$$.email},{local:$user$$.local},($e$$,$rs$$)=>{if($e$$)return console.error("Can't update password",$user$$.email,$e$$);console.log("updated new password",$user$$.email,$rs$$)});else{if(!$user$$.validPassword($password$$))if($id_app$$)if(await $user$$.validAppPassword($password$$,$id_app$$))$user$$=$user$$.toObject(),$user$$.token_id_app=$id_app$$;else return $done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.");else return $err_pars_pars$$=await $user$$.getAppOfPassword($password$$),
13
+ $err_pars_pars$$.length>0?($user$$=$user$$.toObject(),$user$$.token_id_apps=$err_pars_pars$$.map($p$$=>$p$$.id_app),$done$$(null,$user$$)):$done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.")}else{if(!$user$$.local.password)return $done$$("M\u1eadt kh\u1ea9u cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i. H\u00e3y s\u1eed d\u1ee5ng t\u00ednh n\u0103ng kh\u00f4i ph\u1ee5c m\u1eadt kh\u1ea9u \u0111\u1ec3 \u0111\u1eb7t l\u1ea1i m\u1eadt kh\u1ea9u cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y");
14
+ if(!$user$$.validPassword($password$$))if($id_app$$)if(await $user$$.validAppPassword($password$$,$id_app$$))$user$$=$user$$.toObject(),$user$$.token_id_app=$id_app$$;else return $done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.");else return $err_pars_pars$$=await $user$$.getAppOfPassword($password$$),$err_pars_pars$$.length>0?($user$$=$user$$.toObject(),$user$$.token_id_apps=$err_pars_pars$$.map($p$$=>$p$$.id_app),$done$$(null,$user$$)):$done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.")}return $done$$(null,
15
+ $user$$)})})}));$app$$.get("/send-otp/:address_receive_otp",$rateLimiter$$,async($headers_req$$,$res$$)=>{var $address_receive_otp_app$jscomp$2_id_app$$=$headers_req$$.params.address_receive_otp.trim().toLowerCase();if(configs.GOOGLE_RECAPTCHA_SECRET_KEY){if(!$headers_req$$.query["g-recaptcha-response"])return $res$$.status(400).send("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u m\u1ed9t google recaptcha token");try{await permission.verifyReCaptcha($headers_req$$.query["g-recaptcha-response"])}catch($e$$){return console.error("Can't verify recaptcha when send otp",
16
+ $e$$),$res$$.status(400).send($e$$.messag||$e$$.error||$e$$)}}var $data_u$$=await User.findOne({$or:[{email:$address_receive_otp_app$jscomp$2_id_app$$},{"local.phone":$address_receive_otp_app$jscomp$2_id_app$$}]});if(!$data_u$$)return $res$$.status(400).send({error:`T\u00e0i kho\u1ea3n ${$address_receive_otp_app$jscomp$2_id_app$$} kh\u00f4ng t\u1ed3n t\u1ea1i`});const $username$$=$data_u$$.email;var $message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$=generateOTP();let $phone$$;$address_receive_otp_app$jscomp$2_id_app$$!=
17
+ $username$$&&utils.isMobilePhone($address_receive_otp_app$jscomp$2_id_app$$)?$phone$$=$address_receive_otp_app$jscomp$2_id_app$$:utils.isMobilePhone($username$$)?$phone$$=$username$$:utils.isMobilePhone(($data_u$$.local||{}).phone||"")&&($phone$$=($data_u$$.local||{}).phone);let $optObject$$;try{$optObject$$=await saveOTP($username$$,$message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$)}catch($e$$){return $res$$.status(400).send({error:"Kh\u00f4ng th\u1ec3 t\u1ea1o m\u00e3 OTP"})}if($phone$$){if(($address_receive_otp_app$jscomp$2_id_app$$=
18
18
  $headers_req$$.query.id_app)&&isValidObjectId($address_receive_otp_app$jscomp$2_id_app$$)){$address_receive_otp_app$jscomp$2_id_app$$=await global.getModel("app").findOne({_id:$address_receive_otp_app$jscomp$2_id_app$$});const {zalo_otp_template_id:$zalo_otp_template_id$$,zalo_app_id:$zalo_app_id$$,zalo_secret_key:$zalo_secret_key$$,zalo_refresh_token:$zalo_refresh_token$$,zalo_access_token:$zalo_access_token$$,zalo_expires_in:$zalo_expires_in$$,zalo_updated:$zalo_updated$$}=$address_receive_otp_app$jscomp$2_id_app$$||
19
19
  {};if($zalo_otp_template_id$$&&$zalo_app_id$$&&$zalo_secret_key$$&&$zalo_refresh_token$$){if(!$zalo_access_token$$||!$zalo_expires_in$$||!$zalo_updated$$||moment().diff(moment($zalo_updated$$),"seconds")>$zalo_expires_in$$-60){$headers_req$$={"Content-Type":"application/x-www-form-urlencoded",secret_key:$zalo_secret_key$$};$data_u$$={refresh_token:$zalo_refresh_token$$,app_id:$zalo_app_id$$,grant_type:"refresh_token"};try{let $rs$$=await axios.post("https://oauth.zaloapp.com/v4/oa/access_token",querystring.stringify($data_u$$),
20
20
  {headers:$headers_req$$});if($rs$$.data.error)return $res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi m\u00e3 OTP. L\u1ed7i: ${$rs$$.data.message}`});let $zalo_token$$=$rs$$.data;$address_receive_otp_app$jscomp$2_id_app$$.zalo_access_token=$zalo_token$$.access_token;$address_receive_otp_app$jscomp$2_id_app$$.zalo_refresh_token=$zalo_token$$.refresh_token;$address_receive_otp_app$jscomp$2_id_app$$.zalo_expires_in=$zalo_token$$.expires_in;$address_receive_otp_app$jscomp$2_id_app$$.zalo_updated=
21
- new Date;await $address_receive_otp_app$jscomp$2_id_app$$.save()}catch($e$$){return $message_message$jscomp$1_otp_code$jscomp$1_url$$=(($e$$.response||{}).data||{}).message,console.error("[local] [send otp via zalo] Can't get access token from zalo",$message_message$jscomp$1_otp_code$jscomp$1_url$$||$e$$),$res$$.status(400).send({error:$message_message$jscomp$1_otp_code$jscomp$1_url$$||$e$$.message||$e$$||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi zalo ${$username$$}`})}}try{const $headers$$=
22
- {"Content-Type":"application/json",access_token:$address_receive_otp_app$jscomp$2_id_app$$.zalo_access_token};$phone$$="84"+$phone$$.toString().substring(1);const $data$$={phone:$phone$$,template_id:$zalo_otp_template_id$$,template_data:{otp:$message_message$jscomp$1_otp_code$jscomp$1_url$$},tracking_id:$optObject$$._id.toString()};let $rs$$=await axios({method:"post",url:"https://business.openapi.zalo.me/message/template",data:$data$$,headers:$headers$$});return $rs$$.data&&$rs$$.data.error?(console.error("[local] [send otp via zalo]",
23
- $rs$$.data,{url:"https://business.openapi.zalo.me/message/template",data:$data$$,headers:$headers$$}),$res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi m\u00e3 OTP t\u1edbi zalo ${$phone$$}. L\u1ed7i: ${$rs$$.data.message}`})):$res$$.send($optObject$$.toObject())}catch($e$$){return $message_message$jscomp$1_otp_code$jscomp$1_url$$=(($e$$.response||{}).data||{}).message,console.error("[local] [send otp via zalo] Can't send message from zalo",$message_message$jscomp$1_otp_code$jscomp$1_url$$||
24
- $e$$),$res$$.status(400).send({error:$message_message$jscomp$1_otp_code$jscomp$1_url$$||$e$$.message||$e$$||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi zalo ${$username$$}`})}}}if(configs.sms&&(configs.sms.send||configs.sms.genUrlSendOTP))if(configs.sms.send)configs.sms.send($phone$$,$message_message$jscomp$1_otp_code$jscomp$1_url$$,$headers_req$$.query.id_app).then($rs$$=>{$rs$$.error_message?$res$$.status(400).send({error:$rs$$.message||$rs$$.error||$rs$$.error_message||
25
- `Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n ${$username$$}`}):$res$$.send($optObject$$.toObject())}).catch($e$$=>{$e$$||($e$$={message:"Kh\u00f4ng th\u1ec3 g\u1eedi m\u00e3 OTP"});console.error("[local] [send otp via sms] Error send sms",$e$$);$res$$.status(400).send({error:$e$$.ErrorMessage||$e$$.message||$e$$.error_message||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n ${$username$$}`})});else if($message_message$jscomp$1_otp_code$jscomp$1_url$$=
26
- configs.sms.genUrlSendOTP($phone$$,$message_message$jscomp$1_otp_code$jscomp$1_url$$,$headers_req$$.query.id_app))try{await axios.get($message_message$jscomp$1_otp_code$jscomp$1_url$$),$res$$.send($optObject$$.toObject())}catch($e$$){console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n ${$username$$}`})}else $res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n ${$username$$}`});
21
+ new Date;await $address_receive_otp_app$jscomp$2_id_app$$.save()}catch($e$$){return $message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$=(($e$$.response||{}).data||{}).message,console.error("[local] [send otp via zalo] Can't get access token from zalo",$message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$||$e$$),$res$$.status(400).send({error:$message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$||$e$$.message||$e$$||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi zalo ${$username$$}`})}}try{const $headers$$=
22
+ {"Content-Type":"application/json",access_token:$address_receive_otp_app$jscomp$2_id_app$$.zalo_access_token};$phone$$="84"+$phone$$.toString().substring(1);const $data$$={phone:$phone$$,template_id:$zalo_otp_template_id$$,template_data:{otp:$message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$},tracking_id:$optObject$$._id.toString()};let $rs$$=await axios({method:"post",url:"https://business.openapi.zalo.me/message/template",data:$data$$,headers:$headers$$});return $rs$$.data&&$rs$$.data.error?
23
+ (console.error("[local] [send otp via zalo]",$rs$$.data,{url:"https://business.openapi.zalo.me/message/template",data:$data$$,headers:$headers$$}),$res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi m\u00e3 OTP t\u1edbi zalo ${$phone$$}. L\u1ed7i: ${$rs$$.data.message}`})):$res$$.send($optObject$$.toObject())}catch($e$$){return $message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$=(($e$$.response||{}).data||{}).message,console.error("[local] [send otp via zalo] Can't send message from zalo",
24
+ $message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$||$e$$),$res$$.status(400).send({error:$message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$||$e$$.message||$e$$||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi zalo ${$username$$}`})}}}if(configs.sms&&(configs.sms.send||configs.sms.genUrlSendOTP))if(configs.sms.send)configs.sms.send($phone$$,$message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$,$headers_req$$.query.id_app).then($rs$$=>{$rs$$.error_message?
25
+ $res$$.status(400).send({error:$rs$$.message||$rs$$.error||$rs$$.error_message||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n ${$username$$}`}):$res$$.send($optObject$$.toObject())}).catch($e$$=>{$e$$||={message:"Kh\u00f4ng th\u1ec3 g\u1eedi m\u00e3 OTP"};console.error("[local] [send otp via sms] Error send sms",$e$$);$res$$.status(400).send({error:$e$$.ErrorMessage||$e$$.message||$e$$.error_message||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n ${$username$$}`})});
26
+ else if($message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$=configs.sms.genUrlSendOTP($phone$$,$message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$,$headers_req$$.query.id_app))try{await axios.get($message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$),$res$$.send($optObject$$.toObject())}catch($e$$){console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n ${$username$$}`})}else $res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n ${$username$$}`});
27
27
  else $res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n ${$username$$}`})}else{let $email_address$$;validator.isEmail($address_receive_otp_app$jscomp$2_id_app$$)&&$address_receive_otp_app$jscomp$2_id_app$$!=$username$$?$email_address$$=$address_receive_otp_app$jscomp$2_id_app$$:validator.isEmail($username$$)?$email_address$$=$username$$:$data_u$$.email2&&validator.isEmail($data_u$$.email2)&&($email_address$$=$data_u$$.email2);
28
- $email_address$$?email.sendHtml({to:{address:$email_address$$},subject:"M\u00e3 x\u00e1c th\u1ef1c",html:`Xin vui l\u00f2ng g\u1eedi qu\u00fd kh\u00e1ch m\u00e3 x\u00e1c th\u1ef1c: ${$message_message$jscomp$1_otp_code$jscomp$1_url$$}. M\u00e3 n\u00e0y s\u1ebd h\u1ebft h\u1ea1n s\u1eed d\u1ee5ng sau 5 ph\u00fat.`},function($error$$){$error$$?(console.error("Error send otp to email",$error$$),$res$$.status(400).send(`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi email ${$username$$}`)):
29
- $res$$.send($optObject$$.toObject())},configs.sender_otp):$res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n ${$username$$}`})}});$app$jscomp$0$$.get("/verify-otp/:id/:otp",$rateLimiter$$,async function($req$$,$res$$){try{const $id$$=$req$$.params.id;if(!global.mongoose.Types.ObjectId.isValid($id$$))return $res$$.status(400).send({error:"ID c\u1ee7a m\u00e3 x\u00e1c th\u1ef1c n\u00e0y kh\u00f4ng h\u1ee3p l\u1ec7",code:4001});const $otp_code$$=
28
+ $email_address$$?email.sendHtml({to:{address:$email_address$$},subject:"M\u00e3 x\u00e1c th\u1ef1c",html:`Xin vui l\u00f2ng g\u1eedi qu\u00fd kh\u00e1ch m\u00e3 x\u00e1c th\u1ef1c: ${$message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$}. M\u00e3 n\u00e0y s\u1ebd h\u1ebft h\u1ea1n s\u1eed d\u1ee5ng sau 5 ph\u00fat.`},function($error$$){$error$$?(console.error("Error send otp to email",$error$$),$res$$.status(400).send(`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi email ${$username$$}`)):
29
+ $res$$.send($optObject$$.toObject())},configs.sender_otp):$res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n ${$username$$}`})}});$app$$.get("/verify-otp/:id/:otp",$rateLimiter$$,async function($req$$,$res$$){try{const $id$$=$req$$.params.id;if(!global.mongoose.Types.ObjectId.isValid($id$$))return $res$$.status(400).send({error:"ID c\u1ee7a m\u00e3 x\u00e1c th\u1ef1c n\u00e0y kh\u00f4ng h\u1ee3p l\u1ec7",code:4001});const $otp_code$$=
30
30
  $req$$.params.otp,$otp$$=await OTP.findById($id$$);if(!$otp$$)return $res$$.status(400).send({error:"M\u00e3 x\u00e1c th\u1ef1c n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i",code:4001});$otp$$.tried_number=($otp$$.tried_number||0)+1;await $otp$$.save();if($otp$$.otp!=$otp_code$$||$otp$$.verified||$otp$$.tried_number>(configs.MAX_TRY_OTP||3)||$otp$$.expire_time.getTime()<(new Date).getTime())return $res$$.status(400).send({error:"M\u00e3 x\u00e1c th\u1ef1c n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i ho\u1eb7c \u0111\u00e3 h\u1ebft hi\u1ec7u l\u1ef1c",
31
31
  code:4001});await OTP.findOneAndUpdate({_id:$id$$},{verified:!0});let $user$$=await User.findOne({email:$otp$$.phone});if(!$user$$)return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n kh\u00f4ng t\u1ed3n t\u1ea1i",code:4001});if(!$user$$.local||!$user$$.local.active){$user$$.local=$user$$.local||{};$user$$.local.active=!0;try{await $user$$.save(),redisCache.set("user",$user$$.toObject(),function($e$$){$e$$?console.error($e$$):console.log("cache user infomation to redis")})}catch($e$$){return console.log("error verify otp, create user",
32
- $e$$),$res$$.status(500).send($e$$)}}const $accessToken$$=generateToken($user$$);(new Token({email:$user$$.email,session_created:($req$$.cookies||{}).uid,token:$accessToken$$,agent:$req$$.headers["user-agent"],ip:"",once:1==$req$$.query.once||"true"==$req$$.query.once||"1"===$req$$.query.once?!0:!1})).save(function($e$$,$rs$$){return $e$$?$res$$.status(500).send($e$$):$res$$.send({token:$accessToken$$,once:$rs$$.once})})}catch($e$$){console.error("error verify otp",$e$$),$res$$.status(400).send($e$$.message)}});
33
- $app$jscomp$0$$.post("/auth/sign",$rateLimiter$$,($req$$,$res$$,$next$$)=>{$passport$$.authenticate("basic",{session:!1},function($err$$,$user$$){if($err$$||!$user$$)return $res$$.status(401).send({message:$err$$||"Unauthorized"});$req$$.user=$user$$;$next$$()})($req$$,$res$$,$next$$)},async($req$jscomp$3_user$$,$res$$)=>{let $data$$=$req$jscomp$3_user$$.body;$req$jscomp$3_user$$=$req$jscomp$3_user$$.user;if(!$data$$)return $res$$.status(400).send("Not have data to sign");if(!$data$$.id_app)return $res$$.status(400).send("Data miss id_app property");
34
- try{let $signature$$=await Wallet.sign($data$$.id_app,$req$jscomp$3_user$$.email,$data$$);$res$$.send($signature$$)}catch($e$$){return $res$$.status(400).send($e$$.message||$e$$)}});$app$jscomp$0$$.get("/auth/local",$rateLimiter$$,function($req$$,$res$$,$next$$){let $ip$$=($req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress).split(".").join("").split(":").join("");var $authorization_password$$=$req$$.headers.authorization;if(!$authorization_password$$)return $res$$.status(400).send({message:"Authorization is required"});
35
- $authorization_password$$=Buffer.from($authorization_password$$.replace("Basic ",""),"base64").toString("utf-8");$authorization_password$$=$authorization_password$$.split(":");if(1<$authorization_password$$.length){let $username$$=$authorization_password$$[0].trim().toLowerCase();$authorization_password$$=$authorization_password$$[1].trim();$req$$.query.id_app&&0>$username$$.indexOf("@app=")&&($username$$=`${$username$$}@app=${$req$$.query.id_app}`,$req$$.headers.authorization=`Basic ${Buffer.from($username$$+
32
+ $e$$),$res$$.status(500).send($e$$)}}const $accessToken$$=generateToken($user$$);(new Token({email:$user$$.email,session_created:($req$$.cookies||{}).uid,token:$accessToken$$,agent:$req$$.headers["user-agent"],ip:"",once:$req$$.query.once==1||$req$$.query.once=="true"||$req$$.query.once==="1"?!0:!1})).save(function($e$$,$rs$$){return $e$$?$res$$.status(500).send($e$$):$res$$.send({token:$accessToken$$,once:$rs$$.once})})}catch($e$$){console.error("error verify otp",$e$$),$res$$.status(400).send($e$$.message)}});
33
+ $app$$.post("/auth/sign",$rateLimiter$$,($req$$,$res$$,$next$$)=>{$passport$$.authenticate("basic",{session:!1},function($err$$,$user$$){if($err$$||!$user$$)return $res$$.status(401).send({message:$err$$||"Unauthorized"});$req$$.user=$user$$;$next$$()})($req$$,$res$$,$next$$)},async($req$jscomp$3_user$$,$res$$)=>{let $data$$=$req$jscomp$3_user$$.body;$req$jscomp$3_user$$=$req$jscomp$3_user$$.user;if(!$data$$)return $res$$.status(400).send("Not have data to sign");if(!$data$$.id_app)return $res$$.status(400).send("Data miss id_app property");
34
+ try{let $signature$$=await Wallet.sign($data$$.id_app,$req$jscomp$3_user$$.email,$data$$);$res$$.send($signature$$)}catch($e$$){return $res$$.status(400).send($e$$.message||$e$$)}});$app$$.get("/auth/local",$rateLimiter$$,function($req$$,$res$$,$next$$){let $ip$$=($req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress).split(".").join("").split(":").join("");var $authorization_password$$=$req$$.headers.authorization;if(!$authorization_password$$)return $res$$.status(400).send({message:"Authorization is required"});
35
+ $authorization_password$$=Buffer.from($authorization_password$$.replace("Basic ",""),"base64").toString("utf-8");$authorization_password$$=$authorization_password$$.split(":");if($authorization_password$$.length>1){let $username$$=$authorization_password$$[0].trim().toLowerCase();$authorization_password$$=$authorization_password$$[1].trim();$req$$.query.id_app&&$username$$.indexOf("@app=")<0&&($username$$=`${$username$$}@app=${$req$$.query.id_app}`,$req$$.headers.authorization=`Basic ${Buffer.from($username$$+
36
36
  ":"+$authorization_password$$).toString("base64")}`);let $t_session$$="times_login_"+$ip$$+"_"+$username$$.toLowerCase(),$d_session$$="datetime_login_"+$ip$$+"_"+$username$$.toLowerCase();$req$$.t_session=$t_session$$;$req$$.d_session=$d_session$$;let $now$$=new Date,$d$$=$now$$,$times_try$$=1;if($req$$.headers.cookie&&$req$$.session){$req$$=$req$$.session;$req$$[$t_session$$]?($times_try$$=$req$$[$t_session$$]+1,$req$$[$t_session$$]=$times_try$$):($req$$[$t_session$$]=$times_try$$,$req$$[$d_session$$]=
37
37
  $now$$);$req$$[$d_session$$]?$d$$=new Date($req$$[$d_session$$]):$req$$[$d_session$$]=$now$$;$req$$=$now$$.getTime()-$d$$.getTime();if($req$$<total_time_wait_login&&$times_try$$>total_time_try_login)return $res$$.status(400).send({message:"B\u1ea1n \u0111\u0103ng nh\u1eadp sai "+total_time_try_login+" l\u1ea7n li\u00ean ti\u1ebfp. H\u00e3y th\u1eed l\u1ea1i sau "+Math.roundBy((total_time_wait_login-$req$$)/6E4,2)+" ph\u00fat"});$next$$()}else global.clientRedis.get($t_session$$,function($err$$,$reply$$){$reply$$?
38
38
  ($times_try$$=Number($reply$$)+1,global.clientRedis.set($t_session$$,$times_try$$)):(global.clientRedis.set($t_session$$,$times_try$$),global.clientRedis.set($d_session$$,$now$$));global.clientRedis.get($d_session$$,function($err$jscomp$3_time_wait$$,$reply$$){$reply$$?$d$$=new Date($reply$$):global.clientRedis.set($d_session$$,$now$$);$err$jscomp$3_time_wait$$=$now$$.getTime()-$d$$.getTime();if($err$jscomp$3_time_wait$$<total_time_wait_login&&$times_try$$>total_time_try_login)return $res$$.status(400).send({message:"B\u1ea1n \u0111\u0103ng nh\u1eadp sai "+
39
39
  total_time_try_login+" l\u1ea7n li\u00ean ti\u1ebfp. H\u00e3y th\u1eed l\u1ea1i sau "+Math.roundBy((total_time_wait_login-$err$jscomp$3_time_wait$$)/6E4,2)+" ph\u00fat"});$next$$()})})}},function($req$$,$res$$,$next$$){$passport$$.authenticate("basic",{session:!1},async function($err$jscomp$4_p$$,$user$$){if($err$jscomp$4_p$$||!$user$$)return $res$$.status(401).send({message:$err$jscomp$4_p$$||"Unauthorized"});if(configs.require_verify&&!$user$$.local.active)return $res$$.status(401).send({require_verify:!0});
40
- if($req$$.query.id_app&&($err$jscomp$4_p$$=await global.getModel("participant").findOne({id_app:$req$$.query.id_app,email:$user$$.email}).lean())&&!$err$jscomp$4_p$$.active&&!$err$jscomp$4_p$$.admin)return $res$$.status(401).send({message:"T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111ang ch\u1edd \u0111\u01b0\u1ee3c x\u00e9t duy\u1ec7t",active:!1});$req$$.user=$user$$;$next$$()})($req$$,$res$$,$next$$)},async($req$$,$res$$)=>{let $agent$$=$req$$.headers["user-agent"];$req$$.headers.cookie?($session$jscomp$1_user$$=
41
- $req$$.session,$session$jscomp$1_user$$[$req$$.t_session]=0,$session$jscomp$1_user$$[$req$$.d_session]=""):(global.clientRedis.set($req$$.t_session,0),global.clientRedis.set($req$$.d_session,""));log.create({id_app:"LOGIN",id_func:"LOGIN",action:"LOCALLOGIN"},$req$$.user.email,$req$$.header("user-agent"),$req$$);var $session$jscomp$1_user$$=$req$$.user;if($req$$.query.id_app&&global.mongoose.Types.ObjectId.isValid($req$$.query.id_app)){const $id_app$$=$req$$.query.id_app;let $group_id$$=$req$$.query.group_id&&
40
+ if($req$$.query.id_app&&($err$jscomp$4_p$$=await global.getModel("participant").findOne({id_app:$req$$.query.id_app,email:$user$$.email}).lean())&&!$err$jscomp$4_p$$.active&&!$err$jscomp$4_p$$.admin)return $res$$.status(401).send({message:"T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111ang ch\u1edd \u0111\u01b0\u1ee3c x\u00e9t duy\u1ec7t",active:!1});$req$$.user=$user$$;$next$$()})($req$$,$res$$,$next$$)},async($req$$,$res$$)=>{let $agent$$=$req$$.headers["user-agent"];if($req$$.headers.cookie){var $session$jscomp$1_user$$=
41
+ $req$$.session;$session$jscomp$1_user$$[$req$$.t_session]=0;$session$jscomp$1_user$$[$req$$.d_session]=""}else global.clientRedis.set($req$$.t_session,0),global.clientRedis.set($req$$.d_session,"");log.create({id_app:"LOGIN",id_func:"LOGIN",action:"LOCALLOGIN"},$req$$.user.email,$req$$.header("user-agent"),$req$$);$session$jscomp$1_user$$=$req$$.user;if($req$$.query.id_app&&global.mongoose.Types.ObjectId.isValid($req$$.query.id_app)){const $id_app$$=$req$$.query.id_app;let $group_id$$=$req$$.query.group_id&&
42
42
  global.mongoose.Types.ObjectId.isValid($req$$.query.group_id)?$req$$.query.group_id:void 0;const $app$$=await App.findById($id_app$$);var $active_group_query_group$$={id_app:$id_app$$,$or:[{is_customer_group:!0},{is_partner_group:!0},{is_agent_group:!0},{is_pttt_group:!0}]};$group_id$$?$active_group_query_group$$._id=$group_id$$:$active_group_query_group$$.default_group=!0;$active_group_query_group$$=await UserGroup.findOne($active_group_query_group$$).lean();if($app$$&&$active_group_query_group$$){$group_id$$=
43
- $active_group_query_group$$._id.toString();$active_group_query_group$$=$active_group_query_group$$.not_need_active;try{if(($p$jscomp$3_session_created$$=await Participant.asyncCreateParticipant({id_app:$id_app$$,email:$session$jscomp$1_user$$.email,name:$session$jscomp$1_user$$.name,group_id:$group_id$$,active:$active_group_query_group$$}))&&!$p$jscomp$3_session_created$$.active)return $res$$.status(401).send({message:"T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111ang ch\u1edd \u0111\u01b0\u1ee3c x\u00e9t duy\u1ec7t",
43
+ $active_group_query_group$$._id.toString();$active_group_query_group$$=$active_group_query_group$$.not_need_active;try{var $p$jscomp$3_session_created$$=await Participant.asyncCreateParticipant({id_app:$id_app$$,email:$session$jscomp$1_user$$.email,name:$session$jscomp$1_user$$.name,group_id:$group_id$$,active:$active_group_query_group$$});if($p$jscomp$3_session_created$$&&!$p$jscomp$3_session_created$$.active)return $res$$.status(401).send({message:"T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111ang ch\u1edd \u0111\u01b0\u1ee3c x\u00e9t duy\u1ec7t",
44
44
  active:!1});let $cust$$={ten_kh:$session$jscomp$1_user$$.name||$session$jscomp$1_user$$.email,email:$session$jscomp$1_user$$.email,id_app:$id_app$$,user_created:$session$jscomp$1_user$$.email,user_updated:$session$jscomp$1_user$$.email,kh_yn:!0,of_user:$session$jscomp$1_user$$.email};utils.isMobilePhone($session$jscomp$1_user$$.email,["vi-VN"])&&($cust$$.dien_thoai=$session$jscomp$1_user$$.email);try{await Customer.asyncCreateCustomer($cust$$)}catch($e$$){console.error("Auto create new customer with error:",
45
- $e$$.message)}}catch($e$$){return console.error("can't add user",$session$jscomp$1_user$$.email,"to company",$app$$.name),$res$$.status(500).send($e$$)}}}const $accessToken$$=generateToken($session$jscomp$1_user$$);var $p$jscomp$3_session_created$$=($req$$.cookies||{}).uid;$p$jscomp$3_session_created$$&&User.updateOne({email:$session$jscomp$1_user$$.email,session_created:null},{session_created:$p$jscomp$3_session_created$$});(new Token({email:$session$jscomp$1_user$$.email,session_created:$p$jscomp$3_session_created$$,
46
- id_apps:$session$jscomp$1_user$$.token_id_apps,only_id_app:$session$jscomp$1_user$$.token_id_app,token:$accessToken$$,agent:$agent$$,ip:"",once:1==$req$$.query.once||"true"==$req$$.query.once||"1"===$req$$.query.once?!0:!1})).save(function($e$$,$rs$$){if($e$$)return $res$$.status(500).send($e$$);$res$$.send({token:$accessToken$$,once:$rs$$.once})})});$app$jscomp$0$$.get("/check-user/:email",$rateLimiter$$,function($req$$,$res$$){const $email$$=$req$$.params.email;User.findOne({$or:[{email:$email$$},
47
- {"local.phone":$email$$}]},{email:1,name:1,picture:1}).lean().then(function($user$$){if(!$user$$)return $res$$.status(400).send(`T\u00e0i kho\u1ea3n ${$email$$} kh\u00f4ng t\u1ed3n t\u1ea1i`);$res$$.send($user$$)}).catch($e$$=>{$res$$.status(400).send($e$$)})});$app$jscomp$0$$.post("/signup",$rateLimiter$$,async($req$$,$res$$)=>{let $body$$=$req$$.body;$body$$.json&&($body$$=JSON.parse($body$$.json));if(!$body$$)return $res$$.status(400).send({error:"Kh\u00f4ng c\u00f3 n\u1ed9i dung"});if($body$$.id_app&&
48
- !global.mongoose.Types.ObjectId.isValid($body$$.id_app))return $res$$.status(400).send("id_app kh\u00f4ng h\u1ee3p l\u1ec7");if(configs.GOOGLE_RECAPTCHA_SECRET_KEY){var $app$$=$body$$["g-recaptcha-response"]||$req$$.query["g-recaptcha-response"];if(!$app$$)return $res$$.status(400).send("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u m\u1ed9t google recaptcha token");try{await permission.verifyReCaptcha($app$$)}catch($e$$){return $res$$.status(400).send($e$$.message||$e$$.error||$e$$)}}let $session_created$$=
49
- ($req$$.cookies||{}).uid;if($session_created$$&&$body$$.id_app){$app$$=await App.findById($body$$.id_app);if(!$app$$)return $res$$.status(400).send({error:"C\u00f4ng ty kh\u00f4ng t\u1ed3n t\u1ea1i"});if($app$$.options&&$app$$.options.one_account_per_device&&await Participant.findOne({session_created:$session_created$$,id_app:$body$$.id_app}).lean())return $res$$.status(400).send({error:"M\u1ed7i thi\u1ebft b\u1ecb ch\u1ec9 \u0111\u01b0\u1ee3c t\u1ea1o m\u1ed9t t\u00e0i kho\u1ea3n"})}if(!$body$$.email)return $res$$.status(400).send({error:"B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n"});
50
- $body$$.email=$body$$.email.trim().toLowerCase();if(!validator.isEmail($body$$.email)&&!utils.isMobilePhone($body$$.email,["vi-VN"]))return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n \u0111\u0103ng nh\u1eadp ph\u1ea3i l\u00e0 1 \u0111\u1ecba ch\u1ec9 email ho\u1eb7c 1 s\u1ed1 \u0111i\u1ec7n tho\u1ea1i di \u0111\u1ed9ng"});if(!$body$$.name)return $res$$.status(400).send({error:"H\u1ecd v\u00e0 t\u00ean ch\u01b0a nh\u1eadp"});if($body$$.introduce_code&&$body$$.id_app&&!await global.getModel("introducecode").findOne({id_app:$body$$.id_app,
51
- status:!0,introduce_code:$body$$.introduce_code}).lean())return $res$$.status(400).send({error:"M\u00e3 gi\u1edbi thi\u1ec7u kh\u00f4ng h\u1ee3p l\u1ec7"});User.findOne({$or:[{email:$body$$.email},{"local.phone":$body$$.email}]},async function($error$jscomp$1$$,$result$$){if($error$jscomp$1$$)return $res$$.status(400).send($error$jscomp$1$$);if($result$$)if(!$result$$.local||configs.require_verify&&!$result$$.local.active||$result$$.local.email!=$body$$.email)$result$$.local||($result$$.local={});
52
- else if($body$$.id_app)try{if(await global.getModel("participant").findOne({id_app:$body$$.id_app,email:$body$$.email}))return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n n\u00e0y \u0111\u00e3 t\u1ed3n t\u1ea1i"});await addUserToApp($result$$,$body$$,$session_created$$);return $res$$.send("T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd th\u00e0nh c\u00f4ng")}catch($e$$){return await global.getModel("participant").deleteOne({id_app:$body$$.id_app,
53
- email:$body$$.email}),$res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$})}else return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd"});else $result$$=new User,$result$$.email=$body$$.email,$result$$.local={};$result$$.local.email=$body$$.email;$result$$.local.name=$body$$.name;$result$$.local.active=!configs.require_verify;$result$$.partner=$body$$.partner;$result$$.session_created=$session_created$$;$body$$.email2&&
54
- validator.isEmail($body$$.email2)&&($result$$.email2=$body$$.email2);$result$$.name=$result$$.local.name;$body$$.picture?$result$$.local.picture=$body$$.picture:$result$$.local.picture||($result$$.local.picture="/images/avatar.jpg");let $password$$;if($body$$.password){if($body$$.rePassword!==$body$$.password)return $res$$.status(400).send({error:"M\u1eadt kh\u1ea9u x\u00e1c nh\u1eadn kh\u00f4ng ch\u00ednh x\u00e1c"});if(!User.teststrengthPassword($body$$.password))return $res$$.status(400).send({error:"M\u1eadt kh\u1ea9u ph\u1ea3i c\u00f3 \u00edt nh\u1ea5t 6 k\u00fd t\u1ef1 v\u00e0 bao g\u1ed3m \u00edt nh\u1ea5t m\u1ed9t ch\u1eef s\u1ed1, m\u1ed9t ch\u1eef hoa v\u00e0 m\u1ed9t ch\u1eef th\u01b0\u1eddng"});
55
- $password$$=$body$$.password}else $password$$=_crypto.createHash("md5").update($result$$.email+(new Date).toISOString()).digest("hex");$result$$.local.password=$result$$.generateHash($result$$.email+$password$$);$result$$.save(async function($app$jscomp$5_error$$,$newUser$$){if($app$jscomp$5_error$$)return $res$$.status(400).send({error:"Kh\u00f4ng th\u1ec3 \u0111\u0103ng k\u00fd"});log.create({id_app:"SIGNUP",id_func:"SIGNUP",action:"SIGNUP"},$result$$.email,$req$$.header("user-agent"),$req$$);if($body$$.cty_name){$app$jscomp$5_error$$=
56
- new App;$app$jscomp$5_error$$.user_created=$result$$.email;$app$jscomp$5_error$$.user_updated=$result$$.email;$app$jscomp$5_error$$.name=$body$$.cty_name;var $d$jscomp$1_now$$=new Date;$app$jscomp$5_error$$.ngay_dn=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$app$jscomp$5_error$$.ngay_ks=new Date($d$jscomp$1_now$$.getFullYear()-1,12,0);$app$jscomp$5_error$$.nam_bd=$d$jscomp$1_now$$.getFullYear();$app$jscomp$5_error$$.ngay_ky1=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$d$jscomp$1_now$$=new Date;
57
- $d$jscomp$1_now$$.setMonth($d$jscomp$1_now$$.getMonth()+3);$app$jscomp$5_error$$.expire_date=new Date($d$jscomp$1_now$$);$app$jscomp$5_error$$.save(function($error$jscomp$0$$,$obj$$){if($error$jscomp$0$$)return console.log("Khong tao duoc new app: "+$error$jscomp$0$$);require("../libs/initDatabase").init($obj$$._id,function($error$$){$error$$&&console.log("Can't init database \n"+$error$$)})})}try{await addUserToApp($newUser$$,$body$$,$session_created$$)}catch($e$$){return await global.getModel("participant").deleteOne({id_app:$body$$.id_app,
58
- email:$body$$.email}),await User.deleteOne({email:$body$$.email}),$res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$})}let $accessToken$$;if($newUser$$.local.active)try{$accessToken$$=generateToken($newUser$$),await (new Token({email:$newUser$$.email,session_created:($req$$.cookies||{}).uid,token:$accessToken$$,agent:$req$$.headers["user-agent"],ip:"",once:1==$req$$.query.once||"true"==$req$$.query.once||"1"===$req$$.query.once?!0:!1})).save()}catch($e$$){console.error("can't gen new token for new user:"+
59
- $newUser$$.email,$e$$)}validator.isEmail($body$$.email)&&!$body$$.password?(loadTemplate("thong tin dang nhap.html",{email:$result$$.email,password:$password$$,receiver_name:$body$$.name},function($error$jscomp$0$$,$html$$){if($error$jscomp$0$$)return console.log($error$jscomp$0$$);email.sendHtml({to:{name:$result$$.name,address:$result$$.email},subject:"Th\u00f4ng tin t\u00e0i kho\u1ea3n",html:$html$$},function($error$$){$error$$&&console.error("Khong the gui email thon tin tai khoan cho nguoi dung\n"+
60
- $error$$)})}),$res$$.send({msg:"T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o. Ki\u1ec3m tra email \u0111\u1ec3 l\u1ea5y th\u00f4ng tin \u0111\u0103ng nh\u1eadp",token:$accessToken$$,active:$newUser$$.local.active})):$res$$.send({msg:"T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o",token:$accessToken$$,active:$newUser$$.local.active})})})});$app$jscomp$0$$.get("/resetpassword",$rateLimiter$$,async($req$$,$res$$)=>{if(configs.GOOGLE_RECAPTCHA_SECRET_KEY)try{await permission.verifyReCaptcha($req$$.query["g-recaptcha-response"])}catch($e$$){return $res$$.status(400).send($e$$.message||
61
- $e$$.error||$e$$)}let $address$$=$req$$.query.email;if(!$address$$)return $res$$.status(400).send("Y\u00eau c\u1ea7u m\u1ed9t \u0111\u1ecba ch\u1ec9 email ho\u1eb7c s\u1ed1 \u0111i\u1ec7n tho\u1ea1i");$address$$=$address$$.toLowerCase();User.findOne({$or:[{"local.email":$address$$},{email:$address$$},{email2:$address$$}]},function($error$jscomp$2$$,$result$$){if($error$jscomp$2$$)return $res$$.status(400).send($error$jscomp$2$$);if(!$result$$)return $res$$.status(400).send(`T\u00e0i kho\u1ea3n ${$address$$} ch\u01b0a \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd`);
62
- let $newpassword$$=_crypto.createHash("md5").update((new Date).toISOString()).digest("hex");$result$$.local.rspassword=$result$$.generateHash($result$$.email+$newpassword$$);$result$$.save(function($error$jscomp$1$$){if($error$jscomp$1$$)return $res$$.status(400).send($error$jscomp$1$$);loadTemplate("reset mat khau.html",{receiver_name:$result$$.name,email:$result$$.email,password:$newpassword$$},function($error$jscomp$0$$,$html$$){if($error$jscomp$0$$)return $res$$.status(400).send($error$jscomp$0$$);
63
- $result$$.email&&validator.isEmail($result$$.email)&&email.sendHtml({to:{name:$result$$.name,address:$result$$.email},subject:"\u0110\u1ed5i m\u1eadt kh\u1ea9u",html:$html$$},function($error$$){$error$$?console.error("Khong the gui thong tin tai khoan cho nguoi su dung\n"+$error$$):console.log("send new password to",$result$$.email)});$result$$.email2&&validator.isEmail($result$$.email2)&&email.sendHtml({to:{name:$result$$.name,address:$result$$.email2},subject:"\u0110\u1ed5i m\u1eadt kh\u1ea9u",
64
- html:$html$$},function($error$$){$error$$?console.error("Khong the gui thong tin tai khoan cho nguoi su dung\n"+$error$$):console.log("send new password to",$result$$.email)});log.create({id_app:"RESETPASSWORD",id_func:"RESETPASSWORD",action:"RESETPASSWORD"},$result$$.email,$req$$.header("user-agent"),$req$$);$res$$.send("M\u1eadt kh\u1ea9u c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u1ed5i th\u00e0nh c\u00f4ng. Ki\u1ec3m tra email \u0111\u1ec3 l\u1ea5y m\u1eadt kh\u1ea9u m\u1edbi, sau \u0111\u00f3 b\u1ea1n n\u00ean \u0111\u1ed5i m\u1eadt kh\u1ea9u n\u00e0y")})})})})};
45
+ $e$$.message)}}catch($e$$){return console.error("can't add user",$session$jscomp$1_user$$.email,"to company",$app$$.name),$res$$.status(500).send($e$$)}}}const $accessToken$$=generateToken($session$jscomp$1_user$$);($p$jscomp$3_session_created$$=($req$$.cookies||{}).uid)&&User.updateOne({email:$session$jscomp$1_user$$.email,session_created:null},{session_created:$p$jscomp$3_session_created$$});(new Token({email:$session$jscomp$1_user$$.email,session_created:$p$jscomp$3_session_created$$,id_apps:$session$jscomp$1_user$$.token_id_apps,
46
+ only_id_app:$session$jscomp$1_user$$.token_id_app,token:$accessToken$$,agent:$agent$$,ip:"",once:$req$$.query.once==1||$req$$.query.once=="true"||$req$$.query.once==="1"?!0:!1})).save(function($e$$,$rs$$){if($e$$)return $res$$.status(500).send($e$$);$res$$.send({token:$accessToken$$,once:$rs$$.once})})});$app$$.get("/check-user/:email",$rateLimiter$$,function($req$$,$res$$){const $email$$=$req$$.params.email;User.findOne({$or:[{email:$email$$},{"local.phone":$email$$}]},{email:1,name:1,picture:1}).lean().then(function($user$$){if(!$user$$)return $res$$.status(400).send(`T\u00e0i kho\u1ea3n ${$email$$} kh\u00f4ng t\u1ed3n t\u1ea1i`);
47
+ $res$$.send($user$$)}).catch($e$$=>{$res$$.status(400).send($e$$)})});$app$$.post("/signup",$rateLimiter$$,async($req$$,$res$$)=>{let $body$$=$req$$.body;$body$$.json&&($body$$=JSON.parse($body$$.json));if(!$body$$)return $res$$.status(400).send({error:"Kh\u00f4ng c\u00f3 n\u1ed9i dung"});if($body$$.id_app&&!global.mongoose.Types.ObjectId.isValid($body$$.id_app))return $res$$.status(400).send("id_app kh\u00f4ng h\u1ee3p l\u1ec7");if(configs.GOOGLE_RECAPTCHA_SECRET_KEY){var $app$$=$body$$["g-recaptcha-response"]||
48
+ $req$$.query["g-recaptcha-response"];if(!$app$$)return $res$$.status(400).send("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u m\u1ed9t google recaptcha token");try{await permission.verifyReCaptcha($app$$)}catch($e$$){return $res$$.status(400).send($e$$.message||$e$$.error||$e$$)}}let $session_created$$=($req$$.cookies||{}).uid;if($session_created$$&&$body$$.id_app){$app$$=await App.findById($body$$.id_app);if(!$app$$)return $res$$.status(400).send({error:"C\u00f4ng ty kh\u00f4ng t\u1ed3n t\u1ea1i"});
49
+ if($app$$.options&&$app$$.options.one_account_per_device&&await Participant.findOne({session_created:$session_created$$,id_app:$body$$.id_app}).lean())return $res$$.status(400).send({error:"M\u1ed7i thi\u1ebft b\u1ecb ch\u1ec9 \u0111\u01b0\u1ee3c t\u1ea1o m\u1ed9t t\u00e0i kho\u1ea3n"})}if(!$body$$.email)return $res$$.status(400).send({error:"B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n"});$body$$.email=$body$$.email.trim().toLowerCase();if(!validator.isEmail($body$$.email)&&!utils.isMobilePhone($body$$.email,
50
+ ["vi-VN"]))return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n \u0111\u0103ng nh\u1eadp ph\u1ea3i l\u00e0 1 \u0111\u1ecba ch\u1ec9 email ho\u1eb7c 1 s\u1ed1 \u0111i\u1ec7n tho\u1ea1i di \u0111\u1ed9ng"});if(!$body$$.name)return $res$$.status(400).send({error:"H\u1ecd v\u00e0 t\u00ean ch\u01b0a nh\u1eadp"});if($body$$.introduce_code&&$body$$.id_app&&!await global.getModel("introducecode").findOne({id_app:$body$$.id_app,status:!0,introduce_code:$body$$.introduce_code}).lean())return $res$$.status(400).send({error:"M\u00e3 gi\u1edbi thi\u1ec7u kh\u00f4ng h\u1ee3p l\u1ec7"});
51
+ User.findOne({$or:[{email:$body$$.email},{"local.phone":$body$$.email}]},async function($error$$,$result$$){if($error$$)return $res$$.status(400).send($error$$);if($result$$)if(!$result$$.local||configs.require_verify&&!$result$$.local.active||$result$$.local.email!=$body$$.email)$result$$.local||($result$$.local={});else if($body$$.id_app)try{if(await global.getModel("participant").findOne({id_app:$body$$.id_app,email:$body$$.email}))return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n n\u00e0y \u0111\u00e3 t\u1ed3n t\u1ea1i"});
52
+ await addUserToApp($result$$,$body$$,$session_created$$);return $res$$.send("T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd th\u00e0nh c\u00f4ng")}catch($e$$){return await global.getModel("participant").deleteOne({id_app:$body$$.id_app,email:$body$$.email}),$res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$})}else return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd"});
53
+ else $result$$=new User,$result$$.email=$body$$.email,$result$$.local={};$result$$.local.email=$body$$.email;$result$$.local.name=$body$$.name;$result$$.local.active=!configs.require_verify;$result$$.partner=$body$$.partner;$result$$.session_created=$session_created$$;$body$$.email2&&validator.isEmail($body$$.email2)&&($result$$.email2=$body$$.email2);$result$$.name=$result$$.local.name;$body$$.picture?$result$$.local.picture=$body$$.picture:$result$$.local.picture||($result$$.local.picture="/images/avatar.jpg");
54
+ let $password$$;if($body$$.password){if($body$$.rePassword!==$body$$.password)return $res$$.status(400).send({error:"M\u1eadt kh\u1ea9u x\u00e1c nh\u1eadn kh\u00f4ng ch\u00ednh x\u00e1c"});if(!User.teststrengthPassword($body$$.password))return $res$$.status(400).send({error:"M\u1eadt kh\u1ea9u ph\u1ea3i c\u00f3 \u00edt nh\u1ea5t 6 k\u00fd t\u1ef1 v\u00e0 bao g\u1ed3m \u00edt nh\u1ea5t m\u1ed9t ch\u1eef s\u1ed1, m\u1ed9t ch\u1eef hoa v\u00e0 m\u1ed9t ch\u1eef th\u01b0\u1eddng"});$password$$=$body$$.password}else $password$$=
55
+ _crypto.createHash("md5").update($result$$.email+(new Date).toISOString()).digest("hex");$result$$.local.password=$result$$.generateHash($result$$.email+$password$$);$result$$.save(async function($app$jscomp$5_error$$,$newUser$$){if($app$jscomp$5_error$$)return $res$$.status(400).send({error:"Kh\u00f4ng th\u1ec3 \u0111\u0103ng k\u00fd"});log.create({id_app:"SIGNUP",id_func:"SIGNUP",action:"SIGNUP"},$result$$.email,$req$$.header("user-agent"),$req$$);if($body$$.cty_name){$app$jscomp$5_error$$=new App;
56
+ $app$jscomp$5_error$$.user_created=$result$$.email;$app$jscomp$5_error$$.user_updated=$result$$.email;$app$jscomp$5_error$$.name=$body$$.cty_name;var $d$jscomp$1_now$$=new Date;$app$jscomp$5_error$$.ngay_dn=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$app$jscomp$5_error$$.ngay_ks=new Date($d$jscomp$1_now$$.getFullYear()-1,12,0);$app$jscomp$5_error$$.nam_bd=$d$jscomp$1_now$$.getFullYear();$app$jscomp$5_error$$.ngay_ky1=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$d$jscomp$1_now$$=new Date;$d$jscomp$1_now$$.setMonth($d$jscomp$1_now$$.getMonth()+
57
+ 3);$app$jscomp$5_error$$.expire_date=new Date($d$jscomp$1_now$$);$app$jscomp$5_error$$.save(function($error$$,$obj$$){if($error$$)return console.log("Khong tao duoc new app: "+$error$$);require("../libs/initDatabase").init($obj$$._id,function($error$$){$error$$&&console.log("Can't init database \n"+$error$$)})})}try{await addUserToApp($newUser$$,$body$$,$session_created$$)}catch($e$$){return await global.getModel("participant").deleteOne({id_app:$body$$.id_app,email:$body$$.email}),await User.deleteOne({email:$body$$.email}),
58
+ $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$})}let $accessToken$$;if($newUser$$.local.active)try{$accessToken$$=generateToken($newUser$$),await (new Token({email:$newUser$$.email,session_created:($req$$.cookies||{}).uid,token:$accessToken$$,agent:$req$$.headers["user-agent"],ip:"",once:$req$$.query.once==1||$req$$.query.once=="true"||$req$$.query.once==="1"?!0:!1})).save()}catch($e$$){console.error("can't gen new token for new user:"+$newUser$$.email,$e$$)}validator.isEmail($body$$.email)&&
59
+ !$body$$.password?(loadTemplate("thong tin dang nhap.html",{email:$result$$.email,password:$password$$,receiver_name:$body$$.name},function($error$$,$html$$){if($error$$)return console.log($error$$);email.sendHtml({to:{name:$result$$.name,address:$result$$.email},subject:"Th\u00f4ng tin t\u00e0i kho\u1ea3n",html:$html$$},function($error$$){$error$$&&console.error("Khong the gui email thon tin tai khoan cho nguoi dung\n"+$error$$)})}),$res$$.send({msg:"T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o. Ki\u1ec3m tra email \u0111\u1ec3 l\u1ea5y th\u00f4ng tin \u0111\u0103ng nh\u1eadp",
60
+ token:$accessToken$$,active:$newUser$$.local.active})):$res$$.send({msg:"T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o",token:$accessToken$$,active:$newUser$$.local.active})})})});$app$$.get("/resetpassword",$rateLimiter$$,async($req$$,$res$$)=>{if(configs.GOOGLE_RECAPTCHA_SECRET_KEY)try{await permission.verifyReCaptcha($req$$.query["g-recaptcha-response"])}catch($e$$){return $res$$.status(400).send($e$$.message||$e$$.error||$e$$)}let $address$$=$req$$.query.email;
61
+ if(!$address$$)return $res$$.status(400).send("Y\u00eau c\u1ea7u m\u1ed9t \u0111\u1ecba ch\u1ec9 email ho\u1eb7c s\u1ed1 \u0111i\u1ec7n tho\u1ea1i");$address$$=$address$$.toLowerCase();User.findOne({$or:[{"local.email":$address$$},{email:$address$$},{email2:$address$$}]},function($error$$,$result$$){if($error$$)return $res$$.status(400).send($error$$);if(!$result$$)return $res$$.status(400).send(`T\u00e0i kho\u1ea3n ${$address$$} ch\u01b0a \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd`);let $newpassword$$=
62
+ _crypto.createHash("md5").update((new Date).toISOString()).digest("hex");$result$$.local.rspassword=$result$$.generateHash($result$$.email+$newpassword$$);$result$$.save(function($error$$){if($error$$)return $res$$.status(400).send($error$$);loadTemplate("reset mat khau.html",{receiver_name:$result$$.name,email:$result$$.email,password:$newpassword$$},function($error$$,$html$$){if($error$$)return $res$$.status(400).send($error$$);$result$$.email&&validator.isEmail($result$$.email)&&email.sendHtml({to:{name:$result$$.name,
63
+ address:$result$$.email},subject:"\u0110\u1ed5i m\u1eadt kh\u1ea9u",html:$html$$},function($error$$){$error$$?console.error("Khong the gui thong tin tai khoan cho nguoi su dung\n"+$error$$):console.log("send new password to",$result$$.email)});$result$$.email2&&validator.isEmail($result$$.email2)&&email.sendHtml({to:{name:$result$$.name,address:$result$$.email2},subject:"\u0110\u1ed5i m\u1eadt kh\u1ea9u",html:$html$$},function($error$$){$error$$?console.error("Khong the gui thong tin tai khoan cho nguoi su dung\n"+
64
+ $error$$):console.log("send new password to",$result$$.email)});log.create({id_app:"RESETPASSWORD",id_func:"RESETPASSWORD",action:"RESETPASSWORD"},$result$$.email,$req$$.header("user-agent"),$req$$);$res$$.send("M\u1eadt kh\u1ea9u c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u1ed5i th\u00e0nh c\u00f4ng. Ki\u1ec3m tra email \u0111\u1ec3 l\u1ea5y m\u1eadt kh\u1ea9u m\u1edbi, sau \u0111\u00f3 b\u1ea1n n\u00ean \u0111\u1ed5i m\u1eadt kh\u1ea9u n\u00e0y")})})})})};
package/server/cluster.js CHANGED
@@ -1,22 +1,22 @@
1
- 'use strict';require("events").EventEmitter.defaultMaxListeners=1E7;
1
+ require("events").EventEmitter.defaultMaxListeners=1E7;
2
2
  const os=require("os"),express=require("express"),bodyParser=require("body-parser"),passport=require("passport"),https=require("https"),http=require("http"),fs=require("fs"),crypto=require("crypto"),_global=require("./global"),defaultConfigs=require("./defaultConfigs"),sslConfig=require("./sslConfig"),clusterServer=function($app$$,$sslDir$$,$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$={},$_port_accessLogStream_rfs$$=9999,$options$$={start_import_data_pool:!1,start_report_pool:!0,
3
- useAgenda:!0,createRedisCache:!0}){const $configs$$=global.configs={...defaultConfigs,...$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$,cluster:0!=$options$$.cluster,lite:$options$$.lite,port:$_port_accessLogStream_rfs$$};$configs$$.database.url=process.env.MONGO_URI||$configs$$.database.url;$configs$$.admins||($configs$$.admins=$configs$$.adminUsers.map($u$$=>$u$$.email));$configs$$.supportUsers||($configs$$.supportUsers=[...$configs$$.admins]);$configs$$.public_token||
4
- ($configs$$.public_token="flex.public.token");$configs$$.port=$_port_accessLogStream_rfs$$;global.port=$_port_accessLogStream_rfs$$;require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||($app$$=express());$app$$.set("trust proxy",1);const $toobusy$$=require("toobusy-js");$configs$$.maxLag&&$toobusy$$.maxLag($configs$$.maxLag);$app$$.use(function($req$$,$res$$,$next$$){$toobusy$$()?(console.error("Server is busy right now. This request has been cancel:",$req$$.originalUrl),
3
+ useAgenda:!0,createRedisCache:!0}){const $configs$$=global.configs={...defaultConfigs,...$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$,cluster:$options$$.cluster!=0,lite:$options$$.lite,port:$_port_accessLogStream_rfs$$};$configs$$.database.url=process.env.MONGO_URI||$configs$$.database.url;$configs$$.admins||($configs$$.admins=$configs$$.adminUsers.map($u$$=>$u$$.email));$configs$$.supportUsers||($configs$$.supportUsers=[...$configs$$.admins]);$configs$$.public_token||
4
+ ($configs$$.public_token="flex.public.token");$configs$$.port=$_port_accessLogStream_rfs$$;global.port=$_port_accessLogStream_rfs$$;require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||=express();$app$$.set("trust proxy",1);const $toobusy$$=require("toobusy-js");$configs$$.maxLag&&$toobusy$$.maxLag($configs$$.maxLag);$app$$.use(function($req$$,$res$$,$next$$){$toobusy$$()?(console.error("Server is busy right now. This request has been cancel:",$req$$.originalUrl),
5
5
  $res$$.status(503).send({error:"Server is busy right now, sorry."})):$next$$()});$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=require("express-session");$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$({secret:"QV098PVT123456HLBN",resave:!1,saveUninitialized:!0,cookie:{secure:!1}}));$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=require("cookie-parser");$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$());
6
- $app$$.use(function($req$$,$res$$,$next$$){let $uid$$=$req$$.cookies.uid;$uid$$||($uid$$=$req$$.headers.uid);$uid$$||($uid$$="uid:"+crypto.randomBytes(20).toString("hex"),$res$$.cookie("uid",$uid$$,{expires:new Date(Date.now()+31536E6),sameSite:"none",secure:!0}));$res$$.set("uid",$uid$$);$req$$.cookies.uid=$uid$$;$next$$()});$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=require("compression");$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$());
6
+ $app$$.use(function($req$$,$res$$,$next$$){let $uid$$=$req$$.cookies.uid;$uid$$||=$req$$.headers.uid;$uid$$||($uid$$="uid:"+crypto.randomBytes(20).toString("hex"),$res$$.cookie("uid",$uid$$,{expires:new Date(Date.now()+31536E6),sameSite:"none",secure:!0}));$res$$.set("uid",$uid$$);$req$$.cookies.uid=$uid$$;$next$$()});$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=require("compression");$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$());
7
7
  $_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=$configs$$.paths.uploads||__dirname+"/uploads";const $limitFileSize$$=$configs$$.limitFileSize||1048576;$app$$.use(function($req$jscomp$2_size$$,$res$$,$next$$){if(($req$jscomp$2_size$$=$req$jscomp$2_size$$.headers["content-lenght"])&&$req$jscomp$2_size$$>$limitFileSize$$)return $res$$.status(400).send({error:"File too large"});$next$$()});$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=require("multer")({dest:$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$,
8
8
  limits:{files:1,fileSize:$limitFileSize$$}});$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$);$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=require("cors");$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$({credentials:!0,exposedHeaders:["set-cookie","uid"],origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||($configs$$.paths={});$app$$.use("/",express.static($configs$$.paths.public||
9
9
  __dirname+"/public"));$app$$.use("/admin",express.static($configs$$.paths.admin||__dirname+"/admin"));$app$$.use("/templates",express.static($configs$$.paths.templates||__dirname+"/templates"));$app$$.use("/images",express.static($configs$$.paths.images||__dirname+"/images"));$app$$.use(bodyParser.json({limit:$configs$$.limitRequestSize||"1mb"}));$app$$.use(bodyParser.urlencoded({limit:$configs$$.limitRequestSize||"1mb",extended:!0}));$app$$.use(passport.initialize());$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=
10
- require("morgan");$_port_accessLogStream_rfs$$=require("rotating-file-stream");const $logDirectory$$=$configs$$.paths.log||__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$_port_accessLogStream_rfs$$=$_port_accessLogStream_rfs$$("access-cluster.log",{interval:"1d",path:$logDirectory$$});$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$("combined",{stream:$_port_accessLogStream_rfs$$,skip:function($req$$,$res$$){return 400>$res$$.statusCode}}));
11
- $app$$.use(function($err$$,$req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server error!")});console.log("[cluster] connect to mongodb",$configs$$.database.url);$configs$$.database.url||(console.error("[cluster] thi\u1ebfu \u0111\u01b0\u1eddng d\u1eabn k\u1ebft n\u1ed1i v\u1edbi database trong file configs"),process.exit(1));global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(async $clientMongo_redis$$=>{console.log("[cluster] Connected to Database");
10
+ require("morgan");$_port_accessLogStream_rfs$$=require("rotating-file-stream");const $logDirectory$$=$configs$$.paths.log||__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$_port_accessLogStream_rfs$$=$_port_accessLogStream_rfs$$("access-cluster.log",{interval:"1d",path:$logDirectory$$});$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$("combined",{stream:$_port_accessLogStream_rfs$$,skip:function($req$$,$res$$){return $res$$.statusCode<
11
+ 400}}));$app$$.use(function($err$$,$req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server error!")});console.log("[cluster] connect to mongodb",$configs$$.database.url);$configs$$.database.url||(console.error("[cluster] thi\u1ebfu \u0111\u01b0\u1eddng d\u1eabn k\u1ebft n\u1ed1i v\u1edbi database trong file configs"),process.exit(1));global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(async $clientMongo_redis$$=>{console.log("[cluster] Connected to Database");
12
12
  global.clientMongo=$clientMongo_redis$$;$clientMongo_redis$$=require("redis");const {retryStrategyRedis:$retryStrategyRedis$$}=require("./libs/utils");global.clientRedis=$clientMongo_redis$$.createClient({host:"127.0.0.1",port:6379,retry_strategy:$retryStrategyRedis$$});global.clientRedis.on("error",$err$$=>console.error("[cluster] Redis Client Error",$err$$));global.clientRedis.on("end",()=>{console.error("[cluster] Redis connection closed.")});global.clientRedis.on("connect",async function(){function $initSysData$$(){console.log("[cluster] creating system data...");
13
- const $files$$=fs.readdirSync(__dirname+"/data/sys");$async$$.mapSeries($files$$,function($file$$,$callback$jscomp$0$$){setImmediate(()=>{if(".js"==$file$$.substr(-3)){const $data$$=JSON.parse(JSON.stringify(require("./data/sys/"+$file$$).data)),$model$$=global.getModel(""+$file$$);console.log("[cluster] creating system data...",$file$$);$model$$.deleteMany({},$e$$=>{console.error($e$$);$async$$.mapSeries($data$$,function($r$$,$callback$$){delete $r$$._id;delete $r$$.__v;delete $r$$.collection_name;
14
- delete $r$$.pkey;$model$$.create($r$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$()})},function($error$$,$rs$$){$callback$jscomp$0$$($error$$,$rs$$)})})}else $callback$jscomp$0$$()})},function($error$$){if($error$$)return console.log($error$$);console.log("[cluster] created system data")})}console.log("redis connected");0!=$options$$.createRedisCache&&require("./libs/redis-cache").set();global.getModel("schedule").start();$options$$.start_abci_handler&&global.getModel("assabcihandler").start();
15
- var $StaticPool$$=global.getModel("user"),$cpus_init_system_data_report_cpus_server$$=$configs$$.initSysData;$cpus_init_system_data_report_cpus_server$$||await $StaticPool$$.findOne({})||($cpus_init_system_data_report_cpus_server$$=!0);for($StaticPool$jscomp$0$$=0;$StaticPool$jscomp$0$$<$configs$$.adminUsers.length;$StaticPool$jscomp$0$$++){var $StaticPool_adminUser$$=$configs$$.adminUsers[$StaticPool$jscomp$0$$];let $u$$=await $StaticPool$$.findOne({email:$StaticPool_adminUser$$.email});$u$$||($StaticPool_adminUser$$.local=
13
+ const $files$$=fs.readdirSync(__dirname+"/data/sys");$async$$.mapSeries($files$$,function($file$$,$callback$$){setImmediate(()=>{if($file$$.substr(-3)==".js"){const $data$$=JSON.parse(JSON.stringify(require("./data/sys/"+$file$$).data)),$model$$=global.getModel(""+$file$$);console.log("[cluster] creating system data...",$file$$);$model$$.deleteMany({},$e$$=>{console.error($e$$);$async$$.mapSeries($data$$,function($r$$,$callback$$){delete $r$$._id;delete $r$$.__v;delete $r$$.collection_name;delete $r$$.pkey;
14
+ $model$$.create($r$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$()})},function($error$$,$rs$$){$callback$$($error$$,$rs$$)})})}else $callback$$()})},function($error$$){if($error$$)return console.log($error$$);console.log("[cluster] created system data")})}console.log("redis connected");$options$$.createRedisCache!=0&&require("./libs/redis-cache").set();global.getModel("schedule").start();$options$$.start_abci_handler&&global.getModel("assabcihandler").start();var $StaticPool$$=
15
+ global.getModel("user"),$cpus_init_system_data_report_cpus_server$$=$configs$$.initSysData;$cpus_init_system_data_report_cpus_server$$||await $StaticPool$$.findOne({})||($cpus_init_system_data_report_cpus_server$$=!0);for(var $StaticPool$jscomp$0$$=0;$StaticPool$jscomp$0$$<$configs$$.adminUsers.length;$StaticPool$jscomp$0$$++){var $StaticPool_adminUser$$=$configs$$.adminUsers[$StaticPool$jscomp$0$$];let $u$$=await $StaticPool$$.findOne({email:$StaticPool_adminUser$$.email});$u$$||($StaticPool_adminUser$$.local=
16
16
  {name:$StaticPool_adminUser$$.name,email:$StaticPool_adminUser$$.email,active:!0},$u$$=new $StaticPool$$($StaticPool_adminUser$$),$u$$.local.password=$u$$.generateHash($StaticPool_adminUser$$.email+$StaticPool_adminUser$$.defaultPassword),$u$$.save(function($error$$,$user$$){if($error$$)return console.error($error$$);$user$$&&console.log("[cluster] da tao thanh cong user "+$user$$.email)}))}const $async$$=require("async");$cpus_init_system_data_report_cpus_server$$&&$initSysData$$();require("./route")($app$$);
17
- $cpus_init_system_data_report_cpus_server$$=$configs$$.use_ssl?https.createServer(sslConfig($sslDir$$),$app$$):http.createServer($app$$);$cpus_init_system_data_report_cpus_server$$.timeout=6E5;$StaticPool$$.initSocket($cpus_init_system_data_report_cpus_server$$);$StaticPool$$.initClientSockets();if(!1!==$options$$.cluster){if(!require("sticky-session").listen($cpus_init_system_data_report_cpus_server$$,global.port))$cpus_init_system_data_report_cpus_server$$.once("listening",function(){console.log("[cluster] server cluster started on",
17
+ $cpus_init_system_data_report_cpus_server$$=$configs$$.use_ssl?https.createServer(sslConfig($sslDir$$),$app$$):http.createServer($app$$);$cpus_init_system_data_report_cpus_server$$.timeout=6E5;$StaticPool$$.initSocket($cpus_init_system_data_report_cpus_server$$);$StaticPool$$.initClientSockets();if($options$$.cluster!==!1){if(!require("sticky-session").listen($cpus_init_system_data_report_cpus_server$$,global.port))$cpus_init_system_data_report_cpus_server$$.once("listening",function(){console.log("[cluster] server cluster started on",
18
18
  global.port)});$StaticPool$$=require("cluster");$StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("[cluster] worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool$$.on("online",function($worker$$){console.info("[cluster] worker "+$worker$$.process.pid+" is online");global.clientRedis.set("lastworker",JSON.stringify({pid:$worker$$.process.pid}))})}else $cpus_init_system_data_report_cpus_server$$.listen(global.port,()=>{console.log("[cluster] server start at "+
19
- global.port+" port")});$cpus_init_system_data_report_cpus_server$$=os.cpus().length;$StaticPool$$=$options$$.import_cpus||($options$$.start_import_data_pool?$options$$.start_report_pool||$options$$.start_input_data_pool?1:Math.round($cpus_init_system_data_report_cpus_server$$/2):0);var $StaticPool$jscomp$0$$=$options$$.input_cpus||($options$$.start_input_data_pool?Math.max(Math.round($cpus_init_system_data_report_cpus_server$$/2),2):0);$cpus_init_system_data_report_cpus_server$$=$options$$.report_cpus||
19
+ global.port+" port")});$cpus_init_system_data_report_cpus_server$$=os.cpus().length;$StaticPool$$=$options$$.import_cpus||($options$$.start_import_data_pool?$options$$.start_report_pool||$options$$.start_input_data_pool?1:Math.round($cpus_init_system_data_report_cpus_server$$/2):0);$StaticPool$jscomp$0$$=$options$$.input_cpus||($options$$.start_input_data_pool?Math.max(Math.round($cpus_init_system_data_report_cpus_server$$/2),2):0);$cpus_init_system_data_report_cpus_server$$=$options$$.report_cpus||
20
20
  ($options$$.start_import_data_pool?Math.max(Math.min($cpus_init_system_data_report_cpus_server$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_init_system_data_report_cpus_server$$/2))-1,2):0);$StaticPool$jscomp$0$$&&($StaticPool_adminUser$$=require("./libs/WorkerStaticPool"),global.inputMainPool=new $StaticPool_adminUser$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,3E5,$StaticPool$jscomp$0$$,"input pool"),global.inputMainPool.exec({load:!0,
21
21
  configs:JSON.stringify($configs$$)},()=>{console.log("[cluster] Crud pool ready")}));$StaticPool$$&&($StaticPool$jscomp$0$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool$jscomp$0$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$$,36E5,1,"import pool"),global.importDataMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("[cluster] Import pool ready")}));$cpus_init_system_data_report_cpus_server$$&&($StaticPool$$=
22
22
  require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0,$cpus_init_system_data_report_cpus_server$$,3E5,2,"report pool"),global.reportMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("[cluster] Report pool ready")}))})}).catch($err$$=>{console.error("[cluster] Not Connected to Database ERROR!",$err$$)})};