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.
- package/package.json +2 -2
- package/server/app.js +13 -13
- package/server/auths/bearer.js +2 -2
- package/server/auths/facebook.js +11 -12
- package/server/auths/google.js +12 -13
- package/server/auths/local.js +45 -45
- package/server/cluster.js +11 -11
- package/server/controllers/controller.js +36 -36
- package/server/controllers/controllerRPT.js +10 -10
- package/server/controllers/controllerUtils.js +64 -64
- package/server/controllers/createHandler.js +34 -36
- package/server/controllers/createRouteHandler.js +2 -2
- package/server/controllers/deleteHandler.js +11 -12
- package/server/controllers/deleteManyHandler.js +1 -1
- package/server/controllers/exportHandler.js +17 -18
- package/server/controllers/findHandler.js +47 -50
- package/server/controllers/handlers.js +2 -2
- package/server/controllers/historyHandler.js +2 -2
- package/server/controllers/importFromExcelHandler.js +9 -9
- package/server/controllers/importFromGsHandler.js +10 -10
- package/server/controllers/importFromJsonHandler.js +3 -3
- package/server/controllers/importHandler.js +18 -19
- package/server/controllers/logHandler.js +3 -3
- package/server/controllers/rptCreateRouteHandler.js +3 -3
- package/server/controllers/rptExcelHandler.js +17 -17
- package/server/controllers/rptHandler.js +8 -8
- package/server/controllers/updateBookHandler.js +8 -8
- package/server/controllers/updateFieldHandler.js +12 -12
- package/server/controllers/updateHandler.js +37 -38
- package/server/controllers/updateKeyHandler.js +14 -15
- package/server/controllers/viewHandler.js +8 -9
- package/server/flow/FlowEngine.js +32 -32
- package/server/flow/WebhookManager.js +8 -8
- package/server/flow/handlers.js +1 -1
- package/server/flow/nodes/aiAnalysis.js +6 -6
- package/server/flow/nodes/customer.js +3 -3
- package/server/flow/nodes/data.js +5 -5
- package/server/flow/nodes/debug.js +2 -2
- package/server/flow/nodes/delay.js +1 -1
- package/server/flow/nodes/email.js +3 -3
- package/server/flow/nodes/event.js +11 -11
- package/server/flow/nodes/facebook.js +2 -2
- package/server/flow/nodes/facebookConversations.js +1 -1
- package/server/flow/nodes/facebookCreatePost.js +3 -3
- package/server/flow/nodes/facebookSendMessage.js +4 -4
- package/server/flow/nodes/forEachItem.js +5 -5
- package/server/flow/nodes/function.js +2 -2
- package/server/flow/nodes/httprequest.js +4 -4
- package/server/flow/nodes/inject.js +9 -9
- package/server/flow/nodes/pushNotification.js +5 -5
- package/server/flow/nodes/report.js +1 -1
- package/server/flow/nodes/saveData.js +2 -2
- package/server/flow/nodes/switch.js +13 -13
- package/server/flow/nodes/webhook.js +1 -1
- package/server/flow/nodes/zaloSendMessage.js +2 -2
- package/server/flow/utils.js +2 -2
- package/server/global.js +7 -7
- package/server/libs/BlockchainTransactionPool.js +3 -3
- package/server/libs/WorkerPool.js +2 -2
- package/server/libs/WorkerStaticPool.js +6 -6
- package/server/libs/WorkerStaticPool_v1.js +3 -3
- package/server/libs/assbonus.js +1 -1
- package/server/libs/backup.js +1 -1
- package/server/libs/blockchainconnect.js +12 -13
- package/server/libs/cdpsdiem.js +3 -3
- package/server/libs/cdpsdt.js +5 -5
- package/server/libs/cdpskh.js +6 -6
- package/server/libs/cdpsnphep.js +4 -4
- package/server/libs/cdpstk.js +9 -10
- package/server/libs/ckcn.js +11 -11
- package/server/libs/ckdiem.js +2 -2
- package/server/libs/ckdt.js +6 -6
- package/server/libs/cknphep.js +3 -3
- package/server/libs/cktk.js +4 -4
- package/server/libs/cktt.js +9 -9
- package/server/libs/ckvt.js +12 -12
- package/server/libs/ckvtcapphat.js +2 -2
- package/server/libs/ckvtnpp.js +3 -3
- package/server/libs/ckvttt.js +4 -4
- package/server/libs/createSocaitheongay.js +9 -9
- package/server/libs/ctdiem.js +3 -4
- package/server/libs/ctvt.js +5 -5
- package/server/libs/ctvtnpp.js +5 -5
- package/server/libs/ctvttt.js +5 -5
- package/server/libs/databanle.js +12 -13
- package/server/libs/databanlenpp.js +8 -8
- package/server/libs/databanletheongay.js +27 -27
- package/server/libs/dkcn.js +10 -10
- package/server/libs/dkdiem.js +2 -2
- package/server/libs/dkdt.js +6 -6
- package/server/libs/dknphep.js +3 -3
- package/server/libs/dktk.js +4 -4
- package/server/libs/dktt.js +7 -7
- package/server/libs/dkvt.js +9 -9
- package/server/libs/dkvtnpp.js +2 -2
- package/server/libs/dkvttt.js +2 -2
- package/server/libs/dncn.js +5 -5
- package/server/libs/dntk.js +4 -4
- package/server/libs/dntt.js +6 -6
- package/server/libs/docs.js +26 -26
- package/server/libs/dstkcn.js +1 -1
- package/server/libs/dstktt.js +1 -1
- package/server/libs/dtbanletheonpp.js +13 -13
- package/server/libs/dtbanletheosp.js +9 -9
- package/server/libs/dtbanletheospnpp.js +8 -8
- package/server/libs/email.js +1 -1
- package/server/libs/excel.js +1 -1
- package/server/libs/getGiaban.js +41 -41
- package/server/libs/getGiabanAsync.js +1 -1
- package/server/libs/getNotifies.js +1 -1
- package/server/libs/htmlReport.js +8 -8
- package/server/libs/initDatabase.js +6 -6
- package/server/libs/invoiceEasy.js +9 -9
- package/server/libs/invoiceViettel.js +14 -14
- package/server/libs/invoiceVnpt.js +5 -5
- package/server/libs/kpistatus.js +27 -27
- package/server/libs/load-template.js +1 -1
- package/server/libs/mailmanagement.js +12 -13
- package/server/libs/mongooseDeletePost.js +5 -5
- package/server/libs/mongooseLeanId.js +1 -1
- package/server/libs/mongoosePatch.js +3 -3
- package/server/libs/onepay-payment.js +4 -4
- package/server/libs/parse-template.js +4 -4
- package/server/libs/permission.js +39 -39
- package/server/libs/phanbokh.js +3 -3
- package/server/libs/post-book.js +19 -20
- package/server/libs/post-socai.js +23 -24
- package/server/libs/post-sokho.js +25 -26
- package/server/libs/prototypes.js +22 -22
- package/server/libs/psdt.js +1 -1
- package/server/libs/pskh.js +1 -1
- package/server/libs/pstk.js +1 -1
- package/server/libs/redis-cache.js +12 -12
- package/server/libs/restore.js +1 -1
- package/server/libs/schedule.js +11 -11
- package/server/libs/sessionContext.js +4 -2
- package/server/libs/textReport.js +1 -1
- package/server/libs/thnxt.js +6 -6
- package/server/libs/thnxtnpp.js +5 -5
- package/server/libs/thnxttt.js +5 -5
- package/server/libs/tinhGt.js +1 -1
- package/server/libs/tinhGtCapnhatPNK.js +5 -5
- package/server/libs/tinhGtPhanboHeSo.js +11 -11
- package/server/libs/tinhGtPhanboSltp.js +9 -9
- package/server/libs/tinhGtPhanboYtcp.js +6 -6
- package/server/libs/tinhGtSltk.js +6 -7
- package/server/libs/tinhGtThcppstk.js +6 -6
- package/server/libs/tinhGtTrucTiep.js +6 -6
- package/server/libs/tinhGtXoa.js +1 -1
- package/server/libs/tinhgiatb.js +35 -36
- package/server/libs/tinhgiatb1vt.js +1 -1
- package/server/libs/tinhhoahong.js +36 -36
- package/server/libs/tinhhoahongnpp.js +23 -23
- package/server/libs/tinhkhauhao1ts.js +8 -8
- package/server/libs/tinhkhauhaots.js +7 -7
- package/server/libs/tuoinophaithu.js +9 -9
- package/server/libs/tuoinophaitra.js +8 -8
- package/server/libs/utils.js +49 -49
- package/server/libs/validate.js +4 -4
- package/server/libs/validator-acc-cust.js +1 -1
- package/server/libs/validator-account.js +4 -4
- package/server/libs/validator-vt.js +1 -1
- package/server/libs/validator.js +1 -1
- package/server/libs/vsocai.js +8 -8
- package/server/models/account.js +3 -3
- package/server/models/afflink.js +1 -1
- package/server/models/app.js +1 -1
- package/server/models/approve.js +20 -21
- package/server/models/assabcihandler.js +22 -22
- package/server/models/assbank.js +10 -11
- package/server/models/assbooking.js +2 -2
- package/server/models/assbuy.js +3 -3
- package/server/models/asscashwithdraw.js +2 -2
- package/server/models/assfindhash.js +1 -1
- package/server/models/assinvestment.js +7 -8
- package/server/models/assissue.js +1 -1
- package/server/models/asskey.js +4 -4
- package/server/models/assneedtobuy.js +4 -4
- package/server/models/assperiod.js +5 -5
- package/server/models/assproduct.js +5 -5
- package/server/models/assprofitsharing.js +2 -2
- package/server/models/assreceiver.js +1 -1
- package/server/models/assrequest.js +3 -3
- package/server/models/asssell.js +3 -3
- package/server/models/asstransaction.js +1 -1
- package/server/models/asstransfer.js +1 -1
- package/server/models/assuser_identity.js +2 -2
- package/server/models/asswithdraw.js +2 -2
- package/server/models/attend.js +1 -1
- package/server/models/banggiaban.js +1 -1
- package/server/models/bangtinhluong.js +4 -4
- package/server/models/base.js +1 -2
- package/server/models/bds_area.js +3 -3
- package/server/models/bds_block.js +1 -1
- package/server/models/bds_building.js +3 -3
- package/server/models/bds_floor.js +1 -1
- package/server/models/bds_floordetail.js +9 -9
- package/server/models/bds_nhadat.js +5 -5
- package/server/models/bds_nhomnhadat.js +1 -1
- package/server/models/bds_phanloainhadat.js +1 -1
- package/server/models/bg1.js +1 -1
- package/server/models/bg2.js +4 -4
- package/server/models/cache.js +1 -1
- package/server/models/calllog.js +2 -2
- package/server/models/campaign.js +5 -5
- package/server/models/cart.js +3 -3
- package/server/models/cddiem.js +1 -1
- package/server/models/cddt.js +2 -2
- package/server/models/cdkh.js +1 -1
- package/server/models/cdkhtheongay.js +3 -3
- package/server/models/cdnphep.js +1 -1
- package/server/models/cdtk.js +2 -2
- package/server/models/cdtktheongay.js +1 -1
- package/server/models/cdvt.js +3 -3
- package/server/models/cdvtnpp.js +3 -3
- package/server/models/cdvttheongay.js +3 -3
- package/server/models/chamcong.js +2 -2
- package/server/models/checkin.js +2 -2
- package/server/models/checkinactivity.js +1 -2
- package/server/models/checkinkpi.js +1 -1
- package/server/models/checkinlocation.js +1 -1
- package/server/models/chitieukpi.js +2 -2
- package/server/models/chudethaoluan.js +1 -1
- package/server/models/ckgtluong.js +1 -1
- package/server/models/colleague.js +1 -1
- package/server/models/comment.js +3 -4
- package/server/models/congdoansx.js +2 -2
- package/server/models/congtacvien.js +3 -3
- package/server/models/congthuctinhgiaban.js +4 -4
- package/server/models/consultant.js +1 -1
- package/server/models/contract.js +1 -1
- package/server/models/counter.js +1 -1
- package/server/models/ctds.js +3 -3
- package/server/models/ctds2.js +4 -4
- package/server/models/currency.js +3 -3
- package/server/models/customer.js +14 -14
- package/server/models/databanle.js +4 -4
- package/server/models/datlich.js +2 -2
- package/server/models/department.js +4 -4
- package/server/models/dh2.js +2 -2
- package/server/models/diagram.js +2 -3
- package/server/models/dinhmucsx.js +2 -2
- package/server/models/dkhoc.js +3 -3
- package/server/models/dknphep.js +1 -1
- package/server/models/dmban.js +2 -2
- package/server/models/dmbp.js +1 -1
- package/server/models/dmca.js +2 -2
- package/server/models/dmchietkhau.js +5 -5
- package/server/models/dmchietkhauhd.js +8 -8
- package/server/models/dmcpmh.js +1 -1
- package/server/models/dmdiemthuong.js +3 -3
- package/server/models/dmdoi.js +1 -1
- package/server/models/dmdoituongdanhgia.js +1 -1
- package/server/models/dmdt.js +4 -4
- package/server/models/dmdvt.js +1 -1
- package/server/models/dmgiaban.js +3 -3
- package/server/models/dmgiamua.js +3 -3
- package/server/models/dmgiathitruong.js +2 -2
- package/server/models/dmgiathitruong_ngay.js +1 -1
- package/server/models/dmgiathitruong_theodoi.js +1 -1
- package/server/models/dmhoahonghd.js +5 -5
- package/server/models/dmhoahongnpp.js +1 -1
- package/server/models/dmkc.js +1 -1
- package/server/models/dmkho.js +3 -3
- package/server/models/dmkhuyenmai.js +5 -5
- package/server/models/dmkhuyenmaihd.js +3 -3
- package/server/models/dmletet.js +2 -2
- package/server/models/dmlo.js +2 -2
- package/server/models/dmloaicong.js +2 -2
- package/server/models/dmloaitask.js +1 -1
- package/server/models/dmloaits.js +1 -1
- package/server/models/dmnckkm.js +2 -2
- package/server/models/dmnghiepvu.js +2 -2
- package/server/models/dmnguonvon.js +1 -1
- package/server/models/dmnhnv.js +1 -1
- package/server/models/dmnv.js +4 -4
- package/server/models/dmnvt.js +3 -3
- package/server/models/dmphatdichvu.js +1 -1
- package/server/models/dmphi.js +3 -3
- package/server/models/dmqct.js +2 -2
- package/server/models/dmqddvt.js +1 -1
- package/server/models/dmtanggiamts.js +2 -2
- package/server/models/dmto.js +2 -2
- package/server/models/dmtt.js +2 -2
- package/server/models/dmvt.js +4 -4
- package/server/models/dmyt.js +2 -2
- package/server/models/dn0.js +3 -3
- package/server/models/dnm.js +4 -4
- package/server/models/dokho.js +1 -1
- package/server/models/domain.js +1 -1
- package/server/models/dvcs.js +1 -1
- package/server/models/ecomcategories.js +1 -1
- package/server/models/ecomcategories_cty.js +1 -1
- package/server/models/ecomproductlines.js +1 -1
- package/server/models/ecompromotion_flashsales.js +2 -2
- package/server/models/ecompromotion_freeships.js +2 -2
- package/server/models/email.js +1 -1
- package/server/models/endpoint.js +1 -2
- package/server/models/events.js +2 -2
- package/server/models/evoucher.js +3 -3
- package/server/models/experiencejourney.js +1 -1
- package/server/models/experiencejourneydata.js +2 -2
- package/server/models/experiencejourneypersona.js +2 -2
- package/server/models/experiencejourneystage.js +1 -1
- package/server/models/exportexceltemplate.js +1 -1
- package/server/models/fbconversation.js +6 -6
- package/server/models/fbmessage.js +1 -1
- package/server/models/fbpage.js +1 -1
- package/server/models/fbpost.js +1 -1
- package/server/models/fieldright.js +1 -1
- package/server/models/file.js +1 -1
- package/server/models/financialroadmap.js +1 -1
- package/server/models/flow.js +1 -1
- package/server/models/flowdata.js +1 -1
- package/server/models/folder.js +2 -2
- package/server/models/follow.js +1 -1
- package/server/models/form.js +2 -2
- package/server/models/forminfo.js +5 -5
- package/server/models/formvalue.js +1 -1
- package/server/models/giaoca.js +2 -2
- package/server/models/giatb.js +2 -2
- package/server/models/group.js +2 -2
- package/server/models/gt_ctgt.js +1 -1
- package/server/models/gt_hspb.js +2 -2
- package/server/models/gt_sltk.js +2 -2
- package/server/models/gt_thcppstk.js +1 -1
- package/server/models/hanmucton.js +4 -4
- package/server/models/hd1.js +1 -1
- package/server/models/hd2.js +3 -3
- package/server/models/hd3.js +7 -7
- package/server/models/hd4.js +1 -1
- package/server/models/hd7.js +4 -4
- package/server/models/hd8.js +4 -4
- package/server/models/hde.js +3 -3
- package/server/models/hlink.js +1 -1
- package/server/models/hlinkvalue.js +2 -2
- package/server/models/hmcn.js +1 -1
- package/server/models/hmcnct.js +1 -1
- package/server/models/hspbts.js +3 -3
- package/server/models/htl.js +2 -2
- package/server/models/importexceltemplate.js +1 -1
- package/server/models/introducebonus.js +2 -2
- package/server/models/introducecode.js +1 -1
- package/server/models/introducer.js +1 -1
- package/server/models/kbbtpb.js +2 -2
- package/server/models/kbmPttct.js +3 -3
- package/server/models/kbmTkgtgt.js +4 -4
- package/server/models/kbm_bcdkt.js +3 -3
- package/server/models/kbm_kqhdkd.js +2 -2
- package/server/models/kbm_lcttgt.js +5 -5
- package/server/models/kbm_lctttt.js +3 -4
- package/server/models/kbm_pttct.js +1 -1
- package/server/models/kbm_tkgtgt.js +4 -4
- package/server/models/kbmbcdkt.js +3 -3
- package/server/models/kbmbcqt.js +4 -5
- package/server/models/kbmkqhdkd.js +2 -2
- package/server/models/kbmlcttgt.js +5 -5
- package/server/models/kbmlctttt.js +3 -4
- package/server/models/kbmtmbctc.js +3 -3
- package/server/models/kehoachdtcp.js +2 -2
- package/server/models/kehoachmh.js +1 -1
- package/server/models/keyresult.js +5 -5
- package/server/models/khunghangthanhvien.js +3 -3
- package/server/models/label.js +1 -1
- package/server/models/labelinfo.js +1 -1
- package/server/models/lenhcapphat.js +1 -1
- package/server/models/lenhsx.js +2 -2
- package/server/models/lienhe.js +2 -2
- package/server/models/like_module.js +1 -1
- package/server/models/link.js +1 -1
- package/server/models/loaidiem.js +1 -1
- package/server/models/lock.js +1 -1
- package/server/models/log.js +3 -3
- package/server/models/mailaccount.js +2 -2
- package/server/models/mailgroup.js +1 -1
- package/server/models/mailreceived.js +1 -1
- package/server/models/mailschedule.js +1 -1
- package/server/models/mailsent.js +1 -1
- package/server/models/mailtemplate.js +1 -1
- package/server/models/maudanhgia.js +1 -1
- package/server/models/menuinfo.js +1 -1
- package/server/models/message.js +5 -5
- package/server/models/message2.js +1 -1
- package/server/models/message2setting.js +1 -1
- package/server/models/moduleinfo.js +2 -2
- package/server/models/momo.js +6 -6
- package/server/models/news.js +1 -1
- package/server/models/newsfeed.js +1 -1
- package/server/models/note.js +1 -1
- package/server/models/notification.js +4 -4
- package/server/models/okr.js +2 -2
- package/server/models/okrdiagram.js +2 -2
- package/server/models/onepay.js +12 -12
- package/server/models/opportunity.js +2 -2
- package/server/models/options.js +2 -3
- package/server/models/originimportid.js +1 -1
- package/server/models/otp.js +1 -1
- package/server/models/parameter.js +1 -1
- package/server/models/participant.js +14 -14
- package/server/models/partner.js +1 -1
- package/server/models/payload.js +1 -1
- package/server/models/pbl.js +5 -5
- package/server/models/pc0.js +3 -3
- package/server/models/pc1.js +3 -3
- package/server/models/pc2.js +3 -3
- package/server/models/pc3.js +3 -3
- package/server/models/pc5.js +2 -2
- package/server/models/pc6.js +3 -3
- package/server/models/pcl.js +2 -2
- package/server/models/pdn.js +3 -3
- package/server/models/pdx.js +1 -1
- package/server/models/pgh.js +3 -3
- package/server/models/phieudanhgia.js +2 -2
- package/server/models/pht.js +3 -3
- package/server/models/phucap.js +1 -1
- package/server/models/pkc.js +2 -2
- package/server/models/pkh.js +2 -2
- package/server/models/pkk.js +1 -1
- package/server/models/pkt.js +2 -2
- package/server/models/pn1.js +5 -5
- package/server/models/pn2.js +2 -2
- package/server/models/pn3.js +4 -4
- package/server/models/pn5.js +3 -3
- package/server/models/pn6.js +1 -1
- package/server/models/pn9.js +1 -1
- package/server/models/pnc.js +4 -4
- package/server/models/pnh.js +1 -1
- package/server/models/pnk.js +3 -3
- package/server/models/po1.js +11 -12
- package/server/models/ppb.js +2 -2
- package/server/models/profile.js +1 -1
- package/server/models/pt1.js +3 -3
- package/server/models/pt5.js +2 -2
- package/server/models/ptl.js +2 -2
- package/server/models/ptthanhtoan.js +1 -1
- package/server/models/purchase_contract.js +9 -9
- package/server/models/pxc.js +4 -5
- package/server/models/pxh.js +1 -1
- package/server/models/pxk.js +4 -4
- package/server/models/qts.js +4 -4
- package/server/models/qts_dieuchinh.js +2 -2
- package/server/models/qts_dieuchuyen.js +2 -2
- package/server/models/quanhuyen.js +1 -1
- package/server/models/reason.js +1 -1
- package/server/models/receivedinvoice.js +2 -2
- package/server/models/reportinfo.js +1 -1
- package/server/models/right.js +2 -2
- package/server/models/rpt.js +1 -1
- package/server/models/rptform.js +4 -4
- package/server/models/rptobject.js +1 -1
- package/server/models/sale_contract.js +2 -2
- package/server/models/schedule.js +13 -13
- package/server/models/schedule_log.js +1 -1
- package/server/models/service.js +2 -2
- package/server/models/shipbook.js +3 -3
- package/server/models/shortcut.js +1 -1
- package/server/models/smsaccount.js +3 -3
- package/server/models/smssend.js +1 -1
- package/server/models/so1.js +1 -1
- package/server/models/so2.js +1 -1
- package/server/models/so3.js +3 -3
- package/server/models/so5.js +1 -1
- package/server/models/so9.js +7 -7
- package/server/models/socai.js +9 -9
- package/server/models/socainpp.js +6 -6
- package/server/models/socaitc.js +3 -3
- package/server/models/socaitmp.js +8 -8
- package/server/models/socaitt.js +2 -2
- package/server/models/sodiemthuong.js +2 -2
- package/server/models/sokho.js +4 -4
- package/server/models/sokhocapphat.js +3 -3
- package/server/models/sokhokhongton.js +3 -3
- package/server/models/sokhonpp.js +12 -12
- package/server/models/sokhotc.js +5 -5
- package/server/models/sokhott.js +3 -3
- package/server/models/sophanbokh.js +2 -2
- package/server/models/sosanxuat.js +3 -3
- package/server/models/sotinhkh.js +2 -3
- package/server/models/spdd_ck.js +3 -3
- package/server/models/spdd_dk.js +3 -3
- package/server/models/step.js +2 -2
- package/server/models/strategicdiagram.js +1 -1
- package/server/models/strategicgoal.js +1 -1
- package/server/models/strategickpi.js +2 -2
- package/server/models/strategicobjective.js +2 -2
- package/server/models/strategicplan.js +2 -2
- package/server/models/subscribe.js +2 -2
- package/server/models/support.js +1 -1
- package/server/models/synctime.js +2 -2
- package/server/models/sysconfig.js +1 -1
- package/server/models/sysgroup.js +1 -1
- package/server/models/tableinfo.js +2 -2
- package/server/models/task.js +2 -2
- package/server/models/taskreg.js +1 -1
- package/server/models/tc.js +1 -1
- package/server/models/tdttco.js +5 -6
- package/server/models/tdttco_tt.js +4 -4
- package/server/models/tdttno.js +5 -6
- package/server/models/tdttno_tt.js +5 -5
- package/server/models/templaterpt.js +1 -1
- package/server/models/templatestore.js +1 -1
- package/server/models/templatevoucher.js +1 -1
- package/server/models/tinhthanh.js +1 -1
- package/server/models/tokens.js +1 -1
- package/server/models/tontucthoi.js +4 -4
- package/server/models/trangthai.js +2 -2
- package/server/models/trangthaiapp.js +2 -3
- package/server/models/transaction.js +8 -8
- package/server/models/trialinfo.js +2 -2
- package/server/models/user.js +21 -21
- package/server/models/usergroup.js +1 -1
- package/server/models/vanchuyen.js +4 -4
- package/server/models/vat.js +2 -2
- package/server/models/vatra.js +4 -4
- package/server/models/vatvao.js +2 -2
- package/server/models/versioninfo.js +1 -1
- package/server/models/vietqrbanks.js +1 -1
- package/server/models/vsocai.js +4 -4
- package/server/models/waitevent.js +1 -1
- package/server/models/wallet.js +1 -1
- package/server/models/warranty.js +1 -1
- package/server/models/warrantyclaim.js +2 -2
- package/server/models/warrantypolicy.js +1 -1
- package/server/models/xaphuong.js +1 -1
- package/server/models/xhd.js +3 -3
- package/server/models/ytdd_ck.js +2 -2
- package/server/models/ytdd_dk.js +2 -2
- package/server/models/zalo.js +10 -10
- package/server/modules/lists/bg-cddiem.js +1 -1
- package/server/modules/lists/bg-cddt.js +4 -4
- package/server/modules/lists/bg-cdkh.js +5 -5
- package/server/modules/lists/bg-cdnphep.js +6 -6
- package/server/modules/lists/bg-cdtk.js +7 -7
- package/server/modules/lists/bg-cdvt.js +1 -1
- package/server/modules/lists/bg-cdvtnpp.js +2 -2
- package/server/modules/lists/ls-account.js +4 -4
- package/server/modules/lists/ls-afflink.js +2 -2
- package/server/modules/lists/ls-approve.js +1 -1
- package/server/modules/lists/ls-assabcihandler.js +1 -1
- package/server/modules/lists/ls-assbank.js +1 -1
- package/server/modules/lists/ls-assbooking.js +14 -15
- package/server/modules/lists/ls-assbuy.js +2 -2
- package/server/modules/lists/ls-asscashwithdraw.js +5 -5
- package/server/modules/lists/ls-assinvestment.js +24 -23
- package/server/modules/lists/ls-assissue.js +1 -1
- package/server/modules/lists/ls-asskey.js +28 -28
- package/server/modules/lists/ls-assneedtobuy.js +3 -3
- package/server/modules/lists/ls-assperiod.js +13 -13
- package/server/modules/lists/ls-assproduct.js +6 -6
- package/server/modules/lists/ls-assprofitsharing.js +5 -5
- package/server/modules/lists/ls-assreceiver.js +3 -3
- package/server/modules/lists/ls-assrequest.js +3 -3
- package/server/modules/lists/ls-asssell.js +7 -7
- package/server/modules/lists/ls-asstransaction.js +1 -1
- package/server/modules/lists/ls-asstransfer.js +1 -1
- package/server/modules/lists/ls-assuser_identity.js +1 -1
- package/server/modules/lists/ls-asswithdraw.js +4 -4
- package/server/modules/lists/ls-bangtinhluong.js +1 -1
- package/server/modules/lists/ls-bds_area.js +3 -4
- package/server/modules/lists/ls-bds_block.js +1 -1
- package/server/modules/lists/ls-bds_building.js +2 -2
- package/server/modules/lists/ls-bds_dmnhbds.js +6 -6
- package/server/modules/lists/ls-bds_floor.js +2 -2
- package/server/modules/lists/ls-bds_floordetail.js +8 -8
- package/server/modules/lists/ls-bds_nhadat.js +10 -10
- package/server/modules/lists/ls-bds_nhomnhadat.js +1 -1
- package/server/modules/lists/ls-bds_phanloainhadat.js +1 -1
- package/server/modules/lists/ls-calllog.js +1 -1
- package/server/modules/lists/ls-campaign.js +1 -2
- package/server/modules/lists/ls-cart.js +9 -9
- package/server/modules/lists/ls-chamcong.js +1 -1
- package/server/modules/lists/ls-checkin.js +5 -5
- package/server/modules/lists/ls-checkinactivity.js +6 -6
- package/server/modules/lists/ls-checkinkpi.js +3 -3
- package/server/modules/lists/ls-checkinlocation.js +1 -1
- package/server/modules/lists/ls-chitieukpi.js +1 -2
- package/server/modules/lists/ls-chudethaoluan.js +1 -1
- package/server/modules/lists/ls-ckgtluong.js +1 -1
- package/server/modules/lists/ls-comment.js +1 -1
- package/server/modules/lists/ls-congdoansx.js +1 -1
- package/server/modules/lists/ls-congtacvien.js +2 -2
- package/server/modules/lists/ls-consultant.js +2 -2
- package/server/modules/lists/ls-contract.js +3 -3
- package/server/modules/lists/ls-ctds.js +1 -1
- package/server/modules/lists/ls-ctds2.js +4 -4
- package/server/modules/lists/ls-currency.js +1 -1
- package/server/modules/lists/ls-customer.js +14 -14
- package/server/modules/lists/ls-datlich.js +5 -5
- package/server/modules/lists/ls-dckhauhaots.js +1 -1
- package/server/modules/lists/ls-department.js +3 -3
- package/server/modules/lists/ls-diagram.js +1 -1
- package/server/modules/lists/ls-dkhoc.js +2 -2
- package/server/modules/lists/ls-dknphep.js +1 -1
- package/server/modules/lists/ls-dmban.js +2 -2
- package/server/modules/lists/ls-dmbp.js +4 -4
- package/server/modules/lists/ls-dmca.js +1 -1
- package/server/modules/lists/ls-dmchietkhau.js +11 -11
- package/server/modules/lists/ls-dmchietkhauhd.js +1 -1
- package/server/modules/lists/ls-dmchucvu.js +1 -1
- package/server/modules/lists/ls-dmcpmh.js +1 -1
- package/server/modules/lists/ls-dmdiemthuong.js +1 -1
- package/server/modules/lists/ls-dmdoi.js +1 -1
- package/server/modules/lists/ls-dmdoituongdanhgia.js +1 -1
- package/server/modules/lists/ls-dmdt.js +9 -10
- package/server/modules/lists/ls-dmdvt.js +2 -2
- package/server/modules/lists/ls-dmgiaban.js +1 -1
- package/server/modules/lists/ls-dmgiamua.js +1 -1
- package/server/modules/lists/ls-dmgiathitruong.js +5 -5
- package/server/modules/lists/ls-dmgiathitruong_ngay.js +1 -1
- package/server/modules/lists/ls-dmgiathitruong_theodoi.js +1 -1
- package/server/modules/lists/ls-dmhoahonghd.js +1 -2
- package/server/modules/lists/ls-dmhoahongnpp.js +1 -2
- package/server/modules/lists/ls-dmkc.js +1 -1
- package/server/modules/lists/ls-dmkho.js +1 -1
- package/server/modules/lists/ls-dmkhuyenmai.js +4 -4
- package/server/modules/lists/ls-dmkhuyenmaihd.js +2 -2
- package/server/modules/lists/ls-dmletet.js +1 -1
- package/server/modules/lists/ls-dmlo.js +1 -1
- package/server/modules/lists/ls-dmloaicong.js +1 -1
- package/server/modules/lists/ls-dmloaits.js +1 -1
- package/server/modules/lists/ls-dmnckkm.js +6 -6
- package/server/modules/lists/ls-dmnghiepvu.js +1 -1
- package/server/modules/lists/ls-dmnguonvon.js +1 -1
- package/server/modules/lists/ls-dmnhnv.js +2 -2
- package/server/modules/lists/ls-dmnhtask.js +2 -2
- package/server/modules/lists/ls-dmnkh.js +5 -5
- package/server/modules/lists/ls-dmntt.js +6 -6
- package/server/modules/lists/ls-dmnv.js +12 -12
- package/server/modules/lists/ls-dmnvt.js +7 -7
- package/server/modules/lists/ls-dmphatdichvu.js +1 -1
- package/server/modules/lists/ls-dmphi.js +4 -4
- package/server/modules/lists/ls-dmqct.js +1 -1
- package/server/modules/lists/ls-dmqddvt.js +2 -2
- package/server/modules/lists/ls-dmtanggiamts.js +1 -1
- package/server/modules/lists/ls-dmto.js +1 -1
- package/server/modules/lists/ls-dmtt.js +4 -4
- package/server/modules/lists/ls-dmvt.js +49 -50
- package/server/modules/lists/ls-dmyt.js +1 -1
- package/server/modules/lists/ls-dokho.js +1 -1
- package/server/modules/lists/ls-dvcs.js +1 -1
- package/server/modules/lists/ls-ecomcategories.js +4 -4
- package/server/modules/lists/ls-ecomcategories_cty.js +4 -4
- package/server/modules/lists/ls-email.js +1 -1
- package/server/modules/lists/ls-events.js +1 -1
- package/server/modules/lists/ls-evoucher.js +1 -1
- package/server/modules/lists/ls-experiencejourney.js +1 -1
- package/server/modules/lists/ls-experiencejourneydata.js +1 -1
- package/server/modules/lists/ls-experiencejourneypersona.js +1 -1
- package/server/modules/lists/ls-experiencejourneystage.js +1 -1
- package/server/modules/lists/ls-fbconversation.js +1 -1
- package/server/modules/lists/ls-fbmessage.js +1 -1
- package/server/modules/lists/ls-fbpage.js +5 -5
- package/server/modules/lists/ls-fbpost.js +2 -2
- package/server/modules/lists/ls-file.js +16 -16
- package/server/modules/lists/ls-financialroadmap.js +3 -3
- package/server/modules/lists/ls-flow.js +3 -3
- package/server/modules/lists/ls-flowdata.js +1 -1
- package/server/modules/lists/ls-folder.js +1 -1
- package/server/modules/lists/ls-form.js +1 -1
- package/server/modules/lists/ls-forminfo.js +1 -1
- package/server/modules/lists/ls-formvalue.js +1 -1
- package/server/modules/lists/ls-giaoca.js +1 -1
- package/server/modules/lists/ls-group.js +5 -6
- package/server/modules/lists/ls-hlink.js +1 -1
- package/server/modules/lists/ls-hlinkvalue.js +1 -1
- package/server/modules/lists/ls-hmcn.js +2 -2
- package/server/modules/lists/ls-hspbts.js +1 -1
- package/server/modules/lists/ls-introducebonus.js +3 -3
- package/server/modules/lists/ls-introducecode.js +6 -5
- package/server/modules/lists/ls-introducer.js +20 -21
- package/server/modules/lists/ls-kbm-bcdkt.js +1 -1
- package/server/modules/lists/ls-kbm-bcqt.js +2 -2
- package/server/modules/lists/ls-kbm-kqhdkd.js +1 -1
- package/server/modules/lists/ls-kbm-lcttgt.js +1 -1
- package/server/modules/lists/ls-kbm-lctttt.js +1 -1
- package/server/modules/lists/ls-kbm-pttct.js +2 -2
- package/server/modules/lists/ls-kbm-tkgtgt.js +3 -3
- package/server/modules/lists/ls-kbm-tmbctc.js +2 -2
- package/server/modules/lists/ls-kehoachdtcp.js +1 -1
- package/server/modules/lists/ls-keyresult.js +2 -2
- package/server/modules/lists/ls-khunghangthanhvien.js +1 -1
- package/server/modules/lists/ls-kygui.js +7 -7
- package/server/modules/lists/ls-label.js +1 -1
- package/server/modules/lists/ls-lienhe.js +1 -1
- package/server/modules/lists/ls-like-module.js +1 -1
- package/server/modules/lists/ls-link.js +1 -1
- package/server/modules/lists/ls-loaidiem.js +1 -1
- package/server/modules/lists/ls-lock.js +1 -1
- package/server/modules/lists/ls-log.js +1 -1
- package/server/modules/lists/ls-mailaccount.js +2 -2
- package/server/modules/lists/ls-mailreceived.js +2 -2
- package/server/modules/lists/ls-mailschedule.js +3 -3
- package/server/modules/lists/ls-mailsent.js +3 -3
- package/server/modules/lists/ls-mailtemplate.js +4 -4
- package/server/modules/lists/ls-maudanhgia.js +3 -3
- package/server/modules/lists/ls-message2.js +6 -6
- package/server/modules/lists/ls-message2setting.js +2 -2
- package/server/modules/lists/ls-news.js +3 -3
- package/server/modules/lists/ls-newsfeed.js +4 -4
- package/server/modules/lists/ls-note.js +2 -2
- package/server/modules/lists/ls-okr.js +2 -2
- package/server/modules/lists/ls-okrdiagram.js +1 -1
- package/server/modules/lists/ls-opportunity.js +4 -4
- package/server/modules/lists/ls-options.js +2 -2
- package/server/modules/lists/ls-parameter.js +1 -1
- package/server/modules/lists/ls-participant.js +4 -4
- package/server/modules/lists/ls-phieudanhgia.js +7 -7
- package/server/modules/lists/ls-phucap.js +2 -2
- package/server/modules/lists/ls-profile.js +1 -1
- package/server/modules/lists/ls-ptthanhtoan.js +2 -2
- package/server/modules/lists/ls-qts-dieuchinh.js +1 -1
- package/server/modules/lists/ls-qts-dieuchuyen.js +2 -2
- package/server/modules/lists/ls-reason.js +1 -1
- package/server/modules/lists/ls-rpt.js +4 -4
- package/server/modules/lists/ls-rptform.js +3 -3
- package/server/modules/lists/ls-service.js +1 -1
- package/server/modules/lists/ls-shortcut.js +1 -1
- package/server/modules/lists/ls-smsaccount.js +1 -1
- package/server/modules/lists/ls-smssend.js +1 -1
- package/server/modules/lists/ls-sosanxuat.js +3 -3
- package/server/modules/lists/ls-step.js +1 -1
- package/server/modules/lists/ls-strategicdiagram.js +1 -1
- package/server/modules/lists/ls-strategicgoal.js +3 -3
- package/server/modules/lists/ls-strategickpi.js +4 -4
- package/server/modules/lists/ls-strategicobjective.js +3 -3
- package/server/modules/lists/ls-strategicplan.js +2 -2
- package/server/modules/lists/ls-support.js +3 -3
- package/server/modules/lists/ls-task.js +17 -17
- package/server/modules/lists/ls-taskreg.js +2 -2
- package/server/modules/lists/ls-tc.js +1 -1
- package/server/modules/lists/ls-templaterpt.js +2 -2
- package/server/modules/lists/ls-templatevoucher.js +1 -1
- package/server/modules/lists/ls-tontucthoi.js +1 -1
- package/server/modules/lists/ls-trangthaiapp.js +1 -1
- package/server/modules/lists/ls-transaction.js +1 -1
- package/server/modules/lists/ls-usergroup.js +5 -5
- package/server/modules/lists/ls-vat.js +1 -1
- package/server/modules/lists/ls-vatra.js +1 -1
- package/server/modules/lists/ls-vatvao.js +3 -3
- package/server/modules/lists/ls-waitevent.js +1 -1
- package/server/modules/lists/ls-warranty.js +3 -3
- package/server/modules/lists/ls_hanmucton.js +2 -2
- package/server/modules/lists/ls_hspb.js +1 -1
- package/server/modules/lists/ls_spdd_ck.js +1 -1
- package/server/modules/lists/ls_spdd_dk.js +1 -1
- package/server/modules/lists/ls_ytdd_ck.js +1 -1
- package/server/modules/lists/ls_ytdd_dk.js +1 -1
- package/server/modules/lists/sys-attend.js +3 -3
- package/server/modules/lists/sys-follow.js +3 -3
- package/server/modules/lists/sys-right.js +1 -1
- package/server/modules/public/app.js +1 -1
- package/server/modules/public/approve.js +1 -1
- package/server/modules/public/callin.js +3 -3
- package/server/modules/public/comment.js +4 -4
- package/server/modules/public/dmnvt.js +4 -4
- package/server/modules/public/dmvt.js +8 -8
- package/server/modules/public/file.js +6 -6
- package/server/modules/public/form.js +6 -6
- package/server/modules/public/forminfo.js +1 -1
- package/server/modules/public/group.js +4 -4
- package/server/modules/public/hlink.js +1 -1
- package/server/modules/public/introducecode.js +1 -2
- package/server/modules/public/listinfo.js +1 -1
- package/server/modules/public/media-webhook.js +1 -1
- package/server/modules/public/partner.js +1 -1
- package/server/modules/public/paymentCallback.js +1 -1
- package/server/modules/public/province.js +1 -1
- package/server/modules/public/ptthanhtoan.js +4 -4
- package/server/modules/public/subscribe.js +1 -1
- package/server/modules/public/support.js +1 -1
- package/server/modules/public/tableinfo.js +1 -1
- package/server/modules/public/trialinfo.js +1 -1
- package/server/modules/public/versioninfo.js +1 -1
- package/server/modules/reports/calc-tinhgiatb.js +6 -6
- package/server/modules/reports/calc-tinhgiathanh.js +5 -5
- package/server/modules/reports/calc-tinhkhauhaots.js +1 -1
- package/server/modules/reports/calc-tinhluong.js +23 -24
- package/server/modules/reports/rp-analyzedata.js +3 -3
- package/server/modules/reports/rp-assbonus.js +2 -2
- package/server/modules/reports/rp-assinterest.js +1 -1
- package/server/modules/reports/rp-assproductowners.js +1 -1
- package/server/modules/reports/rp-asssupply.js +1 -1
- package/server/modules/reports/rp-asstransferlog.js +1 -1
- package/server/modules/reports/rp-banggiatb.js +1 -1
- package/server/modules/reports/rp-bangtinhkhauhao.js +6 -6
- package/server/modules/reports/rp-baocaokhachhang.js +6 -6
- package/server/modules/reports/rp-bcdkt.js +10 -10
- package/server/modules/reports/rp-bcintroducebonus.js +1 -1
- package/server/modules/reports/rp-bckhtiemnang.js +1 -1
- package/server/modules/reports/rp-bcqt.js +36 -36
- package/server/modules/reports/rp-bkct.js +5 -5
- package/server/modules/reports/rp-bkshipbook.js +8 -8
- package/server/modules/reports/rp-bkvanchuyen.js +8 -8
- package/server/modules/reports/rp-bkvatra.js +7 -8
- package/server/modules/reports/rp-bkvatvao.js +7 -7
- package/server/modules/reports/rp-capnhatsocaitc.js +1 -1
- package/server/modules/reports/rp-cdpsdiem.js +4 -4
- package/server/modules/reports/rp-cdpsdt.js +1 -1
- package/server/modules/reports/rp-cdpskh.js +4 -4
- package/server/modules/reports/rp-cdpsnphep.js +3 -3
- package/server/modules/reports/rp-cdpstk.js +1 -1
- package/server/modules/reports/rp-chitietchitientheohoadon.js +9 -9
- package/server/modules/reports/rp-chitiettaisan.js +12 -13
- package/server/modules/reports/rp-chitietthutientheohoadon.js +8 -8
- package/server/modules/reports/rp-ckcn.js +3 -3
- package/server/modules/reports/rp-ckdiem.js +2 -3
- package/server/modules/reports/rp-cktk.js +1 -1
- package/server/modules/reports/rp-ckvt.js +10 -10
- package/server/modules/reports/rp-ckvttheokho.js +4 -4
- package/server/modules/reports/rp-ckvttheotg.js +4 -4
- package/server/modules/reports/rp-ckvttt.js +3 -3
- package/server/modules/reports/rp-congnophaithutheotuoino.js +2 -2
- package/server/modules/reports/rp-congnophaitratheotuoino.js +2 -2
- package/server/modules/reports/rp-congnosapthu.js +4 -4
- package/server/modules/reports/rp-congnosaptra.js +4 -4
- package/server/modules/reports/rp-congviectheobp.js +8 -8
- package/server/modules/reports/rp-congviectheodt.js +8 -9
- package/server/modules/reports/rp-congviectheokh.js +8 -9
- package/server/modules/reports/rp-congviectheonv.js +9 -9
- package/server/modules/reports/rp-congviectheotimeline.js +2 -2
- package/server/modules/reports/rp-ctbanle.js +10 -10
- package/server/modules/reports/rp-ctbanle2.js +19 -19
- package/server/modules/reports/rp-ctbanlectv.js +19 -19
- package/server/modules/reports/rp-ctbanlenpp.js +20 -21
- package/server/modules/reports/rp-ctdanhgianhanvien.js +8 -8
- package/server/modules/reports/rp-cthangbanbitralai.js +1 -1
- package/server/modules/reports/rp-ctmuahang.js +7 -7
- package/server/modules/reports/rp-cttralaihang.js +1 -1
- package/server/modules/reports/rp-databanle.js +10 -10
- package/server/modules/reports/rp-diemthuong.js +1 -1
- package/server/modules/reports/rp-dkcn.js +3 -3
- package/server/modules/reports/rp-dktk.js +1 -1
- package/server/modules/reports/rp-dsnhanviencm.js +9 -9
- package/server/modules/reports/rp-dsnhanvientb.js +9 -9
- package/server/modules/reports/rp-dtbanlekempk.js +2 -2
- package/server/modules/reports/rp-dtbanletheoct.js +19 -19
- package/server/modules/reports/rp-dtbanletheoctkempk.js +23 -24
- package/server/modules/reports/rp-dtbanletheokh.js +20 -20
- package/server/modules/reports/rp-dtbanletheokhnpp.js +10 -11
- package/server/modules/reports/rp-dtbanletheokho.js +18 -18
- package/server/modules/reports/rp-dtbanletheonam.js +1 -1
- package/server/modules/reports/rp-dtbanletheongay.js +1 -1
- package/server/modules/reports/rp-dtbanletheonpp.js +16 -16
- package/server/modules/reports/rp-dtbanletheonv.js +19 -19
- package/server/modules/reports/rp-dtbanletheoquy.js +1 -1
- package/server/modules/reports/rp-dtbanletheosp.js +4 -4
- package/server/modules/reports/rp-dtbanletheospnpp.js +1 -1
- package/server/modules/reports/rp-dtbanletheothang.js +1 -1
- package/server/modules/reports/rp-dtbanletheothungan.js +12 -12
- package/server/modules/reports/rp-dtbanletheovt.js +1 -1
- package/server/modules/reports/rp-dtbanletheovtnpp.js +1 -1
- package/server/modules/reports/rp-dutoanthuchitheodt.js +4 -4
- package/server/modules/reports/rp-getPXC2PNC.js +4 -4
- package/server/modules/reports/rp-getariseofaccountsbymonth.js +2 -2
- package/server/modules/reports/rp-getbtpb.js +5 -5
- package/server/modules/reports/rp-getcashbycashier.js +7 -8
- package/server/modules/reports/rp-getcschietkhau.js +3 -3
- package/server/modules/reports/rp-getdinhmuc4lenhcp.js +1 -1
- package/server/modules/reports/rp-getdinhmuc4pxk.js +1 -1
- package/server/modules/reports/rp-getdk4pht.js +4 -4
- package/server/modules/reports/rp-getdk4pkc.js +7 -7
- package/server/modules/reports/rp-getdttheoca.js +5 -5
- package/server/modules/reports/rp-getinvoice2pay.js +2 -2
- package/server/modules/reports/rp-getinvoice2receive.js +2 -2
- package/server/modules/reports/rp-getinvoice2return.js +5 -5
- package/server/modules/reports/rp-getinvoice2return_bl.js +6 -6
- package/server/modules/reports/rp-getkehoachmh4lenhcp.js +4 -4
- package/server/modules/reports/rp-getkhauhao.js +6 -6
- package/server/modules/reports/rp-getluong.js +1 -1
- package/server/modules/reports/rp-getluongchuyen.js +1 -1
- package/server/modules/reports/rp-getpn2fee.js +5 -5
- package/server/modules/reports/rp-getpn2return.js +5 -5
- package/server/modules/reports/rp-getthanhpham4pnk.js +2 -2
- package/server/modules/reports/rp-getvc2xhd.js +11 -11
- package/server/modules/reports/rp-gt_cpnvltt.js +4 -4
- package/server/modules/reports/rp-hangbanbitralai.js +1 -1
- package/server/modules/reports/rp-hangthanhvien.js +1 -1
- package/server/modules/reports/rp-hoadonbanhangtheohantt.js +1 -1
- package/server/modules/reports/rp-hoadonmuahangtheohantt.js +1 -1
- package/server/modules/reports/rp-hoahong.js +13 -13
- package/server/modules/reports/rp-kcsns.js +19 -21
- package/server/modules/reports/rp-kgchamcong.js +6 -6
- package/server/modules/reports/rp-khoaso.js +8 -9
- package/server/modules/reports/rp-kiemtrasocaitcvssocai.js +1 -1
- package/server/modules/reports/rp-kqdanhgianhanvien.js +5 -5
- package/server/modules/reports/rp-kqhdkd.js +7 -7
- package/server/modules/reports/rp-lcttgt.js +17 -17
- package/server/modules/reports/rp-lctttt.js +11 -11
- package/server/modules/reports/rp-linkslist.js +4 -4
- package/server/modules/reports/rp-phanbochitienchohoadon.js +11 -11
- package/server/modules/reports/rp-phanbothutienchohoadon.js +10 -11
- package/server/modules/reports/rp-ptbitralai.js +6 -6
- package/server/modules/reports/rp-ptcttct.js +14 -14
- package/server/modules/reports/rp-ptdonhang.js +8 -8
- package/server/modules/reports/rp-pttct.js +12 -12
- package/server/modules/reports/rp-pttctkho.js +16 -16
- package/server/modules/reports/rp-pttctkho2.js +14 -14
- package/server/modules/reports/rp-referredusers.js +1 -1
- package/server/modules/reports/rp-sctbhxh.js +2 -2
- package/server/modules/reports/rp-sctcnkh.js +5 -5
- package/server/modules/reports/rp-sctdiem.js +3 -3
- package/server/modules/reports/rp-sctdt.js +5 -5
- package/server/modules/reports/rp-sctdtcp.js +11 -11
- package/server/modules/reports/rp-sctluong.js +2 -2
- package/server/modules/reports/rp-sctthuetncn.js +2 -2
- package/server/modules/reports/rp-scttk.js +6 -6
- package/server/modules/reports/rp-sctvt.js +5 -5
- package/server/modules/reports/rp-sctvt_sl.js +5 -5
- package/server/modules/reports/rp-sctvtnpp.js +6 -6
- package/server/modules/reports/rp-sctvttt.js +5 -5
- package/server/modules/reports/rp-search.js +4 -4
- package/server/modules/reports/rp-socai.js +6 -6
- package/server/modules/reports/rp-socaitk.js +6 -6
- package/server/modules/reports/rp-sochut.js +6 -6
- package/server/modules/reports/rp-sokho.js +7 -8
- package/server/modules/reports/rp-sokhott.js +5 -6
- package/server/modules/reports/rp-sonkbh.js +5 -5
- package/server/modules/reports/rp-sonkc.js +6 -6
- package/server/modules/reports/rp-sonkct.js +5 -5
- package/server/modules/reports/rp-sonkmh.js +5 -5
- package/server/modules/reports/rp-sonktt.js +5 -5
- package/server/modules/reports/rp-soquy.js +11 -12
- package/server/modules/reports/rp-sosanhkhvatt.js +12 -12
- package/server/modules/reports/rp-sosanhkhvatt2.js +6 -7
- package/server/modules/reports/rp-sotaisan.js +11 -12
- package/server/modules/reports/rp-sotiengui.js +6 -6
- package/server/modules/reports/rp-taodinhmuctudkhoc.js +2 -2
- package/server/modules/reports/rp-thbanhangkempk.js +16 -17
- package/server/modules/reports/rp-thdanhgianhanvien.js +9 -9
- package/server/modules/reports/rp-thgt.js +6 -6
- package/server/modules/reports/rp-thnxt.js +10 -10
- package/server/modules/reports/rp-thnxt_sl.js +9 -9
- package/server/modules/reports/rp-thnxtnpp.js +10 -10
- package/server/modules/reports/rp-thnxttt.js +9 -9
- package/server/modules/reports/rp-tkbanhangtheogioithieu.js +9 -9
- package/server/modules/reports/rp-tkgioithieukh.js +3 -3
- package/server/modules/reports/rp-tkgtgt.js +7 -7
- package/server/modules/reports/rp-tmbctc.js +13 -13
- package/server/modules/reports/rp-tonghopbanhang.js +5 -5
- package/server/modules/reports/rp-tonghopmuahang.js +4 -4
- package/server/modules/reports/rp-tonghoptralaihang.js +4 -4
- package/server/modules/reports/rp-tongquanbanle.js +16 -16
- package/server/modules/reports/rp-tongquanbds.js +3 -3
- package/server/modules/reports/rp-tongquancongty.js +5 -5
- package/server/modules/reports/rp-tongquanctvnpp.js +12 -12
- package/server/modules/reports/rp-tongquannvbh.js +12 -12
- package/server/modules/reports/rp-tongquannvnpp.js +1 -1
- package/server/modules/reports/rp-uoctinhnvl.js +11 -11
- package/server/modules/reports/rp-wallet.js +1 -1
- package/server/modules/reports/rpt-tkdiemtichluy.js +8 -8
- package/server/modules/systems/sys-app.js +17 -17
- package/server/modules/systems/sys-colleague.js +3 -3
- package/server/modules/systems/sys-domain.js +1 -1
- package/server/modules/systems/sys-ecomproductlines.js +1 -1
- package/server/modules/systems/sys-exportexceltemplate.js +1 -1
- package/server/modules/systems/sys-fieldright.js +1 -1
- package/server/modules/systems/sys-importexceltemplate.js +1 -1
- package/server/modules/systems/sys-labelinfo.js +2 -2
- package/server/modules/systems/sys-listinfo.js +8 -8
- package/server/modules/systems/sys-menuinfo.js +1 -1
- package/server/modules/systems/sys-message.js +7 -7
- package/server/modules/systems/sys-moduleinfo.js +1 -1
- package/server/modules/systems/sys-notification.js +4 -4
- package/server/modules/systems/sys-quanhuyen.js +1 -1
- package/server/modules/systems/sys-reportinfo.js +2 -2
- package/server/modules/systems/sys-rptobject.js +1 -1
- package/server/modules/systems/sys-schedule.js +2 -2
- package/server/modules/systems/sys-sysconfig.js +1 -1
- package/server/modules/systems/sys-sysgroup.js +1 -1
- package/server/modules/systems/sys-tableinfo.js +1 -1
- package/server/modules/systems/sys-templatestore.js +2 -2
- package/server/modules/systems/sys-tinhthanh.js +1 -1
- package/server/modules/systems/sys-token.js +1 -1
- package/server/modules/systems/sys-trangthai.js +2 -2
- package/server/modules/systems/sys-trialinfo.js +1 -1
- package/server/modules/systems/sys-user.js +37 -39
- package/server/modules/systems/sys-users.js +2 -2
- package/server/modules/systems/sys-versioninfo.js +1 -1
- package/server/modules/systems/sys-vietqrbanks.js +1 -1
- package/server/modules/systems/sys-xaphuong.js +1 -1
- package/server/modules/vouchers/vo-banggiaban.js +5 -5
- package/server/modules/vouchers/vo-bc1.js +30 -30
- package/server/modules/vouchers/vo-bc5.js +9 -9
- package/server/modules/vouchers/vo-bg1.js +2 -2
- package/server/modules/vouchers/vo-bg2.js +4 -5
- package/server/modules/vouchers/vo-bn1.js +27 -27
- package/server/modules/vouchers/vo-bn5.js +9 -9
- package/server/modules/vouchers/vo-dh2.js +29 -29
- package/server/modules/vouchers/vo-dinhmucsx.js +1 -1
- package/server/modules/vouchers/vo-dkb.js +6 -6
- package/server/modules/vouchers/vo-dn0.js +3 -3
- package/server/modules/vouchers/vo-dnm.js +6 -6
- package/server/modules/vouchers/vo-hd1.js +30 -30
- package/server/modules/vouchers/vo-hd2.js +102 -104
- package/server/modules/vouchers/vo-hd3.js +43 -46
- package/server/modules/vouchers/vo-hd4.js +13 -15
- package/server/modules/vouchers/vo-hd7.js +29 -31
- package/server/modules/vouchers/vo-hd8.js +10 -10
- package/server/modules/vouchers/vo-hde.js +39 -40
- package/server/modules/vouchers/vo-htl.js +4 -4
- package/server/modules/vouchers/vo-kbbtpb.js +1 -1
- package/server/modules/vouchers/vo-kehoachmh.js +9 -9
- package/server/modules/vouchers/vo-lenhcapphat.js +4 -4
- package/server/modules/vouchers/vo-lenhsx.js +11 -11
- package/server/modules/vouchers/vo-pbl.js +73 -74
- package/server/modules/vouchers/vo-pc0.js +4 -4
- package/server/modules/vouchers/vo-pc1.js +25 -26
- package/server/modules/vouchers/vo-pc2.js +19 -20
- package/server/modules/vouchers/vo-pc3.js +4 -4
- package/server/modules/vouchers/vo-pc5.js +9 -9
- package/server/modules/vouchers/vo-pc6.js +17 -17
- package/server/modules/vouchers/vo-pcl.js +7 -8
- package/server/modules/vouchers/vo-pdn.js +6 -6
- package/server/modules/vouchers/vo-pdx.js +2 -2
- package/server/modules/vouchers/vo-pgh.js +18 -18
- package/server/modules/vouchers/vo-pht.js +3 -4
- package/server/modules/vouchers/vo-pkc.js +6 -6
- package/server/modules/vouchers/vo-pkh.js +7 -7
- package/server/modules/vouchers/vo-pkk.js +12 -12
- package/server/modules/vouchers/vo-pkt.js +6 -6
- package/server/modules/vouchers/vo-pn1.js +33 -34
- package/server/modules/vouchers/vo-pn2.js +15 -16
- package/server/modules/vouchers/vo-pn3.js +17 -18
- package/server/modules/vouchers/vo-pn5.js +19 -19
- package/server/modules/vouchers/vo-pn6.js +9 -9
- package/server/modules/vouchers/vo-pn9.js +22 -23
- package/server/modules/vouchers/vo-pnc.js +19 -20
- package/server/modules/vouchers/vo-pnh.js +19 -19
- package/server/modules/vouchers/vo-pnk.js +14 -15
- package/server/modules/vouchers/vo-pnknpp.js +12 -13
- package/server/modules/vouchers/vo-po1.js +14 -14
- package/server/modules/vouchers/vo-ppb.js +7 -7
- package/server/modules/vouchers/vo-pt1.js +21 -21
- package/server/modules/vouchers/vo-pt5.js +3 -3
- package/server/modules/vouchers/vo-ptl.js +8 -8
- package/server/modules/vouchers/vo-purchase_contract.js +2 -2
- package/server/modules/vouchers/vo-pxc.js +22 -23
- package/server/modules/vouchers/vo-pxh.js +27 -27
- package/server/modules/vouchers/vo-pxk.js +14 -14
- package/server/modules/vouchers/vo-pxknpp.js +8 -8
- package/server/modules/vouchers/vo-qts.js +4 -5
- package/server/modules/vouchers/vo-sale_contract.js +5 -5
- package/server/modules/vouchers/vo-shipbook.js +17 -17
- package/server/modules/vouchers/vo-so1.js +78 -78
- package/server/modules/vouchers/vo-so2.js +26 -26
- package/server/modules/vouchers/vo-so3.js +17 -17
- package/server/modules/vouchers/vo-so5.js +44 -45
- package/server/modules/vouchers/vo-so7.js +90 -91
- package/server/modules/vouchers/vo-so9.js +91 -92
- package/server/modules/vouchers/vo-vanchuyen.js +13 -13
- package/server/modules/vouchers/vo-xhd.js +23 -24
- package/server/route.js +48 -49
- package/server/services/invoiceFetcher.js +1 -1
- package/server/sslConfig.js +2 -2
- package/server/transactionMiddleware.js +2 -2
- package/server/workers/backupApp.js +7 -7
- package/server/workers/calcGrid.js +3 -3
- package/server/workers/customerOnImport.js +3 -3
- package/server/workers/dmvtOnImport.js +5 -5
- package/server/workers/excelParser.js +6 -6
- package/server/workers/inputWorker.js +2 -2
- package/server/workers/pushNotify.js +7 -7
- package/server/workers/reportWorker.js +2 -2
- package/server/workers/restoreApp.js +17 -17
- package/server/workers/runScript.js +2 -3
- package/server/workers/sendEmail.js +12 -12
- 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.
|
|
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": "^
|
|
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
|
-
|
|
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
|
|
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
|
|
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={})
|
|
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
|
|
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()
|
|
13
|
-
require("sticky-session")
|
|
14
|
-
global.port))$cpus_report_cpus_server_sslConfig$$.once("listening",function(){console.log("[app] server started on",global.port)});$StaticPool
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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;
|
package/server/auths/bearer.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
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(
|
|
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$$})})}))};
|
package/server/auths/facebook.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
|
|
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
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
$user$$.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
$
|
|
12
|
-
($
|
|
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$$)})})})};
|
package/server/auths/google.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
|
|
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
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
$
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
$
|
|
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$$)})})})};
|
package/server/auths/local.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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$$)
|
|
15
|
-
$user$$)})})}));$app
|
|
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 $
|
|
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$$,$
|
|
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 $
|
|
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:$
|
|
23
|
-
|
|
24
|
-
$e$$),$res$$.status(400).send({error:$
|
|
25
|
-
|
|
26
|
-
configs.sms.genUrlSendOTP($phone$$,$
|
|
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: ${$
|
|
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
|
|
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
|
|
33
|
-
$app
|
|
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
|
|
35
|
-
$authorization_password$$=Buffer.from($authorization_password$$.replace("Basic ",""),"base64").toString("utf-8");$authorization_password$$=$authorization_password$$.split(":");if(
|
|
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"]
|
|
41
|
-
$req$$.session
|
|
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{
|
|
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$$);
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
11
|
-
|
|
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
|
|
14
|
-
|
|
15
|
-
|
|
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(
|
|
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)
|
|
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$$)})};
|