a2c79993283b22f36b07f81522734581afa47c49
[motion2.git] / server / api / user / user.model.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x4986=['forEach','Status','setDataValue','bluebird','crypto','util','lodash','jayson/promise','google','length','system','format','%s%s','prefix','Set','CDR(type)=%s','chanspy','record','push','merge','MixMonitor','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','StopMixMonitor','wav','WAV','gsm','context','from-sip','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','internal','concat','catch','models','define','users','utf8_bin','undefined','resolve','find','then','privacyEnabled','updateMd5Password','updatePassword','changed','userProfileId','UserProfile','userSetting','createUserSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','pbkdf2Sync','sha1','toString','pbkdf2','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','voice','findAll','findOne','channel','isArray','map','update','YYYY-MM-DD\x20HH:mm:ss','voicePause','smsPause','whatsappPause','getRealtimeData','../../config/utils','getChannels'];(function(_0x2b6898,_0x3447ff){var _0x37c84b=function(_0x75d5c6){while(--_0x75d5c6){_0x2b6898['push'](_0x2b6898['shift']());}};_0x37c84b(++_0x3447ff);}(_0x4986,0x6e));var _0x6498=function(_0x28c9d4,_0x211960){_0x28c9d4=_0x28c9d4-0x0;var _0x55a434=_0x4986[_0x28c9d4];return _0x55a434;};'use strict';var BPromise=require(_0x6498('0x0'));var crypto=require(_0x6498('0x1'));var util=require(_0x6498('0x2'));var md5=require('md5');var moment=require('moment');var _=require(_0x6498('0x3'));var jayson=require(_0x6498('0x4'));var attributes=require('./user.attributes');var authTypes=[_0x6498('0x5')];var validatePresenceOf=function(_0x12a6fb){return _0x12a6fb&&_0x12a6fb[_0x6498('0x6')];};var getChanSpyApplications=function(_0x10967e,_0x117a31,_0x8d1853){var _0x26476d={'context':_0x10967e['context']||'from-sip','type':_0x6498('0x7'),'isApp':![],'UserId':_0x10967e['id']};var _0x2472af=[];for(var _0x16c587=0x0,_0x465333=0x1;_0x16c587<_0x8d1853[_0x6498('0x6')];_0x16c587++,_0x465333=0x1){var _0x5f14e4={'exten':util[_0x6498('0x8')](_0x6498('0x9'),_0x8d1853[_0x16c587][_0x6498('0xa')],_0x117a31),'ChanSpyId':_0x8d1853[_0x16c587]['id']};_0x2472af['push'](_['merge']({'app':_0x6498('0xb'),'appdata':util['format'](_0x6498('0xc'),_0x6498('0xd')),'priority':_0x465333++},_0x26476d,_0x5f14e4));if(_0x8d1853[_0x16c587][_0x6498('0xe')]){_0x2472af[_0x6498('0xf')](_[_0x6498('0x10')]({'app':_0x6498('0x11'),'appdata':util[_0x6498('0x8')]('${UNIQUEID}.%s,a',_0x8d1853[_0x16c587]['recordingFormat']),'priority':_0x465333++},_0x26476d,_0x5f14e4));}if(_0x8d1853[_0x16c587][_0x6498('0x12')]){_0x2472af[_0x6498('0xf')](_[_0x6498('0x10')]({'app':_0x6498('0x13'),'appdata':_0x8d1853[_0x16c587][_0x6498('0x14')],'priority':_0x465333++},_0x26476d,_0x5f14e4));}_0x2472af['push'](_[_0x6498('0x10')]({'app':_0x6498('0x15'),'appdata':util[_0x6498('0x8')](_0x6498('0x16'),_0x10967e[_0x6498('0x17')],_0x8d1853[_0x16c587][_0x6498('0x18')]?_0x8d1853[_0x16c587][_0x6498('0x18')]['join'](''):''),'priority':_0x465333++},_0x26476d,_0x5f14e4));if(_0x8d1853[_0x16c587][_0x6498('0xe')]){_0x2472af[_0x6498('0xf')](_[_0x6498('0x10')]({'app':_0x6498('0x19'),'priority':_0x465333++},_0x26476d,_0x5f14e4));}}return _0x2472af;};var getUserApplications=function(_0x98b51c,_0x5ce1fc){var _0x4a5466=[_0x6498('0x1a'),_0x6498('0x1b'),_0x6498('0x1c')];var _0x39ee79={'context':_0x98b51c[_0x6498('0x1d')]||_0x6498('0x1e'),'exten':_0x5ce1fc,'type':_0x6498('0x7'),'isApp':![],'UserId':_0x98b51c['id']};var _0x37f874=[{'app':_0x6498('0xb'),'appdata':_0x6498('0x1f')}];if(_0x98b51c[_0x6498('0x20')]&&_[_0x6498('0x21')](_0x4a5466,_0x98b51c[_0x6498('0x20')])){_0x37f874[_0x6498('0xf')]({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x37f874[_0x6498('0xf')]({'app':'Set','appdata':util[_0x6498('0x8')](_0x6498('0x22'),_0x98b51c[_0x6498('0x20')])});_0x37f874[_0x6498('0xf')]({'app':'Dial','appdata':util['format'](_0x6498('0x23'),_0x98b51c['name'])});}else{_0x37f874[_0x6498('0xf')]({'app':_0x6498('0x24'),'appdata':util[_0x6498('0x8')](_0x6498('0x25'),_0x98b51c[_0x6498('0x17')])});}_0x37f874[_0x6498('0xf')]({'app':_0x6498('0x26')});for(var _0x26f01f=0x0;_0x26f01f<_0x37f874[_0x6498('0x6')];_0x26f01f++){_0x37f874[_0x26f01f][_0x6498('0x27')]=_0x26f01f+0x1;_0x37f874[_0x26f01f]=_[_0x6498('0x28')](_0x37f874[_0x26f01f],_0x39ee79);}return _0x37f874;};var getChanSpyPromise=function(_0x3c80da,_0x64df19){return new BPromise(function(_0x4be06f,_0x12c9d2){return _0x3c80da[_0x6498('0x29')]['findAll']()['then'](function(_0x4e93d1){if(_0x4e93d1){var _0x568a60=getChanSpyApplications(_0x64df19,_0x64df19[_0x6498('0x2a')],_0x4e93d1);if(_0x64df19[_0x6498('0x2a')]!=_0x64df19[_0x6498('0x17')]){_0x568a60=_0x568a60[_0x6498('0x2b')](getChanSpyApplications(_0x64df19,_0x64df19['name'],_0x4e93d1));}return _0x4be06f(_0x568a60);}return _0x4be06f([]);})[_0x6498('0x2c')](function(_0x49a065){_0x12c9d2(_0x49a065);});});};module['exports']=function(_0x49c4fd){var _0x565975=_0x49c4fd[_0x6498('0x2d')];return _0x49c4fd[_0x6498('0x2e')]('User',attributes,{'tableName':_0x6498('0x2f'),'charset':'utf8','collate':_0x6498('0x30'),'hooks':{'beforeCreate':function(_0x23c651,_0x4c5a32,_0x48ba59){var _0x2539d6=typeof _0x23c651['userProfileId']===_0x6498('0x31')?BPromise[_0x6498('0x32')](null):_0x565975['UserProfile'][_0x6498('0x33')]({'where':{'id':_0x23c651['userProfileId']}});_0x2539d6[_0x6498('0x34')](function(_0x340827){if(_0x340827){_0x23c651[_0x6498('0x35')]=_0x340827[_0x6498('0x35')];}})[_0x6498('0x34')](function(){_0x23c651[_0x6498('0x36')]();_0x23c651[_0x6498('0x37')](_0x48ba59);})['catch'](function(_0xb107aa){_0x48ba59(_0xb107aa);});},'beforeUpdate':function(_0x5b340e,_0x2548b8,_0x5b5089){Promise[_0x6498('0x32')]()['then'](function(){if(_0x5b340e[_0x6498('0x38')](_0x6498('0x39'))===![])return;return _0x565975[_0x6498('0x3a')][_0x6498('0x33')]({'where':{'id':_0x5b340e[_0x6498('0x39')]}})[_0x6498('0x34')](function(_0x152b1c){if(_0x152b1c)_0x5b340e['privacyEnabled']=_0x152b1c[_0x6498('0x35')];return;});})[_0x6498('0x34')](function(){if(_0x5b340e[_0x6498('0x38')](_0x6498('0x14'))){_0x5b340e[_0x6498('0x36')]();return _0x5b340e[_0x6498('0x37')](_0x5b5089);}_0x5b5089();})[_0x6498('0x2c')](function(_0x427964){_0x5b5089(_0x427964);});},'afterCreate':function(_0x5bce22,_0x1be696,_0xfdc59d){var _0x423b1a=getUserApplications(_0x5bce22,_0x5bce22['internal']);if(_0x5bce22[_0x6498('0x2a')]!=_0x5bce22[_0x6498('0x17')]){_0x423b1a=_0x423b1a[_0x6498('0x2b')](getUserApplications(_0x5bce22,_0x5bce22[_0x6498('0x17')]));}return Promise[_0x6498('0x32')]()[_0x6498('0x34')](function(){if(!_0x5bce22[_0x6498('0x3b')]){return _0x5bce22[_0x6498('0x3c')]({'clientSideLoggingLevel':_0x6498('0x3d'),'clientSideLoggingEnabled':![]});}})[_0x6498('0x34')](function(){return _0x565975[_0x6498('0x3e')][_0x6498('0x3f')](_0x423b1a);})['then'](function(){if(_0x5bce22['chanspy']){return getChanSpyPromise(_0x565975,_0x5bce22);}})['then'](function(_0x2b98dd){if(_0x2b98dd&&_0x2b98dd[_0x6498('0x6')]){return _0x565975[_0x6498('0x3e')][_0x6498('0x3f')](_0x2b98dd);}})[_0x6498('0x34')](function(){_0xfdc59d();})[_0x6498('0x2c')](function(_0x3cc682){_0xfdc59d(_0x3cc682);});},'afterUpdate':function(_0x5033e3,_0x1cf077,_0x15b5ee){return BPromise[_0x6498('0x32')]()[_0x6498('0x34')](function(){if(_0x5033e3[_0x6498('0x38')](_0x6498('0xd'))||_0x5033e3['changed'](_0x6498('0x1d'))){return _0x565975[_0x6498('0x3e')]['destroy']({'where':{'UserId':_0x5033e3['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x6498('0x34')](function(){if(_0x5033e3[_0x6498('0xd')]){return getChanSpyPromise(_0x565975,_0x5033e3)[_0x6498('0x34')](function(_0x4d2f1f){if(_0x4d2f1f&&_0x4d2f1f['length']){return _0x565975[_0x6498('0x3e')]['bulkCreate'](_0x4d2f1f);}});}});}})[_0x6498('0x34')](function(){if(_0x5033e3[_0x6498('0x38')](_0x6498('0x20'))||_0x5033e3[_0x6498('0x38')](_0x6498('0x1d'))){return _0x565975[_0x6498('0x3e')]['destroy']({'where':{'UserId':_0x5033e3['id'],'type':_0x6498('0x7'),'ChanSpyId':null}})[_0x6498('0x34')](function(){var _0x1e2da7=getUserApplications(_0x5033e3,_0x5033e3[_0x6498('0x2a')]);if(_0x5033e3['internal']!=_0x5033e3[_0x6498('0x17')]){_0x1e2da7=_0x1e2da7[_0x6498('0x2b')](getUserApplications(_0x5033e3,_0x5033e3[_0x6498('0x17')]));}return _0x565975[_0x6498('0x3e')][_0x6498('0x3f')](_0x1e2da7);});}})[_0x6498('0x34')](function(){_0x15b5ee();})[_0x6498('0x2c')](function(_0x3b2441){_0x15b5ee(_0x3b2441);});},'afterDestroy':function(_0x4c78d3){return _0x565975[_0x6498('0x3e')][_0x6498('0x40')]({'where':{'UserId':_0x4c78d3['id'],'type':_0x6498('0x7')}});}},'instanceMethods':{'authenticate':function(_0x30d30b,_0x125a14){if(!_0x125a14){return this[_0x6498('0x14')]===this[_0x6498('0x41')](_0x30d30b);}var _0x3372f0=this;this[_0x6498('0x41')](_0x30d30b,function(_0x21722e,_0x12ed8d){if(_0x21722e){_0x125a14(_0x21722e);}if(_0x3372f0[_0x6498('0x14')]===_0x12ed8d){_0x125a14(null,!![]);}else{_0x125a14(null,![]);}});},'makeSalt':function(_0x1d9dbe,_0x15878d){var _0x4650ea=0x10;if(typeof arguments[0x0]===_0x6498('0x42')){_0x15878d=arguments[0x0];_0x1d9dbe=_0x4650ea;}else if(typeof arguments[0x1]===_0x6498('0x42')){_0x15878d=arguments[0x1];}else{throw new Error(_0x6498('0x43'));}if(!_0x1d9dbe){_0x1d9dbe=_0x4650ea;}return crypto[_0x6498('0x44')](_0x1d9dbe,function(_0xbfa0ab,_0x53f16){if(_0xbfa0ab){_0x15878d(_0xbfa0ab);}return _0x15878d(null,_0x53f16['toString'](_0x6498('0x45')));});},'encryptPassword':function(_0x2d4e68,_0x3d531c){if(!_0x2d4e68||!this[_0x6498('0x46')]){return _0x3d531c?_0x3d531c(null):null;}var _0x15d2f8=0x2710;var _0x24083a=0x40;var _0x5ab08c=Buffer['from'](this[_0x6498('0x46')],'base64');if(!_0x3d531c){return crypto[_0x6498('0x47')](_0x2d4e68,_0x5ab08c,_0x15d2f8,_0x24083a,_0x6498('0x48'))[_0x6498('0x49')](_0x6498('0x45'));}return crypto[_0x6498('0x4a')](_0x2d4e68,_0x5ab08c,_0x15d2f8,_0x24083a,'sha1',function(_0x3b0dc0,_0x2d6b56){if(_0x3b0dc0){_0x3d531c(_0x3b0dc0);}return _0x3d531c(null,_0x2d6b56[_0x6498('0x49')](_0x6498('0x45')));});},'updatePassword':function(_0x487676){if(!this['password']){return _0x487676(null);}if(!validatePresenceOf(this[_0x6498('0x14')])&&authTypes['indexOf'](this[_0x6498('0x4b')])===-0x1){_0x487676(new Error(_0x6498('0x4c')));}var _0x71c046=this;this[_0x6498('0x4d')](function(_0x1b87fe,_0x1af361){if(_0x1b87fe){return _0x487676(_0x1b87fe);}_0x71c046[_0x6498('0x46')]=_0x1af361;_0x71c046[_0x6498('0x41')](_0x71c046['password'],function(_0x2a4130,_0x23e0f2){if(_0x2a4130){_0x487676(_0x2a4130);}_0x71c046[_0x6498('0x14')]=_0x23e0f2;_0x487676(null);});});},'updateMd5Password':function(){this[_0x6498('0x4e')]=md5(this['name']+_0x6498('0x4f')+this['password']);return this[_0x6498('0x4e')];},'getRealtimeData':function(){var _0x4af617={'id':this['id']};var _0x463127=jayson[_0x6498('0x50')]['http']({'port':0x232a});var _0x4b75b0=jayson['client'][_0x6498('0x51')]({'port':0x232c});var _0x3a2c33={};var _0x5a9373={};return _0x463127[_0x6498('0x52')](_0x6498('0x53'),_0x4af617)['then'](function(_0x5eccb8){if(_0x5eccb8[_0x6498('0x3d')]){throw new Error(_0x6498('0x54'));}_0x3a2c33=_0x5eccb8[_0x6498('0x55')];return _0x4b75b0[_0x6498('0x52')](_0x6498('0x53'),_0x4af617);})[_0x6498('0x34')](function(_0xe61382){if(_0xe61382[_0x6498('0x3d')]){throw new Error(_0x6498('0x56'));}_0x5a9373=_0xe61382['result'];var _0x4ecf78=_[_0x6498('0x10')]({},_0x3a2c33,_0x5a9373);return _0x4ecf78;})[_0x6498('0x2c')](function(_0x4f47a5){throw _0x4f47a5;});},'unpause':function(_0x1e9643,_0x2cb2c2=_0x6498('0x57')){var _0x475607=this;var _0x3d49a4={};return Promise[_0x6498('0x32')]()['then'](function(){if(!_0x1e9643||_0x1e9643==='voice'&&_0x2cb2c2==='manual'){var _0x1bd50b=jayson[_0x6498('0x50')]['http']({'port':0x232a});return _0x1bd50b[_0x6498('0x52')](_0x6498('0x58'),{'id':_0x475607['id'],'name':_0x475607[_0x6498('0x17')],'pause':![]})[_0x6498('0x34')](function(_0x318573){if(_0x318573[_0x6498('0x3d')]){throw new Error(util[_0x6498('0x8')](_0x6498('0x59'),_0x475607['id'],_0x475607[_0x6498('0x17')]));}return _0x318573[_0x6498('0x55')]['message'];});}})[_0x6498('0x34')](function(){if(!_0x1e9643||_0x1e9643===_0x6498('0x5a')){return _0x565975['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x475607['id']},'individualHooks':!![]});}})['then'](function(){var _0x59ee2d=!_0x1e9643?_0x6498('0x5b'):_0x6498('0x5c');var _0x43296a={'membername':_0x475607[_0x6498('0x17')],'type':'PAUSE','exitAt':null};if(_0x1e9643){_0x43296a[_0x6498('0x5d')]=_0x1e9643;}return _0x565975['MemberReport'][_0x59ee2d]({'where':_0x43296a});})[_0x6498('0x34')](function(_0x167498){if(_0x167498){var _0x467472=Array[_0x6498('0x5e')](_0x167498)?_0x167498:[_0x167498];var _0x281115=_0x467472[_0x6498('0x5f')](function(_0x1cea93){return _0x1cea93[_0x6498('0x60')]({'exitAt':moment()[_0x6498('0x8')](_0x6498('0x61')),'data2':_0x2cb2c2});});return Promise['all'](_0x281115);}})[_0x6498('0x34')](function(){if(!_0x1e9643){_0x3d49a4[_0x6498('0x62')]=![];_0x3d49a4['mailPause']=![];_0x3d49a4['chatPause']=![];_0x3d49a4['faxPause']=![];_0x3d49a4[_0x6498('0x63')]=![];_0x3d49a4[_0x6498('0x64')]=![];_0x3d49a4['openchannelPause']=![];}else{_0x3d49a4[_0x1e9643+'Pause']=![];}return _0x475607[_0x6498('0x65')]();})[_0x6498('0x34')](function(_0x42c894){var _0x5024dc=require(_0x6498('0x66'));var _0x46f1b0=_0x5024dc[_0x6498('0x67')]();_0x46f1b0[_0x6498('0x68')](function(_0x3f0e36){var _0x11d3a7=_0x3f0e36+_0x6498('0x69');_0x475607[_0x6498('0x6a')]([_0x11d3a7],_0x42c894[_0x11d3a7]);});return _0x475607['update'](_0x3d49a4);})[_0x6498('0x2c')](function(_0x3c96a4){throw _0x3c96a4;});}}});};