Built motion from commit efa66e19.|2.6.22
[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 _0x6bff=['models','define','User','users','utf8_bin','userProfileId','resolve','UserProfile','find','then','privacyEnabled','updateMd5Password','updatePassword','changed','password','userSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','salt','from','pbkdf2Sync','base64','pbkdf2','sha1','indexOf','provider','Invalid\x20password','md5secret','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','voice','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','update','findOne','PAUSE','MemberReport','isArray','map','YYYY-MM-DD\x20HH:mm:ss','all','mailPause','smsPause','whatsappPause','openchannelPause','../../config/utils','getChannels','forEach','Status','bluebird','crypto','md5','lodash','jayson/promise','./user.attributes','google','length','context','from-sip','system','format','%s%s','prefix','merge','Set','chanspy','record','recordingFormat','auth','Authenticate','push','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','wav','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','SIP/%s,,tTxX','priority','defaults','VoiceChanSpy','internal','concat','catch','exports'];(function(_0x4b2a5c,_0x29b5eb){var _0xed6e3c=function(_0x476514){while(--_0x476514){_0x4b2a5c['push'](_0x4b2a5c['shift']());}};_0xed6e3c(++_0x29b5eb);}(_0x6bff,0xa6));var _0xf6bf=function(_0x52a85f,_0x476a61){_0x52a85f=_0x52a85f-0x0;var _0x25358d=_0x6bff[_0x52a85f];return _0x25358d;};'use strict';var BPromise=require(_0xf6bf('0x0'));var crypto=require(_0xf6bf('0x1'));var util=require('util');var md5=require(_0xf6bf('0x2'));var moment=require('moment');var _=require(_0xf6bf('0x3'));var jayson=require(_0xf6bf('0x4'));var attributes=require(_0xf6bf('0x5'));var authTypes=[_0xf6bf('0x6')];var validatePresenceOf=function(_0x4cc8b6){return _0x4cc8b6&&_0x4cc8b6[_0xf6bf('0x7')];};var getChanSpyApplications=function(_0x39bf4e,_0x27cdda,_0x239d17){var _0x9cf3a4={'context':_0x39bf4e[_0xf6bf('0x8')]||_0xf6bf('0x9'),'type':_0xf6bf('0xa'),'isApp':![],'UserId':_0x39bf4e['id']};var _0x5e135f=[];for(var _0x5aa5dc=0x0,_0x4e06fd=0x1;_0x5aa5dc<_0x239d17[_0xf6bf('0x7')];_0x5aa5dc++,_0x4e06fd=0x1){var _0x116fa6={'exten':util[_0xf6bf('0xb')](_0xf6bf('0xc'),_0x239d17[_0x5aa5dc][_0xf6bf('0xd')],_0x27cdda),'ChanSpyId':_0x239d17[_0x5aa5dc]['id']};_0x5e135f['push'](_[_0xf6bf('0xe')]({'app':_0xf6bf('0xf'),'appdata':util['format']('CDR(type)=%s',_0xf6bf('0x10')),'priority':_0x4e06fd++},_0x9cf3a4,_0x116fa6));if(_0x239d17[_0x5aa5dc][_0xf6bf('0x11')]){_0x5e135f['push'](_[_0xf6bf('0xe')]({'app':'MixMonitor','appdata':util[_0xf6bf('0xb')]('${UNIQUEID}.%s,a',_0x239d17[_0x5aa5dc][_0xf6bf('0x12')]),'priority':_0x4e06fd++},_0x9cf3a4,_0x116fa6));}if(_0x239d17[_0x5aa5dc][_0xf6bf('0x13')]){_0x5e135f['push'](_['merge']({'app':_0xf6bf('0x14'),'appdata':_0x239d17[_0x5aa5dc]['password'],'priority':_0x4e06fd++},_0x9cf3a4,_0x116fa6));}_0x5e135f[_0xf6bf('0x15')](_[_0xf6bf('0xe')]({'app':_0xf6bf('0x16'),'appdata':util[_0xf6bf('0xb')](_0xf6bf('0x17'),_0x39bf4e[_0xf6bf('0x18')],_0x239d17[_0x5aa5dc]['options']?_0x239d17[_0x5aa5dc][_0xf6bf('0x19')][_0xf6bf('0x1a')](''):''),'priority':_0x4e06fd++},_0x9cf3a4,_0x116fa6));if(_0x239d17[_0x5aa5dc][_0xf6bf('0x11')]){_0x5e135f[_0xf6bf('0x15')](_['merge']({'app':_0xf6bf('0x1b'),'priority':_0x4e06fd++},_0x9cf3a4,_0x116fa6));}}return _0x5e135f;};var getUserApplications=function(_0x1393ab,_0x3c1e2c){var _0x2e5f6b=[_0xf6bf('0x1c'),'WAV',_0xf6bf('0x1d')];var _0xfebab8={'context':_0x1393ab[_0xf6bf('0x8')]||_0xf6bf('0x9'),'exten':_0x3c1e2c,'type':_0xf6bf('0xa'),'isApp':![],'UserId':_0x1393ab['id']};var _0x4c2d5=[{'app':_0xf6bf('0xf'),'appdata':_0xf6bf('0x1e')}];if(_0x1393ab[_0xf6bf('0x1f')]&&_[_0xf6bf('0x20')](_0x2e5f6b,_0x1393ab[_0xf6bf('0x1f')])){_0x4c2d5[_0xf6bf('0x15')]({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x4c2d5[_0xf6bf('0x15')]({'app':_0xf6bf('0xf'),'appdata':util['format'](_0xf6bf('0x21'),_0x1393ab[_0xf6bf('0x1f')])});_0x4c2d5[_0xf6bf('0x15')]({'app':'Dial','appdata':util[_0xf6bf('0xb')](_0xf6bf('0x22'),_0x1393ab[_0xf6bf('0x18')])});}else{_0x4c2d5[_0xf6bf('0x15')]({'app':_0xf6bf('0x23'),'appdata':util[_0xf6bf('0xb')](_0xf6bf('0x24'),_0x1393ab['name'])});}_0x4c2d5[_0xf6bf('0x15')]({'app':'Hangup'});for(var _0x33eda8=0x0;_0x33eda8<_0x4c2d5[_0xf6bf('0x7')];_0x33eda8++){_0x4c2d5[_0x33eda8][_0xf6bf('0x25')]=_0x33eda8+0x1;_0x4c2d5[_0x33eda8]=_[_0xf6bf('0x26')](_0x4c2d5[_0x33eda8],_0xfebab8);}return _0x4c2d5;};var getChanSpyPromise=function(_0x3a1e69,_0x53d3c7){return new BPromise(function(_0xe3ffb1,_0x3efe8c){return _0x3a1e69[_0xf6bf('0x27')]['findAll']()['then'](function(_0x2a5cea){if(_0x2a5cea){var _0x130969=getChanSpyApplications(_0x53d3c7,_0x53d3c7[_0xf6bf('0x28')],_0x2a5cea);if(_0x53d3c7[_0xf6bf('0x28')]!=_0x53d3c7[_0xf6bf('0x18')]){_0x130969=_0x130969[_0xf6bf('0x29')](getChanSpyApplications(_0x53d3c7,_0x53d3c7[_0xf6bf('0x18')],_0x2a5cea));}return _0xe3ffb1(_0x130969);}return _0xe3ffb1([]);})[_0xf6bf('0x2a')](function(_0x258731){_0x3efe8c(_0x258731);});});};module[_0xf6bf('0x2b')]=function(_0x4274b7){var _0x311764=_0x4274b7[_0xf6bf('0x2c')];return _0x4274b7[_0xf6bf('0x2d')](_0xf6bf('0x2e'),attributes,{'tableName':_0xf6bf('0x2f'),'charset':'utf8','collate':_0xf6bf('0x30'),'hooks':{'beforeCreate':function(_0x6946d0,_0x59cf12,_0x5406c8){var _0xb40e3=typeof _0x6946d0[_0xf6bf('0x31')]==='undefined'?BPromise[_0xf6bf('0x32')](null):_0x311764[_0xf6bf('0x33')][_0xf6bf('0x34')]({'where':{'id':_0x6946d0[_0xf6bf('0x31')]}});_0xb40e3[_0xf6bf('0x35')](function(_0xd5f89d){if(_0xd5f89d){_0x6946d0[_0xf6bf('0x36')]=_0xd5f89d[_0xf6bf('0x36')];}})[_0xf6bf('0x35')](function(){_0x6946d0[_0xf6bf('0x37')]();_0x6946d0[_0xf6bf('0x38')](_0x5406c8);})[_0xf6bf('0x2a')](function(_0x47df18){_0x5406c8(_0x47df18);});},'beforeUpdate':function(_0x59f767,_0x5edf70,_0x4a379b){Promise['resolve']()[_0xf6bf('0x35')](function(){if(_0x59f767[_0xf6bf('0x39')](_0xf6bf('0x31'))===![])return;return _0x311764['UserProfile'][_0xf6bf('0x34')]({'where':{'id':_0x59f767[_0xf6bf('0x31')]}})[_0xf6bf('0x35')](function(_0x519415){if(_0x519415)_0x59f767[_0xf6bf('0x36')]=_0x519415[_0xf6bf('0x36')];return;});})[_0xf6bf('0x35')](function(){if(_0x59f767[_0xf6bf('0x39')](_0xf6bf('0x3a'))){_0x59f767['updateMd5Password']();return _0x59f767[_0xf6bf('0x38')](_0x4a379b);}_0x4a379b();})[_0xf6bf('0x2a')](function(_0x4cb005){_0x4a379b(_0x4cb005);});},'afterCreate':function(_0x11cc75,_0x386985,_0x6c6474){var _0x31a0e0=getUserApplications(_0x11cc75,_0x11cc75['internal']);if(_0x11cc75[_0xf6bf('0x28')]!=_0x11cc75[_0xf6bf('0x18')]){_0x31a0e0=_0x31a0e0[_0xf6bf('0x29')](getUserApplications(_0x11cc75,_0x11cc75[_0xf6bf('0x18')]));}return Promise['resolve']()[_0xf6bf('0x35')](function(){if(!_0x11cc75[_0xf6bf('0x3b')]){return _0x11cc75['createUserSetting']({'clientSideLoggingLevel':_0xf6bf('0x3c'),'clientSideLoggingEnabled':![]});}})[_0xf6bf('0x35')](function(){return _0x311764[_0xf6bf('0x3d')][_0xf6bf('0x3e')](_0x31a0e0);})[_0xf6bf('0x35')](function(){if(_0x11cc75[_0xf6bf('0x10')]){return getChanSpyPromise(_0x311764,_0x11cc75);}})[_0xf6bf('0x35')](function(_0x939e1f){if(_0x939e1f&&_0x939e1f[_0xf6bf('0x7')]){return _0x311764['VoiceExtension']['bulkCreate'](_0x939e1f);}})[_0xf6bf('0x35')](function(){_0x6c6474();})[_0xf6bf('0x2a')](function(_0x31245e){_0x6c6474(_0x31245e);});},'afterUpdate':function(_0x593635,_0x68db8f,_0x1cbac7){return BPromise[_0xf6bf('0x32')]()[_0xf6bf('0x35')](function(){if(_0x593635[_0xf6bf('0x39')](_0xf6bf('0x10'))||_0x593635[_0xf6bf('0x39')](_0xf6bf('0x8'))){return _0x311764[_0xf6bf('0x3d')][_0xf6bf('0x3f')]({'where':{'UserId':_0x593635['id'],'type':_0xf6bf('0xa'),'ChanSpyId':{'$ne':null}}})[_0xf6bf('0x35')](function(){if(_0x593635[_0xf6bf('0x10')]){return getChanSpyPromise(_0x311764,_0x593635)['then'](function(_0x28ce67){if(_0x28ce67&&_0x28ce67[_0xf6bf('0x7')]){return _0x311764[_0xf6bf('0x3d')]['bulkCreate'](_0x28ce67);}});}});}})[_0xf6bf('0x35')](function(){if(_0x593635[_0xf6bf('0x39')](_0xf6bf('0x1f'))||_0x593635[_0xf6bf('0x39')](_0xf6bf('0x8'))){return _0x311764[_0xf6bf('0x3d')]['destroy']({'where':{'UserId':_0x593635['id'],'type':_0xf6bf('0xa'),'ChanSpyId':null}})['then'](function(){var _0x4de462=getUserApplications(_0x593635,_0x593635[_0xf6bf('0x28')]);if(_0x593635[_0xf6bf('0x28')]!=_0x593635[_0xf6bf('0x18')]){_0x4de462=_0x4de462[_0xf6bf('0x29')](getUserApplications(_0x593635,_0x593635['name']));}return _0x311764[_0xf6bf('0x3d')]['bulkCreate'](_0x4de462);});}})['then'](function(){_0x1cbac7();})[_0xf6bf('0x2a')](function(_0x17d4d1){_0x1cbac7(_0x17d4d1);});},'afterDestroy':function(_0x40cfbb){return _0x311764['VoiceExtension'][_0xf6bf('0x3f')]({'where':{'UserId':_0x40cfbb['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x137200,_0x550b3a){if(!_0x550b3a){return this['password']===this[_0xf6bf('0x40')](_0x137200);}var _0x2bf43c=this;this[_0xf6bf('0x40')](_0x137200,function(_0x342bd7,_0x4e3d6b){if(_0x342bd7){_0x550b3a(_0x342bd7);}if(_0x2bf43c[_0xf6bf('0x3a')]===_0x4e3d6b){_0x550b3a(null,!![]);}else{_0x550b3a(null,![]);}});},'makeSalt':function(_0x240af3,_0x99c865){var _0x805472=0x10;if(typeof arguments[0x0]==='function'){_0x99c865=arguments[0x0];_0x240af3=_0x805472;}else if(typeof arguments[0x1]===_0xf6bf('0x41')){_0x99c865=arguments[0x1];}else{throw new Error(_0xf6bf('0x42'));}if(!_0x240af3){_0x240af3=_0x805472;}return crypto[_0xf6bf('0x43')](_0x240af3,function(_0x4b40f6,_0x2421f2){if(_0x4b40f6){_0x99c865(_0x4b40f6);}return _0x99c865(null,_0x2421f2[_0xf6bf('0x44')]('base64'));});},'encryptPassword':function(_0x572716,_0x140664){if(!_0x572716||!this[_0xf6bf('0x45')]){return _0x140664?_0x140664(null):null;}var _0x4913c9=0x2710;var _0x1e4b45=0x40;var _0x18950d=Buffer[_0xf6bf('0x46')](this[_0xf6bf('0x45')],'base64');if(!_0x140664){return crypto[_0xf6bf('0x47')](_0x572716,_0x18950d,_0x4913c9,_0x1e4b45,'sha1')[_0xf6bf('0x44')](_0xf6bf('0x48'));}return crypto[_0xf6bf('0x49')](_0x572716,_0x18950d,_0x4913c9,_0x1e4b45,_0xf6bf('0x4a'),function(_0x38473f,_0x2c63ad){if(_0x38473f){_0x140664(_0x38473f);}return _0x140664(null,_0x2c63ad[_0xf6bf('0x44')]('base64'));});},'updatePassword':function(_0x247188){if(!this[_0xf6bf('0x3a')]){return _0x247188(null);}if(!validatePresenceOf(this[_0xf6bf('0x3a')])&&authTypes[_0xf6bf('0x4b')](this[_0xf6bf('0x4c')])===-0x1){_0x247188(new Error(_0xf6bf('0x4d')));}var _0x45aa89=this;this['makeSalt'](function(_0x50f175,_0x5909a0){if(_0x50f175){return _0x247188(_0x50f175);}_0x45aa89[_0xf6bf('0x45')]=_0x5909a0;_0x45aa89['encryptPassword'](_0x45aa89['password'],function(_0x31e8c8,_0x2f9d16){if(_0x31e8c8){_0x247188(_0x31e8c8);}_0x45aa89[_0xf6bf('0x3a')]=_0x2f9d16;_0x247188(null);});});},'updateMd5Password':function(){this[_0xf6bf('0x4e')]=md5(this['name']+':asterisk:'+this[_0xf6bf('0x3a')]);return this[_0xf6bf('0x4e')];},'getRealtimeData':function(){var _0x3e309b={'id':this['id']};var _0x4a6178=jayson[_0xf6bf('0x4f')][_0xf6bf('0x50')]({'port':0x232a});var _0x1387a3=jayson[_0xf6bf('0x4f')]['http']({'port':0x232c});var _0x1f2cbd={};var _0x218a26={};return _0x4a6178[_0xf6bf('0x51')](_0xf6bf('0x52'),_0x3e309b)[_0xf6bf('0x35')](function(_0x2ef68){if(_0x2ef68[_0xf6bf('0x3c')]){throw new Error(_0xf6bf('0x53'));}_0x1f2cbd=_0x2ef68[_0xf6bf('0x54')];return _0x1387a3[_0xf6bf('0x51')](_0xf6bf('0x52'),_0x3e309b);})[_0xf6bf('0x35')](function(_0x480312){if(_0x480312[_0xf6bf('0x3c')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)');}_0x218a26=_0x480312['result'];var _0x2fbfff=_[_0xf6bf('0xe')]({},_0x1f2cbd,_0x218a26);return _0x2fbfff;})[_0xf6bf('0x2a')](function(_0x44349e){throw _0x44349e;});},'unpause':function(_0x3033c0,_0x3e40db='manual'){var _0x13710e=this;var _0x565b2d={};return Promise[_0xf6bf('0x32')]()[_0xf6bf('0x35')](function(){if(!_0x3033c0||_0x3033c0===_0xf6bf('0x55')&&_0x3e40db==='manual'){var _0x1e72e2=jayson[_0xf6bf('0x4f')][_0xf6bf('0x50')]({'port':0x232a});return _0x1e72e2[_0xf6bf('0x51')](_0xf6bf('0x56'),{'id':_0x13710e['id'],'name':_0x13710e[_0xf6bf('0x18')],'pause':![]})[_0xf6bf('0x35')](function(_0x1c75ec){if(_0x1c75ec[_0xf6bf('0x3c')]){throw new Error(util[_0xf6bf('0xb')](_0xf6bf('0x57'),_0x13710e['id'],_0x13710e[_0xf6bf('0x18')]));}return _0x1c75ec[_0xf6bf('0x54')][_0xf6bf('0x58')];});}})['then'](function(){if(!_0x3033c0||_0x3033c0===_0xf6bf('0x55')){return _0x311764['UserVoiceQueueRt'][_0xf6bf('0x59')]({'paused':0x0},{'where':{'UserId':_0x13710e['id']},'individualHooks':!![]});}})[_0xf6bf('0x35')](function(){var _0x32fd8e=!_0x3033c0?'findAll':_0xf6bf('0x5a');var _0x1e7a21={'membername':_0x13710e[_0xf6bf('0x18')],'type':_0xf6bf('0x5b'),'exitAt':null};if(_0x3033c0){_0x1e7a21['channel']=_0x3033c0;}return _0x311764[_0xf6bf('0x5c')][_0x32fd8e]({'where':_0x1e7a21});})[_0xf6bf('0x35')](function(_0x26e345){if(_0x26e345){var _0x5f140e=Array[_0xf6bf('0x5d')](_0x26e345)?_0x26e345:[_0x26e345];var _0x5362b9=_0x5f140e[_0xf6bf('0x5e')](function(_0x22b772){return _0x22b772['update']({'exitAt':moment()['format'](_0xf6bf('0x5f')),'data2':_0x3e40db});});return Promise[_0xf6bf('0x60')](_0x5362b9);}})[_0xf6bf('0x35')](function(){if(!_0x3033c0){_0x565b2d['voicePause']=![];_0x565b2d[_0xf6bf('0x61')]=![];_0x565b2d['chatPause']=![];_0x565b2d['faxPause']=![];_0x565b2d[_0xf6bf('0x62')]=![];_0x565b2d[_0xf6bf('0x63')]=![];_0x565b2d[_0xf6bf('0x64')]=![];}else{_0x565b2d[_0x3033c0+'Pause']=![];}return _0x13710e['getRealtimeData']();})[_0xf6bf('0x35')](function(_0x251170){var _0x2e22bc=require(_0xf6bf('0x65'));var _0x60288c=_0x2e22bc[_0xf6bf('0x66')]();_0x60288c[_0xf6bf('0x67')](function(_0x3dbba4){var _0x62e7f=_0x3dbba4+_0xf6bf('0x68');_0x13710e['setDataValue']([_0x62e7f],_0x251170[_0x62e7f]);});return _0x13710e[_0xf6bf('0x59')](_0x565b2d);})[_0xf6bf('0x2a')](function(_0xccc13e){throw _0xccc13e;});}}});};