dd702e2f7e30862a715b8e396f259557772724ad
[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 _0xf6d1=['md5secret',':asterisk:','http','client','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','voice','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','result','UserVoiceQueueRt','update','findOne','PAUSE','channel','isArray','map','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','mailPause','chatPause','faxPause','smsPause','openchannelPause','Pause','getRealtimeData','../../config/utils','getChannels','Status','setDataValue','bluebird','crypto','util','md5','moment','lodash','jayson/promise','google','length','context','from-sip','system','format','prefix','merge','Set','CDR(type)=%s','push','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','ChanSpy','SIP/%s,%s','name','options','join','record','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','findAll','then','internal','concat','exports','models','User','users','utf8_bin','userProfileId','undefined','UserProfile','find','privacyEnabled','updatePassword','catch','changed','updateMd5Password','userSetting','createUserSetting','error','VoiceExtension','bulkCreate','resolve','chanspy','destroy','password','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','from','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt'];(function(_0xefd4f1,_0x4fee06){var _0x4331bf=function(_0x3316d4){while(--_0x3316d4){_0xefd4f1['push'](_0xefd4f1['shift']());}};_0x4331bf(++_0x4fee06);}(_0xf6d1,0x99));var _0x1f6d=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xf6d1[_0x491a7f];return _0x3d8f44;};'use strict';var BPromise=require(_0x1f6d('0x0'));var crypto=require(_0x1f6d('0x1'));var util=require(_0x1f6d('0x2'));var md5=require(_0x1f6d('0x3'));var moment=require(_0x1f6d('0x4'));var _=require(_0x1f6d('0x5'));var jayson=require(_0x1f6d('0x6'));var attributes=require('./user.attributes');var authTypes=[_0x1f6d('0x7')];var validatePresenceOf=function(_0x59e1ab){return _0x59e1ab&&_0x59e1ab[_0x1f6d('0x8')];};var getChanSpyApplications=function(_0x34f815,_0x1278cf,_0x927c3c){var _0x1b90fb={'context':_0x34f815[_0x1f6d('0x9')]||_0x1f6d('0xa'),'type':_0x1f6d('0xb'),'isApp':![],'UserId':_0x34f815['id']};var _0x21813f=[];for(var _0x3b2612=0x0,_0x453ce5=0x1;_0x3b2612<_0x927c3c[_0x1f6d('0x8')];_0x3b2612++,_0x453ce5=0x1){var _0x523958={'exten':util[_0x1f6d('0xc')]('%s%s',_0x927c3c[_0x3b2612][_0x1f6d('0xd')],_0x1278cf),'ChanSpyId':_0x927c3c[_0x3b2612]['id']};_0x21813f['push'](_[_0x1f6d('0xe')]({'app':_0x1f6d('0xf'),'appdata':util[_0x1f6d('0xc')](_0x1f6d('0x10'),'chanspy'),'priority':_0x453ce5++},_0x1b90fb,_0x523958));if(_0x927c3c[_0x3b2612]['record']){_0x21813f[_0x1f6d('0x11')](_[_0x1f6d('0xe')]({'app':_0x1f6d('0x12'),'appdata':util[_0x1f6d('0xc')](_0x1f6d('0x13'),_0x927c3c[_0x3b2612][_0x1f6d('0x14')]),'priority':_0x453ce5++},_0x1b90fb,_0x523958));}if(_0x927c3c[_0x3b2612][_0x1f6d('0x15')]){_0x21813f[_0x1f6d('0x11')](_[_0x1f6d('0xe')]({'app':_0x1f6d('0x16'),'appdata':_0x927c3c[_0x3b2612]['password'],'priority':_0x453ce5++},_0x1b90fb,_0x523958));}_0x21813f[_0x1f6d('0x11')](_[_0x1f6d('0xe')]({'app':_0x1f6d('0x17'),'appdata':util['format'](_0x1f6d('0x18'),_0x34f815[_0x1f6d('0x19')],_0x927c3c[_0x3b2612]['options']?_0x927c3c[_0x3b2612][_0x1f6d('0x1a')][_0x1f6d('0x1b')](''):''),'priority':_0x453ce5++},_0x1b90fb,_0x523958));if(_0x927c3c[_0x3b2612][_0x1f6d('0x1c')]){_0x21813f[_0x1f6d('0x11')](_[_0x1f6d('0xe')]({'app':_0x1f6d('0x1d'),'priority':_0x453ce5++},_0x1b90fb,_0x523958));}}return _0x21813f;};var getUserApplications=function(_0x59e838,_0x24c5b8){var _0x5cf52e=[_0x1f6d('0x1e'),_0x1f6d('0x1f'),_0x1f6d('0x20')];var _0x4f56cb={'context':_0x59e838[_0x1f6d('0x9')]||_0x1f6d('0xa'),'exten':_0x24c5b8,'type':'system','isApp':![],'UserId':_0x59e838['id']};var _0x4f4de4=[{'app':_0x1f6d('0xf'),'appdata':_0x1f6d('0x21')}];if(_0x59e838[_0x1f6d('0x22')]&&_['includes'](_0x5cf52e,_0x59e838[_0x1f6d('0x22')])){_0x4f4de4['push']({'app':_0x1f6d('0xf'),'appdata':_0x1f6d('0x23')});_0x4f4de4['push']({'app':_0x1f6d('0xf'),'appdata':util[_0x1f6d('0xc')](_0x1f6d('0x24'),_0x59e838['extensionMonitor'])});_0x4f4de4[_0x1f6d('0x11')]({'app':_0x1f6d('0x25'),'appdata':util[_0x1f6d('0xc')](_0x1f6d('0x26'),_0x59e838[_0x1f6d('0x19')])});}else{_0x4f4de4['push']({'app':'Dial','appdata':util[_0x1f6d('0xc')](_0x1f6d('0x27'),_0x59e838[_0x1f6d('0x19')])});}_0x4f4de4[_0x1f6d('0x11')]({'app':_0x1f6d('0x28')});for(var _0x4750d4=0x0;_0x4750d4<_0x4f4de4[_0x1f6d('0x8')];_0x4750d4++){_0x4f4de4[_0x4750d4][_0x1f6d('0x29')]=_0x4750d4+0x1;_0x4f4de4[_0x4750d4]=_[_0x1f6d('0x2a')](_0x4f4de4[_0x4750d4],_0x4f56cb);}return _0x4f4de4;};var getChanSpyPromise=function(_0x303113,_0x23596d){return new BPromise(function(_0x1d98da,_0x19d558){return _0x303113['VoiceChanSpy'][_0x1f6d('0x2b')]()[_0x1f6d('0x2c')](function(_0x163d90){if(_0x163d90){var _0x31fe94=getChanSpyApplications(_0x23596d,_0x23596d[_0x1f6d('0x2d')],_0x163d90);if(_0x23596d[_0x1f6d('0x2d')]!=_0x23596d['name']){_0x31fe94=_0x31fe94[_0x1f6d('0x2e')](getChanSpyApplications(_0x23596d,_0x23596d['name'],_0x163d90));}return _0x1d98da(_0x31fe94);}return _0x1d98da([]);})['catch'](function(_0x2439c8){_0x19d558(_0x2439c8);});});};module[_0x1f6d('0x2f')]=function(_0x12446d){var _0x533bdf=_0x12446d[_0x1f6d('0x30')];return _0x12446d['define'](_0x1f6d('0x31'),attributes,{'tableName':_0x1f6d('0x32'),'charset':'utf8','collate':_0x1f6d('0x33'),'hooks':{'beforeCreate':function(_0x50f605,_0xa6c9e8,_0x410bd8){var _0x3e490c=typeof _0x50f605[_0x1f6d('0x34')]===_0x1f6d('0x35')?BPromise['resolve'](null):_0x533bdf[_0x1f6d('0x36')][_0x1f6d('0x37')]({'where':{'id':_0x50f605[_0x1f6d('0x34')]}});_0x3e490c[_0x1f6d('0x2c')](function(_0x22d7fa){if(_0x22d7fa){_0x50f605[_0x1f6d('0x38')]=_0x22d7fa['privacyEnabled'];}})[_0x1f6d('0x2c')](function(){_0x50f605['updateMd5Password']();_0x50f605[_0x1f6d('0x39')](_0x410bd8);})[_0x1f6d('0x3a')](function(_0x1827eb){_0x410bd8(_0x1827eb);});},'beforeUpdate':function(_0x28d899,_0xa54906,_0x243340){Promise['resolve']()[_0x1f6d('0x2c')](function(){if(_0x28d899[_0x1f6d('0x3b')](_0x1f6d('0x34'))===![])return;return _0x533bdf['UserProfile'][_0x1f6d('0x37')]({'where':{'id':_0x28d899[_0x1f6d('0x34')]}})['then'](function(_0x3d6ba9){if(_0x3d6ba9)_0x28d899[_0x1f6d('0x38')]=_0x3d6ba9[_0x1f6d('0x38')];return;});})[_0x1f6d('0x2c')](function(){if(_0x28d899[_0x1f6d('0x3b')]('password')){_0x28d899[_0x1f6d('0x3c')]();return _0x28d899[_0x1f6d('0x39')](_0x243340);}_0x243340();})['catch'](function(_0x4fe15c){_0x243340(_0x4fe15c);});},'afterCreate':function(_0x1db508,_0x51cb14,_0x37cc52){var _0x14f480=getUserApplications(_0x1db508,_0x1db508[_0x1f6d('0x2d')]);if(_0x1db508[_0x1f6d('0x2d')]!=_0x1db508[_0x1f6d('0x19')]){_0x14f480=_0x14f480['concat'](getUserApplications(_0x1db508,_0x1db508[_0x1f6d('0x19')]));}return Promise['resolve']()[_0x1f6d('0x2c')](function(){if(!_0x1db508[_0x1f6d('0x3d')]){return _0x1db508[_0x1f6d('0x3e')]({'clientSideLoggingLevel':_0x1f6d('0x3f'),'clientSideLoggingEnabled':![]});}})['then'](function(){return _0x533bdf[_0x1f6d('0x40')][_0x1f6d('0x41')](_0x14f480);})[_0x1f6d('0x2c')](function(){if(_0x1db508['chanspy']){return getChanSpyPromise(_0x533bdf,_0x1db508);}})['then'](function(_0x457f33){if(_0x457f33&&_0x457f33[_0x1f6d('0x8')]){return _0x533bdf[_0x1f6d('0x40')][_0x1f6d('0x41')](_0x457f33);}})[_0x1f6d('0x2c')](function(){_0x37cc52();})[_0x1f6d('0x3a')](function(_0x240d1a){_0x37cc52(_0x240d1a);});},'afterUpdate':function(_0x350352,_0x7997d7,_0x1bf305){return BPromise[_0x1f6d('0x42')]()['then'](function(){if(_0x350352['changed'](_0x1f6d('0x43'))||_0x350352[_0x1f6d('0x3b')](_0x1f6d('0x9'))){return _0x533bdf[_0x1f6d('0x40')][_0x1f6d('0x44')]({'where':{'UserId':_0x350352['id'],'type':_0x1f6d('0xb'),'ChanSpyId':{'$ne':null}}})[_0x1f6d('0x2c')](function(){if(_0x350352[_0x1f6d('0x43')]){return getChanSpyPromise(_0x533bdf,_0x350352)[_0x1f6d('0x2c')](function(_0x292799){if(_0x292799&&_0x292799[_0x1f6d('0x8')]){return _0x533bdf[_0x1f6d('0x40')]['bulkCreate'](_0x292799);}});}});}})[_0x1f6d('0x2c')](function(){if(_0x350352[_0x1f6d('0x3b')](_0x1f6d('0x22'))||_0x350352[_0x1f6d('0x3b')](_0x1f6d('0x9'))){return _0x533bdf[_0x1f6d('0x40')][_0x1f6d('0x44')]({'where':{'UserId':_0x350352['id'],'type':_0x1f6d('0xb'),'ChanSpyId':null}})['then'](function(){var _0x4ba38f=getUserApplications(_0x350352,_0x350352[_0x1f6d('0x2d')]);if(_0x350352[_0x1f6d('0x2d')]!=_0x350352[_0x1f6d('0x19')]){_0x4ba38f=_0x4ba38f['concat'](getUserApplications(_0x350352,_0x350352['name']));}return _0x533bdf['VoiceExtension'][_0x1f6d('0x41')](_0x4ba38f);});}})[_0x1f6d('0x2c')](function(){_0x1bf305();})['catch'](function(_0x513c01){_0x1bf305(_0x513c01);});},'afterDestroy':function(_0x175f5f){return _0x533bdf[_0x1f6d('0x40')][_0x1f6d('0x44')]({'where':{'UserId':_0x175f5f['id'],'type':_0x1f6d('0xb')}});}},'instanceMethods':{'authenticate':function(_0x2d1225,_0x1fc50b){if(!_0x1fc50b){return this[_0x1f6d('0x45')]===this[_0x1f6d('0x46')](_0x2d1225);}var _0x55957a=this;this[_0x1f6d('0x46')](_0x2d1225,function(_0x38e8fe,_0x5494a7){if(_0x38e8fe){_0x1fc50b(_0x38e8fe);}if(_0x55957a[_0x1f6d('0x45')]===_0x5494a7){_0x1fc50b(null,!![]);}else{_0x1fc50b(null,![]);}});},'makeSalt':function(_0x3d9585,_0x2d012f){var _0x4a7e2b=0x10;if(typeof arguments[0x0]===_0x1f6d('0x47')){_0x2d012f=arguments[0x0];_0x3d9585=_0x4a7e2b;}else if(typeof arguments[0x1]===_0x1f6d('0x47')){_0x2d012f=arguments[0x1];}else{throw new Error(_0x1f6d('0x48'));}if(!_0x3d9585){_0x3d9585=_0x4a7e2b;}return crypto[_0x1f6d('0x49')](_0x3d9585,function(_0x1efa96,_0x2b8491){if(_0x1efa96){_0x2d012f(_0x1efa96);}return _0x2d012f(null,_0x2b8491[_0x1f6d('0x4a')](_0x1f6d('0x4b')));});},'encryptPassword':function(_0x121992,_0xd78357){if(!_0x121992||!this['salt']){return _0xd78357?_0xd78357(null):null;}var _0x4df0fd=0x2710;var _0x5841c3=0x40;var _0x596522=Buffer[_0x1f6d('0x4c')](this[_0x1f6d('0x4d')],'base64');if(!_0xd78357){return crypto[_0x1f6d('0x4e')](_0x121992,_0x596522,_0x4df0fd,_0x5841c3,_0x1f6d('0x4f'))['toString'](_0x1f6d('0x4b'));}return crypto[_0x1f6d('0x50')](_0x121992,_0x596522,_0x4df0fd,_0x5841c3,'sha1',function(_0x37d2b6,_0xd23d86){if(_0x37d2b6){_0xd78357(_0x37d2b6);}return _0xd78357(null,_0xd23d86[_0x1f6d('0x4a')](_0x1f6d('0x4b')));});},'updatePassword':function(_0x3b2a8a){if(!this['password']){return _0x3b2a8a(null);}if(!validatePresenceOf(this[_0x1f6d('0x45')])&&authTypes[_0x1f6d('0x51')](this[_0x1f6d('0x52')])===-0x1){_0x3b2a8a(new Error(_0x1f6d('0x53')));}var _0x2ab5f4=this;this[_0x1f6d('0x54')](function(_0xd3fa88,_0x3e9847){if(_0xd3fa88){return _0x3b2a8a(_0xd3fa88);}_0x2ab5f4[_0x1f6d('0x4d')]=_0x3e9847;_0x2ab5f4['encryptPassword'](_0x2ab5f4['password'],function(_0xdedd89,_0x4c012a){if(_0xdedd89){_0x3b2a8a(_0xdedd89);}_0x2ab5f4[_0x1f6d('0x45')]=_0x4c012a;_0x3b2a8a(null);});});},'updateMd5Password':function(){this[_0x1f6d('0x55')]=md5(this['name']+_0x1f6d('0x56')+this[_0x1f6d('0x45')]);return this[_0x1f6d('0x55')];},'getRealtimeData':function(){var _0x99c68e={'id':this['id']};var _0x43de5d=jayson['client'][_0x1f6d('0x57')]({'port':0x232a});var _0x26a7a3=jayson[_0x1f6d('0x58')]['http']({'port':0x232c});var _0x5f3baf={};var _0x553fb0={};return _0x43de5d[_0x1f6d('0x59')](_0x1f6d('0x5a'),_0x99c68e)[_0x1f6d('0x2c')](function(_0x14e60b){if(_0x14e60b[_0x1f6d('0x3f')]){throw new Error(_0x1f6d('0x5b'));}_0x5f3baf=_0x14e60b['result'];return _0x26a7a3[_0x1f6d('0x59')]('Agents',_0x99c68e);})['then'](function(_0x123d04){if(_0x123d04[_0x1f6d('0x3f')]){throw new Error(_0x1f6d('0x5c'));}_0x553fb0=_0x123d04['result'];var _0x34f6b2=_['merge']({},_0x5f3baf,_0x553fb0);return _0x34f6b2;})[_0x1f6d('0x3a')](function(_0x2a6c6c){throw _0x2a6c6c;});},'unpause':function(_0x45a6b0,_0x407767=_0x1f6d('0x5d')){var _0x3eb366=this;var _0x356a65={};return Promise[_0x1f6d('0x42')]()[_0x1f6d('0x2c')](function(){if(!_0x45a6b0||_0x45a6b0===_0x1f6d('0x5e')&&_0x407767===_0x1f6d('0x5d')){var _0x4dd60e=jayson['client']['http']({'port':0x232a});return _0x4dd60e[_0x1f6d('0x59')](_0x1f6d('0x5f'),{'id':_0x3eb366['id'],'name':_0x3eb366[_0x1f6d('0x19')],'pause':![]})[_0x1f6d('0x2c')](function(_0x366d24){if(_0x366d24[_0x1f6d('0x3f')]){throw new Error(util[_0x1f6d('0xc')](_0x1f6d('0x60'),_0x3eb366['id'],_0x3eb366[_0x1f6d('0x19')]));}return _0x366d24[_0x1f6d('0x61')]['message'];});}})[_0x1f6d('0x2c')](function(){if(!_0x45a6b0||_0x45a6b0===_0x1f6d('0x5e')){return _0x533bdf[_0x1f6d('0x62')][_0x1f6d('0x63')]({'paused':0x0},{'where':{'UserId':_0x3eb366['id']},'individualHooks':!![]});}})['then'](function(){var _0x47f4f7=!_0x45a6b0?_0x1f6d('0x2b'):_0x1f6d('0x64');var _0x317f97={'membername':_0x3eb366[_0x1f6d('0x19')],'type':_0x1f6d('0x65'),'exitAt':null};if(_0x45a6b0){_0x317f97[_0x1f6d('0x66')]=_0x45a6b0;}return _0x533bdf['MemberReport'][_0x47f4f7]({'where':_0x317f97});})[_0x1f6d('0x2c')](function(_0xe3eaa8){if(_0xe3eaa8){var _0x3e984b=Array[_0x1f6d('0x67')](_0xe3eaa8)?_0xe3eaa8:[_0xe3eaa8];var _0x5184a8=_0x3e984b[_0x1f6d('0x68')](function(_0xb24585){return _0xb24585['update']({'exitAt':moment()[_0x1f6d('0xc')](_0x1f6d('0x69')),'data2':_0x407767});});return Promise[_0x1f6d('0x6a')](_0x5184a8);}})[_0x1f6d('0x2c')](function(){if(!_0x45a6b0){_0x356a65[_0x1f6d('0x6b')]=![];_0x356a65[_0x1f6d('0x6c')]=![];_0x356a65[_0x1f6d('0x6d')]=![];_0x356a65[_0x1f6d('0x6e')]=![];_0x356a65[_0x1f6d('0x6f')]=![];_0x356a65['whatsappPause']=![];_0x356a65[_0x1f6d('0x70')]=![];}else{_0x356a65[_0x45a6b0+_0x1f6d('0x71')]=![];}return _0x3eb366[_0x1f6d('0x72')]();})[_0x1f6d('0x2c')](function(_0x4d3e26){var _0xac5694=require(_0x1f6d('0x73'));var _0x4b66dc=_0xac5694[_0x1f6d('0x74')]();_0x4b66dc['forEach'](function(_0x21b517){var _0x166f59=_0x21b517+_0x1f6d('0x75');_0x3eb366[_0x1f6d('0x76')]([_0x166f59],_0x4d3e26[_0x166f59]);});return _0x3eb366[_0x1f6d('0x63')](_0x356a65);})['catch'](function(_0x16f15b){throw _0x16f15b;});}}});};