ea83b619f57e62aca06b2cedb9964120520c7061
[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 _0x5a52=['priority','defaults','VoiceChanSpy','findAll','then','internal','catch','exports','models','define','User','users','utf8','utf8_bin','userProfileId','undefined','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','resolve','createUserSetting','VoiceExtension','chanspy','changed','destroy','bulkCreate','concat','encryptPassword','function','Missing\x20Callback','toString','base64','salt','from','pbkdf2Sync','sha1','pbkdf2','provider','makeSalt','md5secret',':asterisk:','client','http','request','Agents','error','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','result','manual','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','voice','update','findOne','PAUSE','channel','MemberReport','map','YYYY-MM-DD\x20HH:mm:ss','voicePause','chatPause','faxPause','smsPause','whatsappPause','getRealtimeData','../../config/utils','getChannels','forEach','Status','setDataValue','bluebird','moment','lodash','jayson/promise','./user.attributes','google','length','context','from-sip','system','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','record','recordingFormat','auth','password','ChanSpy','SIP/%s,%s','options','StopMixMonitor','wav','WAV','gsm','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','name','SIP/%s,,tTxX','Hangup'];(function(_0x5edb22,_0x136394){var _0x3f9dba=function(_0x9dd4fa){while(--_0x9dd4fa){_0x5edb22['push'](_0x5edb22['shift']());}};_0x3f9dba(++_0x136394);}(_0x5a52,0x18d));var _0x25a5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x5a52[_0x14add3];return _0x4a174f;};'use strict';var BPromise=require(_0x25a5('0x0'));var crypto=require('crypto');var util=require('util');var md5=require('md5');var moment=require(_0x25a5('0x1'));var _=require(_0x25a5('0x2'));var jayson=require(_0x25a5('0x3'));var attributes=require(_0x25a5('0x4'));var authTypes=[_0x25a5('0x5')];var validatePresenceOf=function(_0x407636){return _0x407636&&_0x407636[_0x25a5('0x6')];};var getChanSpyApplications=function(_0x329326,_0x5db751,_0x2c210a){var _0x4d0639={'context':_0x329326[_0x25a5('0x7')]||_0x25a5('0x8'),'type':_0x25a5('0x9'),'isApp':![],'UserId':_0x329326['id']};var _0x66bf9b=[];for(var _0x4492b6=0x0,_0x6b8fc4=0x1;_0x4492b6<_0x2c210a['length'];_0x4492b6++,_0x6b8fc4=0x1){var _0x4dcda5={'exten':util[_0x25a5('0xa')](_0x25a5('0xb'),_0x2c210a[_0x4492b6][_0x25a5('0xc')],_0x5db751),'ChanSpyId':_0x2c210a[_0x4492b6]['id']};_0x66bf9b[_0x25a5('0xd')](_[_0x25a5('0xe')]({'app':_0x25a5('0xf'),'appdata':util[_0x25a5('0xa')](_0x25a5('0x10'),'chanspy'),'priority':_0x6b8fc4++},_0x4d0639,_0x4dcda5));if(_0x2c210a[_0x4492b6][_0x25a5('0x11')]){_0x66bf9b[_0x25a5('0xd')](_[_0x25a5('0xe')]({'app':'MixMonitor','appdata':util[_0x25a5('0xa')]('${UNIQUEID}.%s,a',_0x2c210a[_0x4492b6][_0x25a5('0x12')]),'priority':_0x6b8fc4++},_0x4d0639,_0x4dcda5));}if(_0x2c210a[_0x4492b6][_0x25a5('0x13')]){_0x66bf9b[_0x25a5('0xd')](_['merge']({'app':'Authenticate','appdata':_0x2c210a[_0x4492b6][_0x25a5('0x14')],'priority':_0x6b8fc4++},_0x4d0639,_0x4dcda5));}_0x66bf9b['push'](_[_0x25a5('0xe')]({'app':_0x25a5('0x15'),'appdata':util[_0x25a5('0xa')](_0x25a5('0x16'),_0x329326['name'],_0x2c210a[_0x4492b6][_0x25a5('0x17')]?_0x2c210a[_0x4492b6]['options']['join'](''):''),'priority':_0x6b8fc4++},_0x4d0639,_0x4dcda5));if(_0x2c210a[_0x4492b6][_0x25a5('0x11')]){_0x66bf9b[_0x25a5('0xd')](_[_0x25a5('0xe')]({'app':_0x25a5('0x18'),'priority':_0x6b8fc4++},_0x4d0639,_0x4dcda5));}}return _0x66bf9b;};var getUserApplications=function(_0x3f724b,_0x54987f){var _0x484df6=[_0x25a5('0x19'),_0x25a5('0x1a'),_0x25a5('0x1b')];var _0x29cf75={'context':_0x3f724b[_0x25a5('0x7')]||_0x25a5('0x8'),'exten':_0x54987f,'type':'system','isApp':![],'UserId':_0x3f724b['id']};var _0x2e9f68=[{'app':'Set','appdata':'CDR(type)=internal'}];if(_0x3f724b[_0x25a5('0x1c')]&&_['includes'](_0x484df6,_0x3f724b[_0x25a5('0x1c')])){_0x2e9f68[_0x25a5('0xd')]({'app':'Set','appdata':_0x25a5('0x1d')});_0x2e9f68[_0x25a5('0xd')]({'app':'Set','appdata':util[_0x25a5('0xa')](_0x25a5('0x1e'),_0x3f724b[_0x25a5('0x1c')])});_0x2e9f68['push']({'app':_0x25a5('0x1f'),'appdata':util[_0x25a5('0xa')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x3f724b[_0x25a5('0x20')])});}else{_0x2e9f68['push']({'app':_0x25a5('0x1f'),'appdata':util[_0x25a5('0xa')](_0x25a5('0x21'),_0x3f724b['name'])});}_0x2e9f68[_0x25a5('0xd')]({'app':_0x25a5('0x22')});for(var _0x280355=0x0;_0x280355<_0x2e9f68[_0x25a5('0x6')];_0x280355++){_0x2e9f68[_0x280355][_0x25a5('0x23')]=_0x280355+0x1;_0x2e9f68[_0x280355]=_[_0x25a5('0x24')](_0x2e9f68[_0x280355],_0x29cf75);}return _0x2e9f68;};var getChanSpyPromise=function(_0x2cec2e,_0x387774){return new BPromise(function(_0x12e1be,_0x112a08){return _0x2cec2e[_0x25a5('0x25')][_0x25a5('0x26')]()[_0x25a5('0x27')](function(_0x5d5ea4){if(_0x5d5ea4){var _0x28d55f=getChanSpyApplications(_0x387774,_0x387774['internal'],_0x5d5ea4);if(_0x387774[_0x25a5('0x28')]!=_0x387774[_0x25a5('0x20')]){_0x28d55f=_0x28d55f['concat'](getChanSpyApplications(_0x387774,_0x387774['name'],_0x5d5ea4));}return _0x12e1be(_0x28d55f);}return _0x12e1be([]);})[_0x25a5('0x29')](function(_0x1b2655){_0x112a08(_0x1b2655);});});};module[_0x25a5('0x2a')]=function(_0x1efabb){var _0x562ece=_0x1efabb[_0x25a5('0x2b')];return _0x1efabb[_0x25a5('0x2c')](_0x25a5('0x2d'),attributes,{'tableName':_0x25a5('0x2e'),'charset':_0x25a5('0x2f'),'collate':_0x25a5('0x30'),'hooks':{'beforeCreate':function(_0x3cd76e,_0x513518,_0x4f3c9b){var _0x4110e2=typeof _0x3cd76e[_0x25a5('0x31')]===_0x25a5('0x32')?BPromise['resolve'](null):_0x562ece[_0x25a5('0x33')][_0x25a5('0x34')]({'where':{'id':_0x3cd76e[_0x25a5('0x31')]}});_0x4110e2[_0x25a5('0x27')](function(_0x168c1d){if(_0x168c1d){_0x3cd76e[_0x25a5('0x35')]=_0x168c1d[_0x25a5('0x35')];}})[_0x25a5('0x27')](function(){_0x3cd76e[_0x25a5('0x36')]();_0x3cd76e[_0x25a5('0x37')](_0x4f3c9b);})[_0x25a5('0x29')](function(_0x416c8b){_0x4f3c9b(_0x416c8b);});},'beforeUpdate':function(_0x4a274a,_0x5abd5c,_0x35cdd2){Promise['resolve']()[_0x25a5('0x27')](function(){if(_0x4a274a['changed'](_0x25a5('0x31'))===![])return;return _0x562ece[_0x25a5('0x33')][_0x25a5('0x34')]({'where':{'id':_0x4a274a[_0x25a5('0x31')]}})[_0x25a5('0x27')](function(_0x4bedb8){if(_0x4bedb8)_0x4a274a[_0x25a5('0x35')]=_0x4bedb8['privacyEnabled'];return;});})[_0x25a5('0x27')](function(){if(_0x4a274a['changed']('password')){_0x4a274a[_0x25a5('0x36')]();return _0x4a274a[_0x25a5('0x37')](_0x35cdd2);}_0x35cdd2();})[_0x25a5('0x29')](function(_0xb9b622){_0x35cdd2(_0xb9b622);});},'afterCreate':function(_0xcb717f,_0x1eeb6a,_0x14355c){var _0x346c48=getUserApplications(_0xcb717f,_0xcb717f[_0x25a5('0x28')]);if(_0xcb717f[_0x25a5('0x28')]!=_0xcb717f[_0x25a5('0x20')]){_0x346c48=_0x346c48['concat'](getUserApplications(_0xcb717f,_0xcb717f['name']));}return Promise[_0x25a5('0x38')]()[_0x25a5('0x27')](function(){if(!_0xcb717f['userSetting']){return _0xcb717f[_0x25a5('0x39')]({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})['then'](function(){return _0x562ece[_0x25a5('0x3a')]['bulkCreate'](_0x346c48);})[_0x25a5('0x27')](function(){if(_0xcb717f[_0x25a5('0x3b')]){return getChanSpyPromise(_0x562ece,_0xcb717f);}})[_0x25a5('0x27')](function(_0x433f33){if(_0x433f33&&_0x433f33[_0x25a5('0x6')]){return _0x562ece[_0x25a5('0x3a')]['bulkCreate'](_0x433f33);}})[_0x25a5('0x27')](function(){_0x14355c();})['catch'](function(_0x2b0cef){_0x14355c(_0x2b0cef);});},'afterUpdate':function(_0xd70ce7,_0x3750d1,_0x69f470){return BPromise[_0x25a5('0x38')]()[_0x25a5('0x27')](function(){if(_0xd70ce7[_0x25a5('0x3c')](_0x25a5('0x3b'))||_0xd70ce7['changed'](_0x25a5('0x7'))){return _0x562ece[_0x25a5('0x3a')][_0x25a5('0x3d')]({'where':{'UserId':_0xd70ce7['id'],'type':'system','ChanSpyId':{'$ne':null}}})['then'](function(){if(_0xd70ce7[_0x25a5('0x3b')]){return getChanSpyPromise(_0x562ece,_0xd70ce7)['then'](function(_0x2a26b3){if(_0x2a26b3&&_0x2a26b3[_0x25a5('0x6')]){return _0x562ece[_0x25a5('0x3a')][_0x25a5('0x3e')](_0x2a26b3);}});}});}})[_0x25a5('0x27')](function(){if(_0xd70ce7['changed'](_0x25a5('0x1c'))||_0xd70ce7[_0x25a5('0x3c')]('context')){return _0x562ece[_0x25a5('0x3a')]['destroy']({'where':{'UserId':_0xd70ce7['id'],'type':'system','ChanSpyId':null}})[_0x25a5('0x27')](function(){var _0x4fb72d=getUserApplications(_0xd70ce7,_0xd70ce7[_0x25a5('0x28')]);if(_0xd70ce7[_0x25a5('0x28')]!=_0xd70ce7[_0x25a5('0x20')]){_0x4fb72d=_0x4fb72d[_0x25a5('0x3f')](getUserApplications(_0xd70ce7,_0xd70ce7['name']));}return _0x562ece['VoiceExtension'][_0x25a5('0x3e')](_0x4fb72d);});}})[_0x25a5('0x27')](function(){_0x69f470();})[_0x25a5('0x29')](function(_0x5c73ce){_0x69f470(_0x5c73ce);});},'afterDestroy':function(_0x4b7865){return _0x562ece['VoiceExtension']['destroy']({'where':{'UserId':_0x4b7865['id'],'type':_0x25a5('0x9')}});}},'instanceMethods':{'authenticate':function(_0x459653,_0x1408c0){if(!_0x1408c0){return this[_0x25a5('0x14')]===this[_0x25a5('0x40')](_0x459653);}var _0x1ab809=this;this[_0x25a5('0x40')](_0x459653,function(_0x15effe,_0x736c48){if(_0x15effe){_0x1408c0(_0x15effe);}if(_0x1ab809['password']===_0x736c48){_0x1408c0(null,!![]);}else{_0x1408c0(null,![]);}});},'makeSalt':function(_0x18a23c,_0x1e2e33){var _0x3f89bf=0x10;if(typeof arguments[0x0]===_0x25a5('0x41')){_0x1e2e33=arguments[0x0];_0x18a23c=_0x3f89bf;}else if(typeof arguments[0x1]==='function'){_0x1e2e33=arguments[0x1];}else{throw new Error(_0x25a5('0x42'));}if(!_0x18a23c){_0x18a23c=_0x3f89bf;}return crypto['randomBytes'](_0x18a23c,function(_0x2448eb,_0x480ede){if(_0x2448eb){_0x1e2e33(_0x2448eb);}return _0x1e2e33(null,_0x480ede[_0x25a5('0x43')](_0x25a5('0x44')));});},'encryptPassword':function(_0x2ad057,_0x1b5ded){if(!_0x2ad057||!this[_0x25a5('0x45')]){return _0x1b5ded?_0x1b5ded(null):null;}var _0x35ff66=0x2710;var _0x1bc73f=0x40;var _0x5cb16d=Buffer[_0x25a5('0x46')](this[_0x25a5('0x45')],_0x25a5('0x44'));if(!_0x1b5ded){return crypto[_0x25a5('0x47')](_0x2ad057,_0x5cb16d,_0x35ff66,_0x1bc73f,_0x25a5('0x48'))[_0x25a5('0x43')](_0x25a5('0x44'));}return crypto[_0x25a5('0x49')](_0x2ad057,_0x5cb16d,_0x35ff66,_0x1bc73f,_0x25a5('0x48'),function(_0x1876e3,_0x498f92){if(_0x1876e3){_0x1b5ded(_0x1876e3);}return _0x1b5ded(null,_0x498f92[_0x25a5('0x43')]('base64'));});},'updatePassword':function(_0x256e3b){if(!this['password']){return _0x256e3b(null);}if(!validatePresenceOf(this[_0x25a5('0x14')])&&authTypes['indexOf'](this[_0x25a5('0x4a')])===-0x1){_0x256e3b(new Error('Invalid\x20password'));}var _0x454e7e=this;this[_0x25a5('0x4b')](function(_0x26d1cc,_0x274f96){if(_0x26d1cc){return _0x256e3b(_0x26d1cc);}_0x454e7e[_0x25a5('0x45')]=_0x274f96;_0x454e7e[_0x25a5('0x40')](_0x454e7e['password'],function(_0x3a5976,_0x322e0b){if(_0x3a5976){_0x256e3b(_0x3a5976);}_0x454e7e['password']=_0x322e0b;_0x256e3b(null);});});},'updateMd5Password':function(){this[_0x25a5('0x4c')]=md5(this[_0x25a5('0x20')]+_0x25a5('0x4d')+this['password']);return this[_0x25a5('0x4c')];},'getRealtimeData':function(){var _0x1e6274={'id':this['id']};var _0x2f9653=jayson[_0x25a5('0x4e')][_0x25a5('0x4f')]({'port':0x232a});var _0x3b9958=jayson[_0x25a5('0x4e')][_0x25a5('0x4f')]({'port':0x232c});var _0x464a95={};var _0x1a5304={};return _0x2f9653[_0x25a5('0x50')](_0x25a5('0x51'),_0x1e6274)[_0x25a5('0x27')](function(_0x804094){if(_0x804094[_0x25a5('0x52')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)');}_0x464a95=_0x804094['result'];return _0x3b9958['request'](_0x25a5('0x51'),_0x1e6274);})[_0x25a5('0x27')](function(_0x5a694d){if(_0x5a694d[_0x25a5('0x52')]){throw new Error(_0x25a5('0x53'));}_0x1a5304=_0x5a694d[_0x25a5('0x54')];var _0x4f563d=_[_0x25a5('0xe')]({},_0x464a95,_0x1a5304);return _0x4f563d;})[_0x25a5('0x29')](function(_0x17ebc0){throw _0x17ebc0;});},'unpause':function(_0x10030a,_0x3dc8f6=_0x25a5('0x55')){var _0x1aec33=this;var _0x41c1f7={};return Promise[_0x25a5('0x38')]()['then'](function(){if(!_0x10030a||_0x10030a==='voice'&&_0x3dc8f6===_0x25a5('0x55')){var _0x2a294c=jayson[_0x25a5('0x4e')][_0x25a5('0x4f')]({'port':0x232a});return _0x2a294c[_0x25a5('0x50')](_0x25a5('0x56'),{'id':_0x1aec33['id'],'name':_0x1aec33[_0x25a5('0x20')],'pause':![]})[_0x25a5('0x27')](function(_0x40ecfe){if(_0x40ecfe[_0x25a5('0x52')]){throw new Error(util[_0x25a5('0xa')](_0x25a5('0x57'),_0x1aec33['id'],_0x1aec33[_0x25a5('0x20')]));}return _0x40ecfe[_0x25a5('0x54')][_0x25a5('0x58')];});}})[_0x25a5('0x27')](function(){if(!_0x10030a||_0x10030a===_0x25a5('0x59')){return _0x562ece['UserVoiceQueueRt'][_0x25a5('0x5a')]({'paused':0x0},{'where':{'UserId':_0x1aec33['id']},'individualHooks':!![]});}})[_0x25a5('0x27')](function(){var _0x1a39fe=!_0x10030a?_0x25a5('0x26'):_0x25a5('0x5b');var _0x220400={'membername':_0x1aec33[_0x25a5('0x20')],'type':_0x25a5('0x5c'),'exitAt':null};if(_0x10030a){_0x220400[_0x25a5('0x5d')]=_0x10030a;}return _0x562ece[_0x25a5('0x5e')][_0x1a39fe]({'where':_0x220400});})[_0x25a5('0x27')](function(_0x215fb1){if(_0x215fb1){var _0x2c3ba3=Array['isArray'](_0x215fb1)?_0x215fb1:[_0x215fb1];var _0x3124a7=_0x2c3ba3[_0x25a5('0x5f')](function(_0x152c8c){return _0x152c8c['update']({'exitAt':moment()[_0x25a5('0xa')](_0x25a5('0x60')),'data2':_0x3dc8f6});});return Promise['all'](_0x3124a7);}})['then'](function(){if(!_0x10030a){_0x41c1f7[_0x25a5('0x61')]=![];_0x41c1f7['mailPause']=![];_0x41c1f7[_0x25a5('0x62')]=![];_0x41c1f7[_0x25a5('0x63')]=![];_0x41c1f7[_0x25a5('0x64')]=![];_0x41c1f7[_0x25a5('0x65')]=![];_0x41c1f7['openchannelPause']=![];}else{_0x41c1f7[_0x10030a+'Pause']=![];}return _0x1aec33[_0x25a5('0x66')]();})[_0x25a5('0x27')](function(_0x22a795){var _0x17fad7=require(_0x25a5('0x67'));var _0x98ef13=_0x17fad7[_0x25a5('0x68')]();_0x98ef13[_0x25a5('0x69')](function(_0x3ebed3){var _0x31e761=_0x3ebed3+_0x25a5('0x6a');_0x1aec33[_0x25a5('0x6b')]([_0x31e761],_0x22a795[_0x31e761]);});return _0x1aec33[_0x25a5('0x5a')](_0x41c1f7);})[_0x25a5('0x29')](function(_0x190991){throw _0x190991;});}}});};