Built motion from commit 47436d59.|2.6.7
[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 _0xac35=['find','userProfileId','privacyEnabled','updateMd5Password','updatePassword','resolve','changed','internal','concat','createUserSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','salt','base64','pbkdf2Sync','sha1','pbkdf2',':asterisk:','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','voice','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','UserVoiceQueueRt','update','findOne','PAUSE','isArray','map','all','voicePause','mailPause','chatPause','smsPause','openchannelPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','bluebird','crypto','util','md5','moment','lodash','jayson/promise','./user.attributes','length','context','from-sip','system','format','push','merge','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','password','ChanSpy','SIP/%s,%s','options','join','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','Set','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxX','name','Hangup','priority','VoiceChanSpy','findAll','then','catch','exports','models','User','utf8','utf8_bin','undefined','UserProfile'];(function(_0x1196bd,_0xba4aea){var _0x26014f=function(_0x542a3d){while(--_0x542a3d){_0x1196bd['push'](_0x1196bd['shift']());}};_0x26014f(++_0xba4aea);}(_0xac35,0x167));var _0x5ac3=function(_0x4fa622,_0x4e2fe9){_0x4fa622=_0x4fa622-0x0;var _0xc754da=_0xac35[_0x4fa622];return _0xc754da;};'use strict';var BPromise=require(_0x5ac3('0x0'));var crypto=require(_0x5ac3('0x1'));var util=require(_0x5ac3('0x2'));var md5=require(_0x5ac3('0x3'));var moment=require(_0x5ac3('0x4'));var _=require(_0x5ac3('0x5'));var jayson=require(_0x5ac3('0x6'));var attributes=require(_0x5ac3('0x7'));var authTypes=['google'];var validatePresenceOf=function(_0x4ff975){return _0x4ff975&&_0x4ff975[_0x5ac3('0x8')];};var getChanSpyApplications=function(_0x5b5642,_0x353bf5,_0x406c53){var _0x18cb02={'context':_0x5b5642[_0x5ac3('0x9')]||_0x5ac3('0xa'),'type':_0x5ac3('0xb'),'isApp':![],'UserId':_0x5b5642['id']};var _0x385a29=[];for(var _0x56dc04=0x0,_0x176f2c=0x1;_0x56dc04<_0x406c53[_0x5ac3('0x8')];_0x56dc04++,_0x176f2c=0x1){var _0x34ec64={'exten':util[_0x5ac3('0xc')]('%s%s',_0x406c53[_0x56dc04]['prefix'],_0x353bf5),'ChanSpyId':_0x406c53[_0x56dc04]['id']};_0x385a29[_0x5ac3('0xd')](_[_0x5ac3('0xe')]({'app':'Set','appdata':util['format'](_0x5ac3('0xf'),_0x5ac3('0x10')),'priority':_0x176f2c++},_0x18cb02,_0x34ec64));if(_0x406c53[_0x56dc04][_0x5ac3('0x11')]){_0x385a29['push'](_[_0x5ac3('0xe')]({'app':_0x5ac3('0x12'),'appdata':util['format'](_0x5ac3('0x13'),_0x406c53[_0x56dc04]['recordingFormat']),'priority':_0x176f2c++},_0x18cb02,_0x34ec64));}if(_0x406c53[_0x56dc04]['auth']){_0x385a29[_0x5ac3('0xd')](_[_0x5ac3('0xe')]({'app':'Authenticate','appdata':_0x406c53[_0x56dc04][_0x5ac3('0x14')],'priority':_0x176f2c++},_0x18cb02,_0x34ec64));}_0x385a29[_0x5ac3('0xd')](_[_0x5ac3('0xe')]({'app':_0x5ac3('0x15'),'appdata':util[_0x5ac3('0xc')](_0x5ac3('0x16'),_0x5b5642['name'],_0x406c53[_0x56dc04]['options']?_0x406c53[_0x56dc04][_0x5ac3('0x17')][_0x5ac3('0x18')](''):''),'priority':_0x176f2c++},_0x18cb02,_0x34ec64));if(_0x406c53[_0x56dc04][_0x5ac3('0x11')]){_0x385a29[_0x5ac3('0xd')](_['merge']({'app':_0x5ac3('0x19'),'priority':_0x176f2c++},_0x18cb02,_0x34ec64));}}return _0x385a29;};var getUserApplications=function(_0x2167f8,_0x2324b3){var _0x2d3476=[_0x5ac3('0x1a'),_0x5ac3('0x1b'),_0x5ac3('0x1c')];var _0x370d03={'context':_0x2167f8[_0x5ac3('0x9')]||_0x5ac3('0xa'),'exten':_0x2324b3,'type':_0x5ac3('0xb'),'isApp':![],'UserId':_0x2167f8['id']};var _0x52e17e=[{'app':'Set','appdata':_0x5ac3('0x1d')}];if(_0x2167f8[_0x5ac3('0x1e')]&&_[_0x5ac3('0x1f')](_0x2d3476,_0x2167f8['extensionMonitor'])){_0x52e17e[_0x5ac3('0xd')]({'app':_0x5ac3('0x20'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x52e17e[_0x5ac3('0xd')]({'app':'Set','appdata':util[_0x5ac3('0xc')](_0x5ac3('0x21'),_0x2167f8[_0x5ac3('0x1e')])});_0x52e17e['push']({'app':'Dial','appdata':util[_0x5ac3('0xc')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x2167f8['name'])});}else{_0x52e17e[_0x5ac3('0xd')]({'app':'Dial','appdata':util['format'](_0x5ac3('0x22'),_0x2167f8[_0x5ac3('0x23')])});}_0x52e17e[_0x5ac3('0xd')]({'app':_0x5ac3('0x24')});for(var _0x31678a=0x0;_0x31678a<_0x52e17e[_0x5ac3('0x8')];_0x31678a++){_0x52e17e[_0x31678a][_0x5ac3('0x25')]=_0x31678a+0x1;_0x52e17e[_0x31678a]=_['defaults'](_0x52e17e[_0x31678a],_0x370d03);}return _0x52e17e;};var getChanSpyPromise=function(_0x1bba5d,_0x3975c0){return new BPromise(function(_0x4b1871,_0x1c35d0){return _0x1bba5d[_0x5ac3('0x26')][_0x5ac3('0x27')]()[_0x5ac3('0x28')](function(_0x1b25a5){if(_0x1b25a5){var _0x4de231=getChanSpyApplications(_0x3975c0,_0x3975c0['internal'],_0x1b25a5);if(_0x3975c0['internal']!=_0x3975c0[_0x5ac3('0x23')]){_0x4de231=_0x4de231['concat'](getChanSpyApplications(_0x3975c0,_0x3975c0['name'],_0x1b25a5));}return _0x4b1871(_0x4de231);}return _0x4b1871([]);})[_0x5ac3('0x29')](function(_0xb9afe4){_0x1c35d0(_0xb9afe4);});});};module[_0x5ac3('0x2a')]=function(_0x5a89d2){var _0x3de812=_0x5a89d2[_0x5ac3('0x2b')];return _0x5a89d2['define'](_0x5ac3('0x2c'),attributes,{'tableName':'users','charset':_0x5ac3('0x2d'),'collate':_0x5ac3('0x2e'),'hooks':{'beforeCreate':function(_0x25d388,_0x3a8009,_0x5573e5){var _0x2b9210=typeof _0x25d388['userProfileId']===_0x5ac3('0x2f')?BPromise['resolve'](null):_0x3de812[_0x5ac3('0x30')][_0x5ac3('0x31')]({'where':{'id':_0x25d388[_0x5ac3('0x32')]}});_0x2b9210[_0x5ac3('0x28')](function(_0x36e90f){if(_0x36e90f){_0x25d388[_0x5ac3('0x33')]=_0x36e90f['privacyEnabled'];}})['then'](function(){_0x25d388[_0x5ac3('0x34')]();_0x25d388[_0x5ac3('0x35')](_0x5573e5);})[_0x5ac3('0x29')](function(_0x5a9cd4){_0x5573e5(_0x5a9cd4);});},'beforeUpdate':function(_0x498e9d,_0x3a2c01,_0x5fb0ce){Promise[_0x5ac3('0x36')]()[_0x5ac3('0x28')](function(){if(_0x498e9d[_0x5ac3('0x37')](_0x5ac3('0x32'))===![])return;return _0x3de812['UserProfile']['find']({'where':{'id':_0x498e9d[_0x5ac3('0x32')]}})['then'](function(_0x557b09){if(_0x557b09)_0x498e9d[_0x5ac3('0x33')]=_0x557b09['privacyEnabled'];return;});})[_0x5ac3('0x28')](function(){if(_0x498e9d[_0x5ac3('0x37')](_0x5ac3('0x14'))){_0x498e9d[_0x5ac3('0x34')]();return _0x498e9d[_0x5ac3('0x35')](_0x5fb0ce);}_0x5fb0ce();})['catch'](function(_0x2eef61){_0x5fb0ce(_0x2eef61);});},'afterCreate':function(_0x11011e,_0x10b3d6,_0x38a30e){var _0x167bbf=getUserApplications(_0x11011e,_0x11011e[_0x5ac3('0x38')]);if(_0x11011e[_0x5ac3('0x38')]!=_0x11011e['name']){_0x167bbf=_0x167bbf[_0x5ac3('0x39')](getUserApplications(_0x11011e,_0x11011e[_0x5ac3('0x23')]));}return Promise[_0x5ac3('0x36')]()[_0x5ac3('0x28')](function(){if(!_0x11011e['userSetting']){return _0x11011e[_0x5ac3('0x3a')]({'clientSideLoggingLevel':_0x5ac3('0x3b'),'clientSideLoggingEnabled':![]});}})[_0x5ac3('0x28')](function(){return _0x3de812[_0x5ac3('0x3c')][_0x5ac3('0x3d')](_0x167bbf);})['then'](function(){if(_0x11011e['chanspy']){return getChanSpyPromise(_0x3de812,_0x11011e);}})[_0x5ac3('0x28')](function(_0x48979a){if(_0x48979a&&_0x48979a['length']){return _0x3de812[_0x5ac3('0x3c')][_0x5ac3('0x3d')](_0x48979a);}})['then'](function(){_0x38a30e();})[_0x5ac3('0x29')](function(_0x271a0a){_0x38a30e(_0x271a0a);});},'afterUpdate':function(_0x5b71b2,_0x51d82d,_0x2b8117){return BPromise[_0x5ac3('0x36')]()[_0x5ac3('0x28')](function(){if(_0x5b71b2[_0x5ac3('0x37')](_0x5ac3('0x10'))||_0x5b71b2[_0x5ac3('0x37')](_0x5ac3('0x9'))){return _0x3de812['VoiceExtension'][_0x5ac3('0x3e')]({'where':{'UserId':_0x5b71b2['id'],'type':_0x5ac3('0xb'),'ChanSpyId':{'$ne':null}}})[_0x5ac3('0x28')](function(){if(_0x5b71b2['chanspy']){return getChanSpyPromise(_0x3de812,_0x5b71b2)[_0x5ac3('0x28')](function(_0x4aef32){if(_0x4aef32&&_0x4aef32[_0x5ac3('0x8')]){return _0x3de812[_0x5ac3('0x3c')]['bulkCreate'](_0x4aef32);}});}});}})[_0x5ac3('0x28')](function(){if(_0x5b71b2[_0x5ac3('0x37')](_0x5ac3('0x1e'))||_0x5b71b2[_0x5ac3('0x37')](_0x5ac3('0x9'))){return _0x3de812['VoiceExtension']['destroy']({'where':{'UserId':_0x5b71b2['id'],'type':_0x5ac3('0xb'),'ChanSpyId':null}})[_0x5ac3('0x28')](function(){var _0x580786=getUserApplications(_0x5b71b2,_0x5b71b2[_0x5ac3('0x38')]);if(_0x5b71b2[_0x5ac3('0x38')]!=_0x5b71b2['name']){_0x580786=_0x580786[_0x5ac3('0x39')](getUserApplications(_0x5b71b2,_0x5b71b2['name']));}return _0x3de812['VoiceExtension'][_0x5ac3('0x3d')](_0x580786);});}})[_0x5ac3('0x28')](function(){_0x2b8117();})[_0x5ac3('0x29')](function(_0x3426de){_0x2b8117(_0x3426de);});},'afterDestroy':function(_0x40f6e0){return _0x3de812[_0x5ac3('0x3c')][_0x5ac3('0x3e')]({'where':{'UserId':_0x40f6e0['id'],'type':_0x5ac3('0xb')}});}},'instanceMethods':{'authenticate':function(_0x596b4d,_0x4b9e2c){if(!_0x4b9e2c){return this[_0x5ac3('0x14')]===this['encryptPassword'](_0x596b4d);}var _0x29bf7c=this;this[_0x5ac3('0x3f')](_0x596b4d,function(_0x5209ab,_0x70d7b5){if(_0x5209ab){_0x4b9e2c(_0x5209ab);}if(_0x29bf7c['password']===_0x70d7b5){_0x4b9e2c(null,!![]);}else{_0x4b9e2c(null,![]);}});},'makeSalt':function(_0x38c5d2,_0x27d3b2){var _0x5c4451=0x10;if(typeof arguments[0x0]===_0x5ac3('0x40')){_0x27d3b2=arguments[0x0];_0x38c5d2=_0x5c4451;}else if(typeof arguments[0x1]==='function'){_0x27d3b2=arguments[0x1];}else{throw new Error(_0x5ac3('0x41'));}if(!_0x38c5d2){_0x38c5d2=_0x5c4451;}return crypto[_0x5ac3('0x42')](_0x38c5d2,function(_0x48edd5,_0x510009){if(_0x48edd5){_0x27d3b2(_0x48edd5);}return _0x27d3b2(null,_0x510009[_0x5ac3('0x43')]('base64'));});},'encryptPassword':function(_0x8fbf7,_0x27580a){if(!_0x8fbf7||!this['salt']){return _0x27580a?_0x27580a(null):null;}var _0x49c569=0x2710;var _0x523896=0x40;var _0x58e397=Buffer['from'](this[_0x5ac3('0x44')],_0x5ac3('0x45'));if(!_0x27580a){return crypto[_0x5ac3('0x46')](_0x8fbf7,_0x58e397,_0x49c569,_0x523896,_0x5ac3('0x47'))[_0x5ac3('0x43')]('base64');}return crypto[_0x5ac3('0x48')](_0x8fbf7,_0x58e397,_0x49c569,_0x523896,_0x5ac3('0x47'),function(_0x4821c3,_0xe4eb11){if(_0x4821c3){_0x27580a(_0x4821c3);}return _0x27580a(null,_0xe4eb11[_0x5ac3('0x43')](_0x5ac3('0x45')));});},'updatePassword':function(_0x52b4ec){if(!this['password']){return _0x52b4ec(null);}if(!validatePresenceOf(this['password'])&&authTypes['indexOf'](this['provider'])===-0x1){_0x52b4ec(new Error('Invalid\x20password'));}var _0x188e5f=this;this['makeSalt'](function(_0x1dde96,_0x19b2c8){if(_0x1dde96){return _0x52b4ec(_0x1dde96);}_0x188e5f[_0x5ac3('0x44')]=_0x19b2c8;_0x188e5f['encryptPassword'](_0x188e5f[_0x5ac3('0x14')],function(_0x558ad5,_0xa2a9dc){if(_0x558ad5){_0x52b4ec(_0x558ad5);}_0x188e5f[_0x5ac3('0x14')]=_0xa2a9dc;_0x52b4ec(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this['name']+_0x5ac3('0x49')+this['password']);return this['md5secret'];},'getRealtimeData':function(){var _0x5dfc5c={'id':this['id']};var _0x386af7=jayson[_0x5ac3('0x4a')][_0x5ac3('0x4b')]({'port':0x232a});var _0x3a38a6=jayson['client']['http']({'port':0x232c});var _0x3b6413={};var _0x6b10bd={};return _0x386af7[_0x5ac3('0x4c')](_0x5ac3('0x4d'),_0x5dfc5c)[_0x5ac3('0x28')](function(_0x8b3694){if(_0x8b3694[_0x5ac3('0x3b')]){throw new Error(_0x5ac3('0x4e'));}_0x3b6413=_0x8b3694[_0x5ac3('0x4f')];return _0x3a38a6['request'](_0x5ac3('0x4d'),_0x5dfc5c);})[_0x5ac3('0x28')](function(_0x548489){if(_0x548489[_0x5ac3('0x3b')]){throw new Error(_0x5ac3('0x50'));}_0x6b10bd=_0x548489[_0x5ac3('0x4f')];var _0x11807f=_[_0x5ac3('0xe')]({},_0x3b6413,_0x6b10bd);return _0x11807f;})[_0x5ac3('0x29')](function(_0x4d90ca){throw _0x4d90ca;});},'unpause':function(_0x1c1f35,_0x5a9eab=_0x5ac3('0x51')){var _0x52aa90=this;var _0x135677={};return Promise[_0x5ac3('0x36')]()['then'](function(){if(!_0x1c1f35||_0x1c1f35===_0x5ac3('0x52')&&_0x5a9eab===_0x5ac3('0x51')){var _0x3358d9=jayson[_0x5ac3('0x4a')][_0x5ac3('0x4b')]({'port':0x232a});return _0x3358d9[_0x5ac3('0x4c')](_0x5ac3('0x53'),{'id':_0x52aa90['id'],'name':_0x52aa90[_0x5ac3('0x23')],'pause':![]})[_0x5ac3('0x28')](function(_0x5e77b9){if(_0x5e77b9[_0x5ac3('0x3b')]){throw new Error(util[_0x5ac3('0xc')](_0x5ac3('0x54'),_0x52aa90['id'],_0x52aa90[_0x5ac3('0x23')]));}return _0x5e77b9[_0x5ac3('0x4f')]['message'];});}})[_0x5ac3('0x28')](function(){if(!_0x1c1f35||_0x1c1f35==='voice'){return _0x3de812[_0x5ac3('0x55')][_0x5ac3('0x56')]({'paused':0x0},{'where':{'UserId':_0x52aa90['id']},'individualHooks':!![]});}})[_0x5ac3('0x28')](function(){var _0x5454e3=!_0x1c1f35?_0x5ac3('0x27'):_0x5ac3('0x57');return _0x3de812['MemberReport'][_0x5454e3]({'where':{'channel':_0x1c1f35,'membername':_0x52aa90['name'],'type':_0x5ac3('0x58'),'exitAt':null}});})[_0x5ac3('0x28')](function(_0x3ca67b){if(_0x3ca67b){var _0x59ecca=Array[_0x5ac3('0x59')](_0x3ca67b)?_0x3ca67b:[_0x3ca67b];var _0x5de8db=_0x59ecca[_0x5ac3('0x5a')](function(_0x3ee7a2){return _0x3ee7a2[_0x5ac3('0x56')]({'exitAt':moment()[_0x5ac3('0xc')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x5a9eab});});return Promise[_0x5ac3('0x5b')](_0x5de8db);}})[_0x5ac3('0x28')](function(){if(!_0x1c1f35){_0x135677[_0x5ac3('0x5c')]=![];_0x135677[_0x5ac3('0x5d')]=![];_0x135677[_0x5ac3('0x5e')]=![];_0x135677['faxPause']=![];_0x135677[_0x5ac3('0x5f')]=![];_0x135677['whatsappPause']=![];_0x135677[_0x5ac3('0x60')]=![];}else{_0x135677[_0x1c1f35+_0x5ac3('0x61')]=![];}return _0x52aa90[_0x5ac3('0x62')]();})['then'](function(_0x4fcbde){var _0x46b6e7=require(_0x5ac3('0x63'));var _0x59bd67=_0x46b6e7[_0x5ac3('0x64')]();_0x59bd67[_0x5ac3('0x65')](function(_0x1e5e31){var _0x4c427e=_0x1e5e31+'Status';_0x52aa90['setDataValue']([_0x4c427e],_0x4fcbde[_0x4c427e]);});return _0x52aa90[_0x5ac3('0x56')](_0x135677);})[_0x5ac3('0x29')](function(_0x190c14){throw _0x190c14;});}}});};