f5b02c6a278a8520995906e998b5ed7decf77db7
[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 _0x2b37=['SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','models','users','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','privacyEnabled','updateMd5Password','changed','find','updatePassword','createUserSetting','VoiceExtension','bulkCreate','length','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','from','pbkdf2Sync','sha1','pbkdf2','indexOf','Invalid\x20password','makeSalt','md5secret',':asterisk:','client','http','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','request','error','manual','voice','QueuePause','message','UserVoiceQueueRt','findOne','channel','MemberReport','isArray','update','YYYY-MM-DD\x20HH:mm:ss','voicePause','mailPause','chatPause','faxPause','smsPause','whatsappPause','Pause','../../config/utils','getChannels','forEach','setDataValue','bluebird','crypto','util','md5','moment','lodash','jayson/promise','./user.attributes','google','context','from-sip','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','record','StopMixMonitor','wav','WAV','system','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)'];(function(_0xf442ac,_0x8adc8d){var _0x4b5128=function(_0x54ad7c){while(--_0x54ad7c){_0xf442ac['push'](_0xf442ac['shift']());}};_0x4b5128(++_0x8adc8d);}(_0x2b37,0x12b));var _0x72b3=function(_0x3f817e,_0x538f27){_0x3f817e=_0x3f817e-0x0;var _0x3c5602=_0x2b37[_0x3f817e];return _0x3c5602;};'use strict';var BPromise=require(_0x72b3('0x0'));var crypto=require(_0x72b3('0x1'));var util=require(_0x72b3('0x2'));var md5=require(_0x72b3('0x3'));var moment=require(_0x72b3('0x4'));var _=require(_0x72b3('0x5'));var jayson=require(_0x72b3('0x6'));var attributes=require(_0x72b3('0x7'));var authTypes=[_0x72b3('0x8')];var validatePresenceOf=function(_0x19b6bc){return _0x19b6bc&&_0x19b6bc['length'];};var getChanSpyApplications=function(_0x15e3a9,_0x2ab374,_0x50bccb){var _0x2e8764={'context':_0x15e3a9[_0x72b3('0x9')]||_0x72b3('0xa'),'type':'system','isApp':![],'UserId':_0x15e3a9['id']};var _0x1ffab4=[];for(var _0x133aa3=0x0,_0x102e97=0x1;_0x133aa3<_0x50bccb['length'];_0x133aa3++,_0x102e97=0x1){var _0x3499dc={'exten':util[_0x72b3('0xb')](_0x72b3('0xc'),_0x50bccb[_0x133aa3][_0x72b3('0xd')],_0x2ab374),'ChanSpyId':_0x50bccb[_0x133aa3]['id']};_0x1ffab4[_0x72b3('0xe')](_[_0x72b3('0xf')]({'app':_0x72b3('0x10'),'appdata':util['format'](_0x72b3('0x11'),_0x72b3('0x12')),'priority':_0x102e97++},_0x2e8764,_0x3499dc));if(_0x50bccb[_0x133aa3]['record']){_0x1ffab4[_0x72b3('0xe')](_['merge']({'app':'MixMonitor','appdata':util[_0x72b3('0xb')](_0x72b3('0x13'),_0x50bccb[_0x133aa3][_0x72b3('0x14')]),'priority':_0x102e97++},_0x2e8764,_0x3499dc));}if(_0x50bccb[_0x133aa3][_0x72b3('0x15')]){_0x1ffab4[_0x72b3('0xe')](_[_0x72b3('0xf')]({'app':_0x72b3('0x16'),'appdata':_0x50bccb[_0x133aa3][_0x72b3('0x17')],'priority':_0x102e97++},_0x2e8764,_0x3499dc));}_0x1ffab4[_0x72b3('0xe')](_[_0x72b3('0xf')]({'app':_0x72b3('0x18'),'appdata':util['format'](_0x72b3('0x19'),_0x15e3a9[_0x72b3('0x1a')],_0x50bccb[_0x133aa3][_0x72b3('0x1b')]?_0x50bccb[_0x133aa3][_0x72b3('0x1b')][_0x72b3('0x1c')](''):''),'priority':_0x102e97++},_0x2e8764,_0x3499dc));if(_0x50bccb[_0x133aa3][_0x72b3('0x1d')]){_0x1ffab4[_0x72b3('0xe')](_['merge']({'app':_0x72b3('0x1e'),'priority':_0x102e97++},_0x2e8764,_0x3499dc));}}return _0x1ffab4;};var getUserApplications=function(_0x7f102,_0x366324){var _0x1e1f43=[_0x72b3('0x1f'),_0x72b3('0x20'),'gsm'];var _0x3a914b={'context':_0x7f102['context']||_0x72b3('0xa'),'exten':_0x366324,'type':_0x72b3('0x21'),'isApp':![],'UserId':_0x7f102['id']};var _0x255e8a=[{'app':_0x72b3('0x10'),'appdata':_0x72b3('0x22')}];if(_0x7f102['extensionMonitor']&&_['includes'](_0x1e1f43,_0x7f102[_0x72b3('0x23')])){_0x255e8a[_0x72b3('0xe')]({'app':_0x72b3('0x10'),'appdata':_0x72b3('0x24')});_0x255e8a[_0x72b3('0xe')]({'app':_0x72b3('0x10'),'appdata':util[_0x72b3('0xb')](_0x72b3('0x25'),_0x7f102['extensionMonitor'])});_0x255e8a['push']({'app':_0x72b3('0x26'),'appdata':util[_0x72b3('0xb')](_0x72b3('0x27'),_0x7f102[_0x72b3('0x1a')])});}else{_0x255e8a[_0x72b3('0xe')]({'app':'Dial','appdata':util[_0x72b3('0xb')](_0x72b3('0x28'),_0x7f102['name'])});}_0x255e8a[_0x72b3('0xe')]({'app':_0x72b3('0x29')});for(var _0x44d3b2=0x0;_0x44d3b2<_0x255e8a['length'];_0x44d3b2++){_0x255e8a[_0x44d3b2][_0x72b3('0x2a')]=_0x44d3b2+0x1;_0x255e8a[_0x44d3b2]=_[_0x72b3('0x2b')](_0x255e8a[_0x44d3b2],_0x3a914b);}return _0x255e8a;};var getChanSpyPromise=function(_0x209f10,_0x546dfd){return new BPromise(function(_0xfa238c,_0x19afed){return _0x209f10[_0x72b3('0x2c')][_0x72b3('0x2d')]()[_0x72b3('0x2e')](function(_0x1f2ec9){if(_0x1f2ec9){var _0x354a39=getChanSpyApplications(_0x546dfd,_0x546dfd[_0x72b3('0x2f')],_0x1f2ec9);if(_0x546dfd[_0x72b3('0x2f')]!=_0x546dfd['name']){_0x354a39=_0x354a39[_0x72b3('0x30')](getChanSpyApplications(_0x546dfd,_0x546dfd[_0x72b3('0x1a')],_0x1f2ec9));}return _0xfa238c(_0x354a39);}return _0xfa238c([]);})[_0x72b3('0x31')](function(_0x51d1fa){_0x19afed(_0x51d1fa);});});};module['exports']=function(_0x2b2037){var _0x273739=_0x2b2037[_0x72b3('0x32')];return _0x2b2037['define']('User',attributes,{'tableName':_0x72b3('0x33'),'charset':_0x72b3('0x34'),'collate':_0x72b3('0x35'),'hooks':{'beforeCreate':function(_0x132761,_0x23ce77,_0x8b44c2){var _0x440ce1=typeof _0x132761[_0x72b3('0x36')]===_0x72b3('0x37')?BPromise[_0x72b3('0x38')](null):_0x273739[_0x72b3('0x39')]['find']({'where':{'id':_0x132761[_0x72b3('0x36')]}});_0x440ce1[_0x72b3('0x2e')](function(_0x4533d5){if(_0x4533d5){_0x132761[_0x72b3('0x3a')]=_0x4533d5[_0x72b3('0x3a')];}})[_0x72b3('0x2e')](function(){_0x132761[_0x72b3('0x3b')]();_0x132761['updatePassword'](_0x8b44c2);})[_0x72b3('0x31')](function(_0x3003d0){_0x8b44c2(_0x3003d0);});},'beforeUpdate':function(_0x4b8a82,_0x40d4b0,_0x57200c){Promise[_0x72b3('0x38')]()[_0x72b3('0x2e')](function(){if(_0x4b8a82[_0x72b3('0x3c')]('userProfileId')===![])return;return _0x273739[_0x72b3('0x39')][_0x72b3('0x3d')]({'where':{'id':_0x4b8a82[_0x72b3('0x36')]}})[_0x72b3('0x2e')](function(_0x501772){if(_0x501772)_0x4b8a82[_0x72b3('0x3a')]=_0x501772['privacyEnabled'];return;});})[_0x72b3('0x2e')](function(){if(_0x4b8a82[_0x72b3('0x3c')](_0x72b3('0x17'))){_0x4b8a82[_0x72b3('0x3b')]();return _0x4b8a82[_0x72b3('0x3e')](_0x57200c);}_0x57200c();})['catch'](function(_0x1a6dbb){_0x57200c(_0x1a6dbb);});},'afterCreate':function(_0x59d3db,_0x529a09,_0x13529a){var _0x1b372a=getUserApplications(_0x59d3db,_0x59d3db[_0x72b3('0x2f')]);if(_0x59d3db[_0x72b3('0x2f')]!=_0x59d3db[_0x72b3('0x1a')]){_0x1b372a=_0x1b372a['concat'](getUserApplications(_0x59d3db,_0x59d3db[_0x72b3('0x1a')]));}return Promise['resolve']()[_0x72b3('0x2e')](function(){if(!_0x59d3db['userSetting']){return _0x59d3db[_0x72b3('0x3f')]({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})['then'](function(){return _0x273739[_0x72b3('0x40')][_0x72b3('0x41')](_0x1b372a);})[_0x72b3('0x2e')](function(){if(_0x59d3db[_0x72b3('0x12')]){return getChanSpyPromise(_0x273739,_0x59d3db);}})[_0x72b3('0x2e')](function(_0x43196e){if(_0x43196e&&_0x43196e[_0x72b3('0x42')]){return _0x273739[_0x72b3('0x40')][_0x72b3('0x41')](_0x43196e);}})[_0x72b3('0x2e')](function(){_0x13529a();})[_0x72b3('0x31')](function(_0x2b8c1a){_0x13529a(_0x2b8c1a);});},'afterUpdate':function(_0x258608,_0x33f9a4,_0x5daf15){return BPromise['resolve']()[_0x72b3('0x2e')](function(){if(_0x258608[_0x72b3('0x3c')]('chanspy')||_0x258608[_0x72b3('0x3c')](_0x72b3('0x9'))){return _0x273739[_0x72b3('0x40')][_0x72b3('0x43')]({'where':{'UserId':_0x258608['id'],'type':_0x72b3('0x21'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x258608[_0x72b3('0x12')]){return getChanSpyPromise(_0x273739,_0x258608)[_0x72b3('0x2e')](function(_0x98c852){if(_0x98c852&&_0x98c852[_0x72b3('0x42')]){return _0x273739[_0x72b3('0x40')][_0x72b3('0x41')](_0x98c852);}});}});}})[_0x72b3('0x2e')](function(){if(_0x258608[_0x72b3('0x3c')](_0x72b3('0x23'))||_0x258608[_0x72b3('0x3c')]('context')){return _0x273739['VoiceExtension'][_0x72b3('0x43')]({'where':{'UserId':_0x258608['id'],'type':'system','ChanSpyId':null}})[_0x72b3('0x2e')](function(){var _0x57caa7=getUserApplications(_0x258608,_0x258608[_0x72b3('0x2f')]);if(_0x258608[_0x72b3('0x2f')]!=_0x258608[_0x72b3('0x1a')]){_0x57caa7=_0x57caa7[_0x72b3('0x30')](getUserApplications(_0x258608,_0x258608[_0x72b3('0x1a')]));}return _0x273739[_0x72b3('0x40')][_0x72b3('0x41')](_0x57caa7);});}})[_0x72b3('0x2e')](function(){_0x5daf15();})[_0x72b3('0x31')](function(_0x99de38){_0x5daf15(_0x99de38);});},'afterDestroy':function(_0x3c7c3c){return _0x273739[_0x72b3('0x40')][_0x72b3('0x43')]({'where':{'UserId':_0x3c7c3c['id'],'type':_0x72b3('0x21')}});}},'instanceMethods':{'authenticate':function(_0x350385,_0xd872){if(!_0xd872){return this[_0x72b3('0x17')]===this[_0x72b3('0x44')](_0x350385);}var _0x5c5e7d=this;this[_0x72b3('0x44')](_0x350385,function(_0x4ac11a,_0x576b40){if(_0x4ac11a){_0xd872(_0x4ac11a);}if(_0x5c5e7d[_0x72b3('0x17')]===_0x576b40){_0xd872(null,!![]);}else{_0xd872(null,![]);}});},'makeSalt':function(_0x26e7c8,_0x30a3e5){var _0x5c4726=0x10;if(typeof arguments[0x0]==='function'){_0x30a3e5=arguments[0x0];_0x26e7c8=_0x5c4726;}else if(typeof arguments[0x1]===_0x72b3('0x45')){_0x30a3e5=arguments[0x1];}else{throw new Error(_0x72b3('0x46'));}if(!_0x26e7c8){_0x26e7c8=_0x5c4726;}return crypto[_0x72b3('0x47')](_0x26e7c8,function(_0x1ef5ec,_0x71c094){if(_0x1ef5ec){_0x30a3e5(_0x1ef5ec);}return _0x30a3e5(null,_0x71c094[_0x72b3('0x48')](_0x72b3('0x49')));});},'encryptPassword':function(_0x255618,_0x445eba){if(!_0x255618||!this[_0x72b3('0x4a')]){return _0x445eba?_0x445eba(null):null;}var _0x38f3c5=0x2710;var _0xfedea8=0x40;var _0x4a59af=Buffer[_0x72b3('0x4b')](this['salt'],_0x72b3('0x49'));if(!_0x445eba){return crypto[_0x72b3('0x4c')](_0x255618,_0x4a59af,_0x38f3c5,_0xfedea8,_0x72b3('0x4d'))[_0x72b3('0x48')]('base64');}return crypto[_0x72b3('0x4e')](_0x255618,_0x4a59af,_0x38f3c5,_0xfedea8,_0x72b3('0x4d'),function(_0xe72e4d,_0x1068f8){if(_0xe72e4d){_0x445eba(_0xe72e4d);}return _0x445eba(null,_0x1068f8['toString'](_0x72b3('0x49')));});},'updatePassword':function(_0x333cfc){if(!this[_0x72b3('0x17')]){return _0x333cfc(null);}if(!validatePresenceOf(this[_0x72b3('0x17')])&&authTypes[_0x72b3('0x4f')](this['provider'])===-0x1){_0x333cfc(new Error(_0x72b3('0x50')));}var _0x1a5bb2=this;this[_0x72b3('0x51')](function(_0x3953d4,_0x56dc9a){if(_0x3953d4){return _0x333cfc(_0x3953d4);}_0x1a5bb2[_0x72b3('0x4a')]=_0x56dc9a;_0x1a5bb2['encryptPassword'](_0x1a5bb2[_0x72b3('0x17')],function(_0xac9905,_0x294ec4){if(_0xac9905){_0x333cfc(_0xac9905);}_0x1a5bb2[_0x72b3('0x17')]=_0x294ec4;_0x333cfc(null);});});},'updateMd5Password':function(){this[_0x72b3('0x52')]=md5(this[_0x72b3('0x1a')]+_0x72b3('0x53')+this[_0x72b3('0x17')]);return this[_0x72b3('0x52')];},'getRealtimeData':function(){var _0x4b51fb={'id':this['id']};var _0x111b34=jayson[_0x72b3('0x54')]['http']({'port':0x232a});var _0xcb927d=jayson[_0x72b3('0x54')][_0x72b3('0x55')]({'port':0x232c});var _0x29e953={};var _0x40eeb3={};return _0x111b34['request'](_0x72b3('0x56'),_0x4b51fb)[_0x72b3('0x2e')](function(_0x4d1ac5){if(_0x4d1ac5['error']){throw new Error(_0x72b3('0x57'));}_0x29e953=_0x4d1ac5[_0x72b3('0x58')];return _0xcb927d[_0x72b3('0x59')](_0x72b3('0x56'),_0x4b51fb);})[_0x72b3('0x2e')](function(_0x491d1d){if(_0x491d1d[_0x72b3('0x5a')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)');}_0x40eeb3=_0x491d1d[_0x72b3('0x58')];var _0x4032c5=_[_0x72b3('0xf')]({},_0x29e953,_0x40eeb3);return _0x4032c5;})['catch'](function(_0x53b703){throw _0x53b703;});},'unpause':function(_0x432532,_0x4bb5d8=_0x72b3('0x5b')){var _0x1cbe31=this;var _0x5abee0={};return Promise[_0x72b3('0x38')]()[_0x72b3('0x2e')](function(){if(!_0x432532||_0x432532===_0x72b3('0x5c')&&_0x4bb5d8==='manual'){var _0x18f743=jayson['client'][_0x72b3('0x55')]({'port':0x232a});return _0x18f743[_0x72b3('0x59')](_0x72b3('0x5d'),{'id':_0x1cbe31['id'],'name':_0x1cbe31['name'],'pause':![]})[_0x72b3('0x2e')](function(_0x470159){if(_0x470159['error']){throw new Error(util['format']('Unable\x20to\x20unpause\x20agent\x20%s:$s',_0x1cbe31['id'],_0x1cbe31[_0x72b3('0x1a')]));}return _0x470159[_0x72b3('0x58')][_0x72b3('0x5e')];});}})[_0x72b3('0x2e')](function(){if(!_0x432532||_0x432532==='voice'){return _0x273739[_0x72b3('0x5f')]['update']({'paused':0x0},{'where':{'UserId':_0x1cbe31['id']},'individualHooks':!![]});}})[_0x72b3('0x2e')](function(){var _0x400c58=!_0x432532?_0x72b3('0x2d'):_0x72b3('0x60');var _0x20fee4={'membername':_0x1cbe31[_0x72b3('0x1a')],'type':'PAUSE','exitAt':null};if(_0x432532){_0x20fee4[_0x72b3('0x61')]=_0x432532;}return _0x273739[_0x72b3('0x62')][_0x400c58]({'where':_0x20fee4});})['then'](function(_0x14d314){if(_0x14d314){var _0x21caa7=Array[_0x72b3('0x63')](_0x14d314)?_0x14d314:[_0x14d314];var _0x14188a=_0x21caa7['map'](function(_0x33472a){return _0x33472a[_0x72b3('0x64')]({'exitAt':moment()[_0x72b3('0xb')](_0x72b3('0x65')),'data2':_0x4bb5d8});});return Promise['all'](_0x14188a);}})['then'](function(){if(!_0x432532){_0x5abee0[_0x72b3('0x66')]=![];_0x5abee0[_0x72b3('0x67')]=![];_0x5abee0[_0x72b3('0x68')]=![];_0x5abee0[_0x72b3('0x69')]=![];_0x5abee0[_0x72b3('0x6a')]=![];_0x5abee0[_0x72b3('0x6b')]=![];_0x5abee0['openchannelPause']=![];}else{_0x5abee0[_0x432532+_0x72b3('0x6c')]=![];}return _0x1cbe31['getRealtimeData']();})[_0x72b3('0x2e')](function(_0x531ce1){var _0x4c10c9=require(_0x72b3('0x6d'));var _0x39bc73=_0x4c10c9[_0x72b3('0x6e')]();_0x39bc73[_0x72b3('0x6f')](function(_0x27dec4){var _0x201223=_0x27dec4+'Status';_0x1cbe31[_0x72b3('0x70')]([_0x201223],_0x531ce1[_0x201223]);});return _0x1cbe31[_0x72b3('0x64')](_0x5abee0);})['catch'](function(_0x57a6a3){throw _0x57a6a3;});}}});};