Built motion from commit fe909640.|2.6.8
[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 _0x1e2c=['extensionMonitor','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','SIP/%s,,tTxX','Hangup','priority','VoiceChanSpy','findAll','then','internal','concat','catch','exports','User','userProfileId','undefined','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','resolve','userSetting','createUserSetting','error','VoiceExtension','bulkCreate','changed','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','base64','from','salt','pbkdf2Sync','sha1','toString','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','md5secret','client','http','request','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','voice','manual','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','UserVoiceQueueRt','findOne','MemberReport','PAUSE','isArray','update','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','chatPause','faxPause','smsPause','whatsappPause','openchannelPause','getRealtimeData','../../config/utils','getChannels','Status','setDataValue','bluebird','util','md5','moment','lodash','jayson/promise','./user.attributes','google','context','from-sip','system','length','prefix','push','format','chanspy','record','merge','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','wav','WAV','gsm','Set','CDR(type)=internal'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x1e2c,0x127));var _0xc1e2=function(_0x22c63a,_0x2e832a){_0x22c63a=_0x22c63a-0x0;var _0x417c8a=_0x1e2c[_0x22c63a];return _0x417c8a;};'use strict';var BPromise=require(_0xc1e2('0x0'));var crypto=require('crypto');var util=require(_0xc1e2('0x1'));var md5=require(_0xc1e2('0x2'));var moment=require(_0xc1e2('0x3'));var _=require(_0xc1e2('0x4'));var jayson=require(_0xc1e2('0x5'));var attributes=require(_0xc1e2('0x6'));var authTypes=[_0xc1e2('0x7')];var validatePresenceOf=function(_0x2f4ba7){return _0x2f4ba7&&_0x2f4ba7['length'];};var getChanSpyApplications=function(_0x1b9fca,_0x101036,_0x44156a){var _0x49805f={'context':_0x1b9fca[_0xc1e2('0x8')]||_0xc1e2('0x9'),'type':_0xc1e2('0xa'),'isApp':![],'UserId':_0x1b9fca['id']};var _0x120cd3=[];for(var _0x86fdd9=0x0,_0x40b62d=0x1;_0x86fdd9<_0x44156a[_0xc1e2('0xb')];_0x86fdd9++,_0x40b62d=0x1){var _0x806cb3={'exten':util['format']('%s%s',_0x44156a[_0x86fdd9][_0xc1e2('0xc')],_0x101036),'ChanSpyId':_0x44156a[_0x86fdd9]['id']};_0x120cd3[_0xc1e2('0xd')](_['merge']({'app':'Set','appdata':util[_0xc1e2('0xe')]('CDR(type)=%s',_0xc1e2('0xf')),'priority':_0x40b62d++},_0x49805f,_0x806cb3));if(_0x44156a[_0x86fdd9][_0xc1e2('0x10')]){_0x120cd3['push'](_[_0xc1e2('0x11')]({'app':_0xc1e2('0x12'),'appdata':util[_0xc1e2('0xe')](_0xc1e2('0x13'),_0x44156a[_0x86fdd9][_0xc1e2('0x14')]),'priority':_0x40b62d++},_0x49805f,_0x806cb3));}if(_0x44156a[_0x86fdd9][_0xc1e2('0x15')]){_0x120cd3[_0xc1e2('0xd')](_[_0xc1e2('0x11')]({'app':_0xc1e2('0x16'),'appdata':_0x44156a[_0x86fdd9][_0xc1e2('0x17')],'priority':_0x40b62d++},_0x49805f,_0x806cb3));}_0x120cd3[_0xc1e2('0xd')](_['merge']({'app':_0xc1e2('0x18'),'appdata':util[_0xc1e2('0xe')](_0xc1e2('0x19'),_0x1b9fca[_0xc1e2('0x1a')],_0x44156a[_0x86fdd9]['options']?_0x44156a[_0x86fdd9][_0xc1e2('0x1b')][_0xc1e2('0x1c')](''):''),'priority':_0x40b62d++},_0x49805f,_0x806cb3));if(_0x44156a[_0x86fdd9][_0xc1e2('0x10')]){_0x120cd3['push'](_['merge']({'app':_0xc1e2('0x1d'),'priority':_0x40b62d++},_0x49805f,_0x806cb3));}}return _0x120cd3;};var getUserApplications=function(_0xc1905e,_0x112ad9){var _0x1733cb=[_0xc1e2('0x1e'),_0xc1e2('0x1f'),_0xc1e2('0x20')];var _0x1ac39b={'context':_0xc1905e[_0xc1e2('0x8')]||'from-sip','exten':_0x112ad9,'type':_0xc1e2('0xa'),'isApp':![],'UserId':_0xc1905e['id']};var _0x5a4fe7=[{'app':_0xc1e2('0x21'),'appdata':_0xc1e2('0x22')}];if(_0xc1905e[_0xc1e2('0x23')]&&_['includes'](_0x1733cb,_0xc1905e[_0xc1e2('0x23')])){_0x5a4fe7['push']({'app':_0xc1e2('0x21'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x5a4fe7[_0xc1e2('0xd')]({'app':_0xc1e2('0x21'),'appdata':util[_0xc1e2('0xe')](_0xc1e2('0x24'),_0xc1905e[_0xc1e2('0x23')])});_0x5a4fe7['push']({'app':'Dial','appdata':util[_0xc1e2('0xe')](_0xc1e2('0x25'),_0xc1905e['name'])});}else{_0x5a4fe7[_0xc1e2('0xd')]({'app':_0xc1e2('0x26'),'appdata':util[_0xc1e2('0xe')](_0xc1e2('0x27'),_0xc1905e[_0xc1e2('0x1a')])});}_0x5a4fe7[_0xc1e2('0xd')]({'app':_0xc1e2('0x28')});for(var _0x3e8c86=0x0;_0x3e8c86<_0x5a4fe7[_0xc1e2('0xb')];_0x3e8c86++){_0x5a4fe7[_0x3e8c86][_0xc1e2('0x29')]=_0x3e8c86+0x1;_0x5a4fe7[_0x3e8c86]=_['defaults'](_0x5a4fe7[_0x3e8c86],_0x1ac39b);}return _0x5a4fe7;};var getChanSpyPromise=function(_0x2c4600,_0x5d1afd){return new BPromise(function(_0x2b4817,_0xab70fe){return _0x2c4600[_0xc1e2('0x2a')][_0xc1e2('0x2b')]()[_0xc1e2('0x2c')](function(_0x32670a){if(_0x32670a){var _0x50b8f4=getChanSpyApplications(_0x5d1afd,_0x5d1afd[_0xc1e2('0x2d')],_0x32670a);if(_0x5d1afd[_0xc1e2('0x2d')]!=_0x5d1afd[_0xc1e2('0x1a')]){_0x50b8f4=_0x50b8f4[_0xc1e2('0x2e')](getChanSpyApplications(_0x5d1afd,_0x5d1afd['name'],_0x32670a));}return _0x2b4817(_0x50b8f4);}return _0x2b4817([]);})[_0xc1e2('0x2f')](function(_0x4d2d2f){_0xab70fe(_0x4d2d2f);});});};module[_0xc1e2('0x30')]=function(_0x3e39a8){var _0x231226=_0x3e39a8['models'];return _0x3e39a8['define'](_0xc1e2('0x31'),attributes,{'tableName':'users','charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0x369f4e,_0x50ced1,_0xb45a49){var _0x2f482b=typeof _0x369f4e[_0xc1e2('0x32')]===_0xc1e2('0x33')?BPromise['resolve'](null):_0x231226[_0xc1e2('0x34')][_0xc1e2('0x35')]({'where':{'id':_0x369f4e[_0xc1e2('0x32')]}});_0x2f482b[_0xc1e2('0x2c')](function(_0x1d8183){if(_0x1d8183){_0x369f4e[_0xc1e2('0x36')]=_0x1d8183['privacyEnabled'];}})[_0xc1e2('0x2c')](function(){_0x369f4e[_0xc1e2('0x37')]();_0x369f4e['updatePassword'](_0xb45a49);})[_0xc1e2('0x2f')](function(_0x1cbaf6){_0xb45a49(_0x1cbaf6);});},'beforeUpdate':function(_0x14e8e6,_0x5ed00b,_0x2ee34f){Promise['resolve']()[_0xc1e2('0x2c')](function(){if(_0x14e8e6['changed'](_0xc1e2('0x32'))===![])return;return _0x231226[_0xc1e2('0x34')][_0xc1e2('0x35')]({'where':{'id':_0x14e8e6[_0xc1e2('0x32')]}})[_0xc1e2('0x2c')](function(_0x218273){if(_0x218273)_0x14e8e6[_0xc1e2('0x36')]=_0x218273['privacyEnabled'];return;});})[_0xc1e2('0x2c')](function(){if(_0x14e8e6['changed'](_0xc1e2('0x17'))){_0x14e8e6[_0xc1e2('0x37')]();return _0x14e8e6[_0xc1e2('0x38')](_0x2ee34f);}_0x2ee34f();})[_0xc1e2('0x2f')](function(_0x563306){_0x2ee34f(_0x563306);});},'afterCreate':function(_0x34dd14,_0x4c9262,_0x33cd51){var _0x2db669=getUserApplications(_0x34dd14,_0x34dd14[_0xc1e2('0x2d')]);if(_0x34dd14[_0xc1e2('0x2d')]!=_0x34dd14[_0xc1e2('0x1a')]){_0x2db669=_0x2db669[_0xc1e2('0x2e')](getUserApplications(_0x34dd14,_0x34dd14['name']));}return Promise[_0xc1e2('0x39')]()[_0xc1e2('0x2c')](function(){if(!_0x34dd14[_0xc1e2('0x3a')]){return _0x34dd14[_0xc1e2('0x3b')]({'clientSideLoggingLevel':_0xc1e2('0x3c'),'clientSideLoggingEnabled':![]});}})['then'](function(){return _0x231226[_0xc1e2('0x3d')][_0xc1e2('0x3e')](_0x2db669);})[_0xc1e2('0x2c')](function(){if(_0x34dd14['chanspy']){return getChanSpyPromise(_0x231226,_0x34dd14);}})[_0xc1e2('0x2c')](function(_0x365bf2){if(_0x365bf2&&_0x365bf2['length']){return _0x231226[_0xc1e2('0x3d')][_0xc1e2('0x3e')](_0x365bf2);}})['then'](function(){_0x33cd51();})[_0xc1e2('0x2f')](function(_0x5d47dd){_0x33cd51(_0x5d47dd);});},'afterUpdate':function(_0x3f2c0b,_0x1762cf,_0x148df9){return BPromise['resolve']()[_0xc1e2('0x2c')](function(){if(_0x3f2c0b[_0xc1e2('0x3f')](_0xc1e2('0xf'))||_0x3f2c0b[_0xc1e2('0x3f')](_0xc1e2('0x8'))){return _0x231226[_0xc1e2('0x3d')][_0xc1e2('0x40')]({'where':{'UserId':_0x3f2c0b['id'],'type':'system','ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x3f2c0b[_0xc1e2('0xf')]){return getChanSpyPromise(_0x231226,_0x3f2c0b)['then'](function(_0xf874ca){if(_0xf874ca&&_0xf874ca['length']){return _0x231226[_0xc1e2('0x3d')][_0xc1e2('0x3e')](_0xf874ca);}});}});}})[_0xc1e2('0x2c')](function(){if(_0x3f2c0b[_0xc1e2('0x3f')]('extensionMonitor')||_0x3f2c0b[_0xc1e2('0x3f')](_0xc1e2('0x8'))){return _0x231226[_0xc1e2('0x3d')][_0xc1e2('0x40')]({'where':{'UserId':_0x3f2c0b['id'],'type':_0xc1e2('0xa'),'ChanSpyId':null}})[_0xc1e2('0x2c')](function(){var _0x1709ef=getUserApplications(_0x3f2c0b,_0x3f2c0b[_0xc1e2('0x2d')]);if(_0x3f2c0b[_0xc1e2('0x2d')]!=_0x3f2c0b[_0xc1e2('0x1a')]){_0x1709ef=_0x1709ef[_0xc1e2('0x2e')](getUserApplications(_0x3f2c0b,_0x3f2c0b['name']));}return _0x231226[_0xc1e2('0x3d')]['bulkCreate'](_0x1709ef);});}})['then'](function(){_0x148df9();})['catch'](function(_0x3c6a22){_0x148df9(_0x3c6a22);});},'afterDestroy':function(_0x99a3b9){return _0x231226['VoiceExtension'][_0xc1e2('0x40')]({'where':{'UserId':_0x99a3b9['id'],'type':_0xc1e2('0xa')}});}},'instanceMethods':{'authenticate':function(_0x599198,_0x1cc41d){if(!_0x1cc41d){return this['password']===this[_0xc1e2('0x41')](_0x599198);}var _0x5b6c51=this;this[_0xc1e2('0x41')](_0x599198,function(_0x1990b6,_0x2b819a){if(_0x1990b6){_0x1cc41d(_0x1990b6);}if(_0x5b6c51['password']===_0x2b819a){_0x1cc41d(null,!![]);}else{_0x1cc41d(null,![]);}});},'makeSalt':function(_0x2222fa,_0x1f481c){var _0x2e1718=0x10;if(typeof arguments[0x0]===_0xc1e2('0x42')){_0x1f481c=arguments[0x0];_0x2222fa=_0x2e1718;}else if(typeof arguments[0x1]===_0xc1e2('0x42')){_0x1f481c=arguments[0x1];}else{throw new Error(_0xc1e2('0x43'));}if(!_0x2222fa){_0x2222fa=_0x2e1718;}return crypto[_0xc1e2('0x44')](_0x2222fa,function(_0x12728e,_0x59597b){if(_0x12728e){_0x1f481c(_0x12728e);}return _0x1f481c(null,_0x59597b['toString'](_0xc1e2('0x45')));});},'encryptPassword':function(_0x237c54,_0x2901e7){if(!_0x237c54||!this['salt']){return _0x2901e7?_0x2901e7(null):null;}var _0x132c47=0x2710;var _0x17502d=0x40;var _0x58c71d=Buffer[_0xc1e2('0x46')](this[_0xc1e2('0x47')],_0xc1e2('0x45'));if(!_0x2901e7){return crypto[_0xc1e2('0x48')](_0x237c54,_0x58c71d,_0x132c47,_0x17502d,_0xc1e2('0x49'))[_0xc1e2('0x4a')](_0xc1e2('0x45'));}return crypto['pbkdf2'](_0x237c54,_0x58c71d,_0x132c47,_0x17502d,_0xc1e2('0x49'),function(_0x26da6c,_0x13444e){if(_0x26da6c){_0x2901e7(_0x26da6c);}return _0x2901e7(null,_0x13444e['toString'](_0xc1e2('0x45')));});},'updatePassword':function(_0x44620e){if(!this[_0xc1e2('0x17')]){return _0x44620e(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0xc1e2('0x4b')](this[_0xc1e2('0x4c')])===-0x1){_0x44620e(new Error(_0xc1e2('0x4d')));}var _0x293748=this;this[_0xc1e2('0x4e')](function(_0x495543,_0x7b1411){if(_0x495543){return _0x44620e(_0x495543);}_0x293748[_0xc1e2('0x47')]=_0x7b1411;_0x293748['encryptPassword'](_0x293748[_0xc1e2('0x17')],function(_0x59ed9f,_0x3013b2){if(_0x59ed9f){_0x44620e(_0x59ed9f);}_0x293748[_0xc1e2('0x17')]=_0x3013b2;_0x44620e(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xc1e2('0x1a')]+_0xc1e2('0x4f')+this['password']);return this[_0xc1e2('0x50')];},'getRealtimeData':function(){var _0x1c8078={'id':this['id']};var _0x26c436=jayson[_0xc1e2('0x51')][_0xc1e2('0x52')]({'port':0x232a});var _0x247664=jayson[_0xc1e2('0x51')]['http']({'port':0x232c});var _0x5bd7da={};var _0x47d414={};return _0x26c436[_0xc1e2('0x53')]('Agents',_0x1c8078)[_0xc1e2('0x2c')](function(_0x590725){if(_0x590725[_0xc1e2('0x3c')]){throw new Error(_0xc1e2('0x54'));}_0x5bd7da=_0x590725[_0xc1e2('0x55')];return _0x247664[_0xc1e2('0x53')]('Agents',_0x1c8078);})['then'](function(_0x3a7be6){if(_0x3a7be6[_0xc1e2('0x3c')]){throw new Error(_0xc1e2('0x56'));}_0x47d414=_0x3a7be6[_0xc1e2('0x55')];var _0x20659b=_[_0xc1e2('0x11')]({},_0x5bd7da,_0x47d414);return _0x20659b;})[_0xc1e2('0x2f')](function(_0x5e7b4a){throw _0x5e7b4a;});},'unpause':function(_0x153bf8,_0x3f1b2c='manual'){var _0x21605a=this;var _0x5268de={};return Promise['resolve']()[_0xc1e2('0x2c')](function(){if(!_0x153bf8||_0x153bf8===_0xc1e2('0x57')&&_0x3f1b2c===_0xc1e2('0x58')){var _0x8d1542=jayson[_0xc1e2('0x51')][_0xc1e2('0x52')]({'port':0x232a});return _0x8d1542[_0xc1e2('0x53')](_0xc1e2('0x59'),{'id':_0x21605a['id'],'name':_0x21605a['name'],'pause':![]})[_0xc1e2('0x2c')](function(_0x51b571){if(_0x51b571[_0xc1e2('0x3c')]){throw new Error(util[_0xc1e2('0xe')](_0xc1e2('0x5a'),_0x21605a['id'],_0x21605a[_0xc1e2('0x1a')]));}return _0x51b571['result']['message'];});}})[_0xc1e2('0x2c')](function(){if(!_0x153bf8||_0x153bf8==='voice'){return _0x231226[_0xc1e2('0x5b')]['update']({'paused':0x0},{'where':{'UserId':_0x21605a['id']},'individualHooks':!![]});}})[_0xc1e2('0x2c')](function(){var _0x270520=!_0x153bf8?_0xc1e2('0x2b'):_0xc1e2('0x5c');return _0x231226[_0xc1e2('0x5d')][_0x270520]({'where':{'channel':_0x153bf8,'membername':_0x21605a[_0xc1e2('0x1a')],'type':_0xc1e2('0x5e'),'exitAt':null}});})['then'](function(_0x24bff6){if(_0x24bff6){var _0x5a7bc8=Array[_0xc1e2('0x5f')](_0x24bff6)?_0x24bff6:[_0x24bff6];var _0x506a05=_0x5a7bc8['map'](function(_0x23d91b){return _0x23d91b[_0xc1e2('0x60')]({'exitAt':moment()[_0xc1e2('0xe')](_0xc1e2('0x61')),'data2':_0x3f1b2c});});return Promise[_0xc1e2('0x62')](_0x506a05);}})['then'](function(){if(!_0x153bf8){_0x5268de[_0xc1e2('0x63')]=![];_0x5268de['mailPause']=![];_0x5268de[_0xc1e2('0x64')]=![];_0x5268de[_0xc1e2('0x65')]=![];_0x5268de[_0xc1e2('0x66')]=![];_0x5268de[_0xc1e2('0x67')]=![];_0x5268de[_0xc1e2('0x68')]=![];}else{_0x5268de[_0x153bf8+'Pause']=![];}return _0x21605a[_0xc1e2('0x69')]();})['then'](function(_0x55b6b8){var _0x17c1ad=require(_0xc1e2('0x6a'));var _0x18fbfc=_0x17c1ad[_0xc1e2('0x6b')]();_0x18fbfc['forEach'](function(_0x23261c){var _0x4f22ec=_0x23261c+_0xc1e2('0x6c');_0x21605a[_0xc1e2('0x6d')]([_0x4f22ec],_0x55b6b8[_0x4f22ec]);});return _0x21605a['update'](_0x5268de);})[_0xc1e2('0x2f')](function(_0x3cf8b9){throw _0x3cf8b9;});}}});};