386776078b45e8aa5fd2b2f6c9d360d79c7c4d75
[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 _0x0dec=['StopMixMonitor','WAV','gsm','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','SIP/%s,,tTxX','Hangup','defaults','VoiceChanSpy','internal','catch','models','define','User','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','privacyEnabled','then','updateMd5Password','updatePassword','find','concat','userSetting','createUserSetting','error','VoiceExtension','bulkCreate','destroy','changed','encryptPassword','function','Missing\x20Callback','base64','from','salt','pbkdf2Sync','sha1','toString','pbkdf2','provider','Invalid\x20password','makeSalt','md5secret','client','http','request','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Agents','manual','voice','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','UserVoiceQueueRt','update','findOne','isArray','map','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','smsPause','whatsappPause','openchannelPause','Pause','getRealtimeData','../../config/utils','Status','bluebird','crypto','util','md5','lodash','google','length','context','from-sip','system','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','SIP/%s,%s','options','join'];(function(_0x4b78ad,_0x228d83){var _0x39f7e5=function(_0x52f96c){while(--_0x52f96c){_0x4b78ad['push'](_0x4b78ad['shift']());}};_0x39f7e5(++_0x228d83);}(_0x0dec,0x11c));var _0xc0de=function(_0x27a7a3,_0x40277a){_0x27a7a3=_0x27a7a3-0x0;var _0x2f3d0c=_0x0dec[_0x27a7a3];return _0x2f3d0c;};'use strict';var BPromise=require(_0xc0de('0x0'));var crypto=require(_0xc0de('0x1'));var util=require(_0xc0de('0x2'));var md5=require(_0xc0de('0x3'));var moment=require('moment');var _=require(_0xc0de('0x4'));var jayson=require('jayson/promise');var attributes=require('./user.attributes');var authTypes=[_0xc0de('0x5')];var validatePresenceOf=function(_0x1a263e){return _0x1a263e&&_0x1a263e[_0xc0de('0x6')];};var getChanSpyApplications=function(_0x37ca65,_0xae49db,_0x194937){var _0x3639e8={'context':_0x37ca65[_0xc0de('0x7')]||_0xc0de('0x8'),'type':_0xc0de('0x9'),'isApp':![],'UserId':_0x37ca65['id']};var _0xfeb87c=[];for(var _0x3d1269=0x0,_0x7fb69a=0x1;_0x3d1269<_0x194937[_0xc0de('0x6')];_0x3d1269++,_0x7fb69a=0x1){var _0x3a169a={'exten':util[_0xc0de('0xa')](_0xc0de('0xb'),_0x194937[_0x3d1269][_0xc0de('0xc')],_0xae49db),'ChanSpyId':_0x194937[_0x3d1269]['id']};_0xfeb87c[_0xc0de('0xd')](_[_0xc0de('0xe')]({'app':_0xc0de('0xf'),'appdata':util[_0xc0de('0xa')](_0xc0de('0x10'),_0xc0de('0x11')),'priority':_0x7fb69a++},_0x3639e8,_0x3a169a));if(_0x194937[_0x3d1269][_0xc0de('0x12')]){_0xfeb87c['push'](_[_0xc0de('0xe')]({'app':_0xc0de('0x13'),'appdata':util[_0xc0de('0xa')](_0xc0de('0x14'),_0x194937[_0x3d1269][_0xc0de('0x15')]),'priority':_0x7fb69a++},_0x3639e8,_0x3a169a));}if(_0x194937[_0x3d1269][_0xc0de('0x16')]){_0xfeb87c[_0xc0de('0xd')](_[_0xc0de('0xe')]({'app':_0xc0de('0x17'),'appdata':_0x194937[_0x3d1269][_0xc0de('0x18')],'priority':_0x7fb69a++},_0x3639e8,_0x3a169a));}_0xfeb87c[_0xc0de('0xd')](_[_0xc0de('0xe')]({'app':'ChanSpy','appdata':util[_0xc0de('0xa')](_0xc0de('0x19'),_0x37ca65['name'],_0x194937[_0x3d1269][_0xc0de('0x1a')]?_0x194937[_0x3d1269][_0xc0de('0x1a')][_0xc0de('0x1b')](''):''),'priority':_0x7fb69a++},_0x3639e8,_0x3a169a));if(_0x194937[_0x3d1269]['record']){_0xfeb87c[_0xc0de('0xd')](_['merge']({'app':_0xc0de('0x1c'),'priority':_0x7fb69a++},_0x3639e8,_0x3a169a));}}return _0xfeb87c;};var getUserApplications=function(_0x5ac5b1,_0x412ceb){var _0x1109d2=['wav',_0xc0de('0x1d'),_0xc0de('0x1e')];var _0x100f61={'context':_0x5ac5b1[_0xc0de('0x7')]||_0xc0de('0x8'),'exten':_0x412ceb,'type':_0xc0de('0x9'),'isApp':![],'UserId':_0x5ac5b1['id']};var _0x42a63c=[{'app':_0xc0de('0xf'),'appdata':'CDR(type)=internal'}];if(_0x5ac5b1[_0xc0de('0x1f')]&&_[_0xc0de('0x20')](_0x1109d2,_0x5ac5b1[_0xc0de('0x1f')])){_0x42a63c[_0xc0de('0xd')]({'app':_0xc0de('0xf'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x42a63c[_0xc0de('0xd')]({'app':_0xc0de('0xf'),'appdata':util[_0xc0de('0xa')](_0xc0de('0x21'),_0x5ac5b1['extensionMonitor'])});_0x42a63c[_0xc0de('0xd')]({'app':_0xc0de('0x22'),'appdata':util[_0xc0de('0xa')](_0xc0de('0x23'),_0x5ac5b1[_0xc0de('0x24')])});}else{_0x42a63c[_0xc0de('0xd')]({'app':_0xc0de('0x22'),'appdata':util[_0xc0de('0xa')](_0xc0de('0x25'),_0x5ac5b1[_0xc0de('0x24')])});}_0x42a63c[_0xc0de('0xd')]({'app':_0xc0de('0x26')});for(var _0xece6ca=0x0;_0xece6ca<_0x42a63c['length'];_0xece6ca++){_0x42a63c[_0xece6ca]['priority']=_0xece6ca+0x1;_0x42a63c[_0xece6ca]=_[_0xc0de('0x27')](_0x42a63c[_0xece6ca],_0x100f61);}return _0x42a63c;};var getChanSpyPromise=function(_0x2d6faa,_0x59fed0){return new BPromise(function(_0x4a813a,_0x6022ed){return _0x2d6faa[_0xc0de('0x28')]['findAll']()['then'](function(_0x428089){if(_0x428089){var _0x1378da=getChanSpyApplications(_0x59fed0,_0x59fed0[_0xc0de('0x29')],_0x428089);if(_0x59fed0['internal']!=_0x59fed0[_0xc0de('0x24')]){_0x1378da=_0x1378da['concat'](getChanSpyApplications(_0x59fed0,_0x59fed0[_0xc0de('0x24')],_0x428089));}return _0x4a813a(_0x1378da);}return _0x4a813a([]);})[_0xc0de('0x2a')](function(_0x61c92e){_0x6022ed(_0x61c92e);});});};module['exports']=function(_0x1f5d58){var _0x542801=_0x1f5d58[_0xc0de('0x2b')];return _0x1f5d58[_0xc0de('0x2c')](_0xc0de('0x2d'),attributes,{'tableName':'users','charset':_0xc0de('0x2e'),'collate':_0xc0de('0x2f'),'hooks':{'beforeCreate':function(_0x104730,_0x2e317a,_0x18844e){var _0x4456cc=typeof _0x104730[_0xc0de('0x30')]===_0xc0de('0x31')?BPromise[_0xc0de('0x32')](null):_0x542801[_0xc0de('0x33')]['find']({'where':{'id':_0x104730[_0xc0de('0x30')]}});_0x4456cc['then'](function(_0xaca7e7){if(_0xaca7e7){_0x104730[_0xc0de('0x34')]=_0xaca7e7[_0xc0de('0x34')];}})[_0xc0de('0x35')](function(){_0x104730[_0xc0de('0x36')]();_0x104730[_0xc0de('0x37')](_0x18844e);})[_0xc0de('0x2a')](function(_0x1fe457){_0x18844e(_0x1fe457);});},'beforeUpdate':function(_0x4128d7,_0x270708,_0x4499e6){Promise[_0xc0de('0x32')]()['then'](function(){if(_0x4128d7['changed'](_0xc0de('0x30'))===![])return;return _0x542801[_0xc0de('0x33')][_0xc0de('0x38')]({'where':{'id':_0x4128d7[_0xc0de('0x30')]}})[_0xc0de('0x35')](function(_0x2233d4){if(_0x2233d4)_0x4128d7[_0xc0de('0x34')]=_0x2233d4['privacyEnabled'];return;});})['then'](function(){if(_0x4128d7['changed'](_0xc0de('0x18'))){_0x4128d7[_0xc0de('0x36')]();return _0x4128d7[_0xc0de('0x37')](_0x4499e6);}_0x4499e6();})[_0xc0de('0x2a')](function(_0x388289){_0x4499e6(_0x388289);});},'afterCreate':function(_0xf1d4fa,_0x56ac90,_0x44407f){var _0x33fc5d=getUserApplications(_0xf1d4fa,_0xf1d4fa['internal']);if(_0xf1d4fa[_0xc0de('0x29')]!=_0xf1d4fa['name']){_0x33fc5d=_0x33fc5d[_0xc0de('0x39')](getUserApplications(_0xf1d4fa,_0xf1d4fa[_0xc0de('0x24')]));}return Promise[_0xc0de('0x32')]()[_0xc0de('0x35')](function(){if(!_0xf1d4fa[_0xc0de('0x3a')]){return _0xf1d4fa[_0xc0de('0x3b')]({'clientSideLoggingLevel':_0xc0de('0x3c'),'clientSideLoggingEnabled':![]});}})[_0xc0de('0x35')](function(){return _0x542801[_0xc0de('0x3d')][_0xc0de('0x3e')](_0x33fc5d);})[_0xc0de('0x35')](function(){if(_0xf1d4fa['chanspy']){return getChanSpyPromise(_0x542801,_0xf1d4fa);}})[_0xc0de('0x35')](function(_0x36aa56){if(_0x36aa56&&_0x36aa56[_0xc0de('0x6')]){return _0x542801[_0xc0de('0x3d')][_0xc0de('0x3e')](_0x36aa56);}})['then'](function(){_0x44407f();})['catch'](function(_0x1588a4){_0x44407f(_0x1588a4);});},'afterUpdate':function(_0x33cf03,_0x20d75e,_0x3fa71e){return BPromise['resolve']()['then'](function(){if(_0x33cf03['changed'](_0xc0de('0x11'))||_0x33cf03['changed'](_0xc0de('0x7'))){return _0x542801[_0xc0de('0x3d')][_0xc0de('0x3f')]({'where':{'UserId':_0x33cf03['id'],'type':_0xc0de('0x9'),'ChanSpyId':{'$ne':null}}})[_0xc0de('0x35')](function(){if(_0x33cf03[_0xc0de('0x11')]){return getChanSpyPromise(_0x542801,_0x33cf03)['then'](function(_0x3ff5c4){if(_0x3ff5c4&&_0x3ff5c4[_0xc0de('0x6')]){return _0x542801[_0xc0de('0x3d')][_0xc0de('0x3e')](_0x3ff5c4);}});}});}})['then'](function(){if(_0x33cf03[_0xc0de('0x40')](_0xc0de('0x1f'))||_0x33cf03[_0xc0de('0x40')]('context')){return _0x542801[_0xc0de('0x3d')][_0xc0de('0x3f')]({'where':{'UserId':_0x33cf03['id'],'type':_0xc0de('0x9'),'ChanSpyId':null}})['then'](function(){var _0x218ab2=getUserApplications(_0x33cf03,_0x33cf03['internal']);if(_0x33cf03[_0xc0de('0x29')]!=_0x33cf03['name']){_0x218ab2=_0x218ab2[_0xc0de('0x39')](getUserApplications(_0x33cf03,_0x33cf03[_0xc0de('0x24')]));}return _0x542801[_0xc0de('0x3d')][_0xc0de('0x3e')](_0x218ab2);});}})['then'](function(){_0x3fa71e();})[_0xc0de('0x2a')](function(_0x3e57a9){_0x3fa71e(_0x3e57a9);});},'afterDestroy':function(_0x33e9ec){return _0x542801[_0xc0de('0x3d')][_0xc0de('0x3f')]({'where':{'UserId':_0x33e9ec['id'],'type':_0xc0de('0x9')}});}},'instanceMethods':{'authenticate':function(_0x36d8be,_0x3a335e){if(!_0x3a335e){return this[_0xc0de('0x18')]===this['encryptPassword'](_0x36d8be);}var _0x26995c=this;this[_0xc0de('0x41')](_0x36d8be,function(_0x396534,_0x4fba90){if(_0x396534){_0x3a335e(_0x396534);}if(_0x26995c[_0xc0de('0x18')]===_0x4fba90){_0x3a335e(null,!![]);}else{_0x3a335e(null,![]);}});},'makeSalt':function(_0x46e668,_0x21a59b){var _0x54ddd4=0x10;if(typeof arguments[0x0]===_0xc0de('0x42')){_0x21a59b=arguments[0x0];_0x46e668=_0x54ddd4;}else if(typeof arguments[0x1]===_0xc0de('0x42')){_0x21a59b=arguments[0x1];}else{throw new Error(_0xc0de('0x43'));}if(!_0x46e668){_0x46e668=_0x54ddd4;}return crypto['randomBytes'](_0x46e668,function(_0x4f2421,_0x243b48){if(_0x4f2421){_0x21a59b(_0x4f2421);}return _0x21a59b(null,_0x243b48['toString'](_0xc0de('0x44')));});},'encryptPassword':function(_0x37a68b,_0x4fdadb){if(!_0x37a68b||!this['salt']){return _0x4fdadb?_0x4fdadb(null):null;}var _0x550e93=0x2710;var _0x333b2f=0x40;var _0x43ff22=Buffer[_0xc0de('0x45')](this[_0xc0de('0x46')],'base64');if(!_0x4fdadb){return crypto[_0xc0de('0x47')](_0x37a68b,_0x43ff22,_0x550e93,_0x333b2f,_0xc0de('0x48'))[_0xc0de('0x49')](_0xc0de('0x44'));}return crypto[_0xc0de('0x4a')](_0x37a68b,_0x43ff22,_0x550e93,_0x333b2f,_0xc0de('0x48'),function(_0x338db3,_0x5f09a0){if(_0x338db3){_0x4fdadb(_0x338db3);}return _0x4fdadb(null,_0x5f09a0[_0xc0de('0x49')](_0xc0de('0x44')));});},'updatePassword':function(_0x316aad){if(!this[_0xc0de('0x18')]){return _0x316aad(null);}if(!validatePresenceOf(this['password'])&&authTypes['indexOf'](this[_0xc0de('0x4b')])===-0x1){_0x316aad(new Error(_0xc0de('0x4c')));}var _0x2c5894=this;this[_0xc0de('0x4d')](function(_0x29ec8a,_0x13b76f){if(_0x29ec8a){return _0x316aad(_0x29ec8a);}_0x2c5894[_0xc0de('0x46')]=_0x13b76f;_0x2c5894[_0xc0de('0x41')](_0x2c5894[_0xc0de('0x18')],function(_0x19c578,_0x497e03){if(_0x19c578){_0x316aad(_0x19c578);}_0x2c5894[_0xc0de('0x18')]=_0x497e03;_0x316aad(null);});});},'updateMd5Password':function(){this[_0xc0de('0x4e')]=md5(this['name']+':asterisk:'+this['password']);return this['md5secret'];},'getRealtimeData':function(){var _0x24cc72={'id':this['id']};var _0x15bfcb=jayson['client']['http']({'port':0x232a});var _0x2a1b18=jayson[_0xc0de('0x4f')][_0xc0de('0x50')]({'port':0x232c});var _0x3be584={};var _0x329adb={};return _0x15bfcb[_0xc0de('0x51')]('Agents',_0x24cc72)[_0xc0de('0x35')](function(_0x1c14d8){if(_0x1c14d8[_0xc0de('0x3c')]){throw new Error(_0xc0de('0x52'));}_0x3be584=_0x1c14d8[_0xc0de('0x53')];return _0x2a1b18[_0xc0de('0x51')](_0xc0de('0x54'),_0x24cc72);})[_0xc0de('0x35')](function(_0x4396c2){if(_0x4396c2['error']){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)');}_0x329adb=_0x4396c2[_0xc0de('0x53')];var _0x3ea480=_[_0xc0de('0xe')]({},_0x3be584,_0x329adb);return _0x3ea480;})[_0xc0de('0x2a')](function(_0x25af8a){throw _0x25af8a;});},'unpause':function(_0x534674,_0x170621=_0xc0de('0x55')){var _0x230665=this;var _0xedd83f={};return Promise[_0xc0de('0x32')]()[_0xc0de('0x35')](function(){if(!_0x534674||_0x534674===_0xc0de('0x56')&&_0x170621===_0xc0de('0x55')){var _0x21e1ec=jayson[_0xc0de('0x4f')]['http']({'port':0x232a});return _0x21e1ec[_0xc0de('0x51')]('QueuePause',{'id':_0x230665['id'],'name':_0x230665['name'],'pause':![]})[_0xc0de('0x35')](function(_0x109675){if(_0x109675[_0xc0de('0x3c')]){throw new Error(util[_0xc0de('0xa')](_0xc0de('0x57'),_0x230665['id'],_0x230665[_0xc0de('0x24')]));}return _0x109675[_0xc0de('0x53')][_0xc0de('0x58')];});}})[_0xc0de('0x35')](function(){if(!_0x534674||_0x534674==='voice'){return _0x542801[_0xc0de('0x59')][_0xc0de('0x5a')]({'paused':0x0},{'where':{'UserId':_0x230665['id']},'individualHooks':!![]});}})['then'](function(){var _0x585c55=!_0x534674?'findAll':_0xc0de('0x5b');var _0x4ea743={'membername':_0x230665[_0xc0de('0x24')],'type':'PAUSE','exitAt':null};if(_0x534674){_0x4ea743['channel']=_0x534674;}return _0x542801['MemberReport'][_0x585c55]({'where':_0x4ea743});})[_0xc0de('0x35')](function(_0x2b6e31){if(_0x2b6e31){var _0xfecd2b=Array[_0xc0de('0x5c')](_0x2b6e31)?_0x2b6e31:[_0x2b6e31];var _0x44caef=_0xfecd2b[_0xc0de('0x5d')](function(_0x44e195){return _0x44e195[_0xc0de('0x5a')]({'exitAt':moment()[_0xc0de('0xa')](_0xc0de('0x5e')),'data2':_0x170621});});return Promise[_0xc0de('0x5f')](_0x44caef);}})[_0xc0de('0x35')](function(){if(!_0x534674){_0xedd83f[_0xc0de('0x60')]=![];_0xedd83f['mailPause']=![];_0xedd83f['chatPause']=![];_0xedd83f['faxPause']=![];_0xedd83f[_0xc0de('0x61')]=![];_0xedd83f[_0xc0de('0x62')]=![];_0xedd83f[_0xc0de('0x63')]=![];}else{_0xedd83f[_0x534674+_0xc0de('0x64')]=![];}return _0x230665[_0xc0de('0x65')]();})['then'](function(_0x23e03b){var _0x3c808c=require(_0xc0de('0x66'));var _0x46188a=_0x3c808c['getChannels']();_0x46188a['forEach'](function(_0x2cbbe9){var _0x50911e=_0x2cbbe9+_0xc0de('0x67');_0x230665['setDataValue']([_0x50911e],_0x23e03b[_0x50911e]);});return _0x230665[_0xc0de('0x5a')](_0xedd83f);})['catch'](function(_0x4154d8){throw _0x4154d8;});}}});};