Built motion from commit da617fac.|2.6.6
[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 _0xa697=['gsm','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxX','name','priority','defaults','VoiceChanSpy','then','concat','exports','models','define','User','users','utf8','userProfileId','resolve','UserProfile','privacyEnabled','updateMd5Password','updatePassword','changed','catch','internal','userSetting','createUserSetting','error','bulkCreate','chanspy','destroy','VoiceExtension','function','Missing\x20Callback','randomBytes','toString','base64','from','salt','pbkdf2Sync','pbkdf2','sha1','provider','makeSalt','encryptPassword',':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','update','MemberReport','isArray','all','voicePause','chatPause','faxPause','smsPause','whatsappPause','../../config/utils','forEach','Status','setDataValue','bluebird','crypto','util','md5','moment','lodash','jayson/promise','./user.attributes','google','length','context','from-sip','system','format','%s%s','prefix','push','Set','CDR(type)=%s','record','merge','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','SIP/%s,%s','options','join','StopMixMonitor','WAV'];(function(_0x5c6edf,_0x3a8514){var _0x545039=function(_0x2a9828){while(--_0x2a9828){_0x5c6edf['push'](_0x5c6edf['shift']());}};_0x545039(++_0x3a8514);}(_0xa697,0xb1));var _0x7a69=function(_0x39323d,_0x1d4a7e){_0x39323d=_0x39323d-0x0;var _0x3408e9=_0xa697[_0x39323d];return _0x3408e9;};'use strict';var BPromise=require(_0x7a69('0x0'));var crypto=require(_0x7a69('0x1'));var util=require(_0x7a69('0x2'));var md5=require(_0x7a69('0x3'));var moment=require(_0x7a69('0x4'));var _=require(_0x7a69('0x5'));var jayson=require(_0x7a69('0x6'));var attributes=require(_0x7a69('0x7'));var authTypes=[_0x7a69('0x8')];var validatePresenceOf=function(_0x275dbf){return _0x275dbf&&_0x275dbf[_0x7a69('0x9')];};var getChanSpyApplications=function(_0x247379,_0x23e602,_0x537dbd){var _0x4742e0={'context':_0x247379[_0x7a69('0xa')]||_0x7a69('0xb'),'type':_0x7a69('0xc'),'isApp':![],'UserId':_0x247379['id']};var _0x52608d=[];for(var _0x3f01d1=0x0,_0xbd7084=0x1;_0x3f01d1<_0x537dbd[_0x7a69('0x9')];_0x3f01d1++,_0xbd7084=0x1){var _0xd352db={'exten':util[_0x7a69('0xd')](_0x7a69('0xe'),_0x537dbd[_0x3f01d1][_0x7a69('0xf')],_0x23e602),'ChanSpyId':_0x537dbd[_0x3f01d1]['id']};_0x52608d[_0x7a69('0x10')](_['merge']({'app':_0x7a69('0x11'),'appdata':util[_0x7a69('0xd')](_0x7a69('0x12'),'chanspy'),'priority':_0xbd7084++},_0x4742e0,_0xd352db));if(_0x537dbd[_0x3f01d1][_0x7a69('0x13')]){_0x52608d[_0x7a69('0x10')](_[_0x7a69('0x14')]({'app':'MixMonitor','appdata':util[_0x7a69('0xd')](_0x7a69('0x15'),_0x537dbd[_0x3f01d1][_0x7a69('0x16')]),'priority':_0xbd7084++},_0x4742e0,_0xd352db));}if(_0x537dbd[_0x3f01d1][_0x7a69('0x17')]){_0x52608d[_0x7a69('0x10')](_[_0x7a69('0x14')]({'app':_0x7a69('0x18'),'appdata':_0x537dbd[_0x3f01d1][_0x7a69('0x19')],'priority':_0xbd7084++},_0x4742e0,_0xd352db));}_0x52608d['push'](_[_0x7a69('0x14')]({'app':'ChanSpy','appdata':util['format'](_0x7a69('0x1a'),_0x247379['name'],_0x537dbd[_0x3f01d1][_0x7a69('0x1b')]?_0x537dbd[_0x3f01d1][_0x7a69('0x1b')][_0x7a69('0x1c')](''):''),'priority':_0xbd7084++},_0x4742e0,_0xd352db));if(_0x537dbd[_0x3f01d1][_0x7a69('0x13')]){_0x52608d['push'](_['merge']({'app':_0x7a69('0x1d'),'priority':_0xbd7084++},_0x4742e0,_0xd352db));}}return _0x52608d;};var getUserApplications=function(_0x12b820,_0x7ae41b){var _0x2974d8=['wav',_0x7a69('0x1e'),_0x7a69('0x1f')];var _0x58d392={'context':_0x12b820[_0x7a69('0xa')]||_0x7a69('0xb'),'exten':_0x7ae41b,'type':_0x7a69('0xc'),'isApp':![],'UserId':_0x12b820['id']};var _0x440878=[{'app':_0x7a69('0x11'),'appdata':'CDR(type)=internal'}];if(_0x12b820[_0x7a69('0x20')]&&_[_0x7a69('0x21')](_0x2974d8,_0x12b820['extensionMonitor'])){_0x440878[_0x7a69('0x10')]({'app':_0x7a69('0x11'),'appdata':_0x7a69('0x22')});_0x440878[_0x7a69('0x10')]({'app':_0x7a69('0x11'),'appdata':util['format'](_0x7a69('0x23'),_0x12b820[_0x7a69('0x20')])});_0x440878[_0x7a69('0x10')]({'app':_0x7a69('0x24'),'appdata':util[_0x7a69('0xd')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x12b820['name'])});}else{_0x440878[_0x7a69('0x10')]({'app':_0x7a69('0x24'),'appdata':util[_0x7a69('0xd')](_0x7a69('0x25'),_0x12b820[_0x7a69('0x26')])});}_0x440878[_0x7a69('0x10')]({'app':'Hangup'});for(var _0xe4463a=0x0;_0xe4463a<_0x440878[_0x7a69('0x9')];_0xe4463a++){_0x440878[_0xe4463a][_0x7a69('0x27')]=_0xe4463a+0x1;_0x440878[_0xe4463a]=_[_0x7a69('0x28')](_0x440878[_0xe4463a],_0x58d392);}return _0x440878;};var getChanSpyPromise=function(_0x1b9c4a,_0x3e083d){return new BPromise(function(_0x1bf6f8,_0x4b9189){return _0x1b9c4a[_0x7a69('0x29')]['findAll']()[_0x7a69('0x2a')](function(_0x1b3af7){if(_0x1b3af7){var _0x1dd473=getChanSpyApplications(_0x3e083d,_0x3e083d['internal'],_0x1b3af7);if(_0x3e083d['internal']!=_0x3e083d[_0x7a69('0x26')]){_0x1dd473=_0x1dd473[_0x7a69('0x2b')](getChanSpyApplications(_0x3e083d,_0x3e083d[_0x7a69('0x26')],_0x1b3af7));}return _0x1bf6f8(_0x1dd473);}return _0x1bf6f8([]);})['catch'](function(_0x5b28b1){_0x4b9189(_0x5b28b1);});});};module[_0x7a69('0x2c')]=function(_0x95c2a6){var _0x5baeda=_0x95c2a6[_0x7a69('0x2d')];return _0x95c2a6[_0x7a69('0x2e')](_0x7a69('0x2f'),attributes,{'tableName':_0x7a69('0x30'),'charset':_0x7a69('0x31'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x396c12,_0x2ec124,_0x5929af){var _0x455111=typeof _0x396c12[_0x7a69('0x32')]==='undefined'?BPromise[_0x7a69('0x33')](null):_0x5baeda[_0x7a69('0x34')]['find']({'where':{'id':_0x396c12['userProfileId']}});_0x455111[_0x7a69('0x2a')](function(_0x204366){if(_0x204366){_0x396c12[_0x7a69('0x35')]=_0x204366[_0x7a69('0x35')];}})[_0x7a69('0x2a')](function(){_0x396c12[_0x7a69('0x36')]();_0x396c12[_0x7a69('0x37')](_0x5929af);})['catch'](function(_0x38a266){_0x5929af(_0x38a266);});},'beforeUpdate':function(_0x33f685,_0x19e629,_0x3e26d3){Promise[_0x7a69('0x33')]()[_0x7a69('0x2a')](function(){if(_0x33f685[_0x7a69('0x38')]('userProfileId')===![])return;return _0x5baeda[_0x7a69('0x34')]['find']({'where':{'id':_0x33f685[_0x7a69('0x32')]}})[_0x7a69('0x2a')](function(_0xe1fa58){if(_0xe1fa58)_0x33f685[_0x7a69('0x35')]=_0xe1fa58[_0x7a69('0x35')];return;});})[_0x7a69('0x2a')](function(){if(_0x33f685[_0x7a69('0x38')](_0x7a69('0x19'))){_0x33f685[_0x7a69('0x36')]();return _0x33f685[_0x7a69('0x37')](_0x3e26d3);}_0x3e26d3();})[_0x7a69('0x39')](function(_0x2d888c){_0x3e26d3(_0x2d888c);});},'afterCreate':function(_0x2b5673,_0x577702,_0x329492){var _0xf2c191=getUserApplications(_0x2b5673,_0x2b5673[_0x7a69('0x3a')]);if(_0x2b5673[_0x7a69('0x3a')]!=_0x2b5673[_0x7a69('0x26')]){_0xf2c191=_0xf2c191[_0x7a69('0x2b')](getUserApplications(_0x2b5673,_0x2b5673[_0x7a69('0x26')]));}return Promise['resolve']()[_0x7a69('0x2a')](function(){if(!_0x2b5673[_0x7a69('0x3b')]){return _0x2b5673[_0x7a69('0x3c')]({'clientSideLoggingLevel':_0x7a69('0x3d'),'clientSideLoggingEnabled':![]});}})[_0x7a69('0x2a')](function(){return _0x5baeda['VoiceExtension']['bulkCreate'](_0xf2c191);})[_0x7a69('0x2a')](function(){if(_0x2b5673['chanspy']){return getChanSpyPromise(_0x5baeda,_0x2b5673);}})['then'](function(_0x6696c6){if(_0x6696c6&&_0x6696c6[_0x7a69('0x9')]){return _0x5baeda['VoiceExtension'][_0x7a69('0x3e')](_0x6696c6);}})[_0x7a69('0x2a')](function(){_0x329492();})[_0x7a69('0x39')](function(_0x56c44e){_0x329492(_0x56c44e);});},'afterUpdate':function(_0x1af782,_0x4f18cd,_0x3fe4d6){return BPromise[_0x7a69('0x33')]()[_0x7a69('0x2a')](function(){if(_0x1af782[_0x7a69('0x38')](_0x7a69('0x3f'))||_0x1af782[_0x7a69('0x38')]('context')){return _0x5baeda['VoiceExtension'][_0x7a69('0x40')]({'where':{'UserId':_0x1af782['id'],'type':_0x7a69('0xc'),'ChanSpyId':{'$ne':null}}})[_0x7a69('0x2a')](function(){if(_0x1af782[_0x7a69('0x3f')]){return getChanSpyPromise(_0x5baeda,_0x1af782)['then'](function(_0x58f831){if(_0x58f831&&_0x58f831[_0x7a69('0x9')]){return _0x5baeda[_0x7a69('0x41')]['bulkCreate'](_0x58f831);}});}});}})['then'](function(){if(_0x1af782[_0x7a69('0x38')](_0x7a69('0x20'))||_0x1af782['changed'](_0x7a69('0xa'))){return _0x5baeda[_0x7a69('0x41')]['destroy']({'where':{'UserId':_0x1af782['id'],'type':'system','ChanSpyId':null}})[_0x7a69('0x2a')](function(){var _0x1ad25c=getUserApplications(_0x1af782,_0x1af782['internal']);if(_0x1af782['internal']!=_0x1af782[_0x7a69('0x26')]){_0x1ad25c=_0x1ad25c['concat'](getUserApplications(_0x1af782,_0x1af782[_0x7a69('0x26')]));}return _0x5baeda[_0x7a69('0x41')][_0x7a69('0x3e')](_0x1ad25c);});}})[_0x7a69('0x2a')](function(){_0x3fe4d6();})[_0x7a69('0x39')](function(_0x24dd19){_0x3fe4d6(_0x24dd19);});},'afterDestroy':function(_0x3b084a){return _0x5baeda[_0x7a69('0x41')][_0x7a69('0x40')]({'where':{'UserId':_0x3b084a['id'],'type':_0x7a69('0xc')}});}},'instanceMethods':{'authenticate':function(_0x2818d1,_0x5cc419){if(!_0x5cc419){return this[_0x7a69('0x19')]===this['encryptPassword'](_0x2818d1);}var _0x5b4482=this;this['encryptPassword'](_0x2818d1,function(_0x1cf97b,_0x51005b){if(_0x1cf97b){_0x5cc419(_0x1cf97b);}if(_0x5b4482[_0x7a69('0x19')]===_0x51005b){_0x5cc419(null,!![]);}else{_0x5cc419(null,![]);}});},'makeSalt':function(_0x53da57,_0x4c1943){var _0x3492b6=0x10;if(typeof arguments[0x0]===_0x7a69('0x42')){_0x4c1943=arguments[0x0];_0x53da57=_0x3492b6;}else if(typeof arguments[0x1]===_0x7a69('0x42')){_0x4c1943=arguments[0x1];}else{throw new Error(_0x7a69('0x43'));}if(!_0x53da57){_0x53da57=_0x3492b6;}return crypto[_0x7a69('0x44')](_0x53da57,function(_0x24a477,_0xd4c048){if(_0x24a477){_0x4c1943(_0x24a477);}return _0x4c1943(null,_0xd4c048[_0x7a69('0x45')](_0x7a69('0x46')));});},'encryptPassword':function(_0x1269d6,_0x549151){if(!_0x1269d6||!this['salt']){return _0x549151?_0x549151(null):null;}var _0x13d818=0x2710;var _0x1a9313=0x40;var _0x20b716=Buffer[_0x7a69('0x47')](this[_0x7a69('0x48')],'base64');if(!_0x549151){return crypto[_0x7a69('0x49')](_0x1269d6,_0x20b716,_0x13d818,_0x1a9313,'sha1')[_0x7a69('0x45')](_0x7a69('0x46'));}return crypto[_0x7a69('0x4a')](_0x1269d6,_0x20b716,_0x13d818,_0x1a9313,_0x7a69('0x4b'),function(_0x47af9e,_0x117bac){if(_0x47af9e){_0x549151(_0x47af9e);}return _0x549151(null,_0x117bac[_0x7a69('0x45')](_0x7a69('0x46')));});},'updatePassword':function(_0x397e33){if(!this[_0x7a69('0x19')]){return _0x397e33(null);}if(!validatePresenceOf(this[_0x7a69('0x19')])&&authTypes['indexOf'](this[_0x7a69('0x4c')])===-0x1){_0x397e33(new Error('Invalid\x20password'));}var _0x2bb7bd=this;this[_0x7a69('0x4d')](function(_0x39d922,_0x234a68){if(_0x39d922){return _0x397e33(_0x39d922);}_0x2bb7bd[_0x7a69('0x48')]=_0x234a68;_0x2bb7bd[_0x7a69('0x4e')](_0x2bb7bd[_0x7a69('0x19')],function(_0x2b9f0a,_0x42f55e){if(_0x2b9f0a){_0x397e33(_0x2b9f0a);}_0x2bb7bd[_0x7a69('0x19')]=_0x42f55e;_0x397e33(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x7a69('0x26')]+_0x7a69('0x4f')+this[_0x7a69('0x19')]);return this['md5secret'];},'getRealtimeData':function(){var _0x23d765={'id':this['id']};var _0x110f8f=jayson[_0x7a69('0x50')][_0x7a69('0x51')]({'port':0x232a});var _0x270577=jayson[_0x7a69('0x50')][_0x7a69('0x51')]({'port':0x232c});var _0x471d99={};var _0x1cd1e3={};return _0x110f8f[_0x7a69('0x52')](_0x7a69('0x53'),_0x23d765)[_0x7a69('0x2a')](function(_0x337e66){if(_0x337e66['error']){throw new Error(_0x7a69('0x54'));}_0x471d99=_0x337e66[_0x7a69('0x55')];return _0x270577[_0x7a69('0x52')](_0x7a69('0x53'),_0x23d765);})[_0x7a69('0x2a')](function(_0x599bdd){if(_0x599bdd['error']){throw new Error(_0x7a69('0x56'));}_0x1cd1e3=_0x599bdd[_0x7a69('0x55')];var _0x2d8e21=_[_0x7a69('0x14')]({},_0x471d99,_0x1cd1e3);return _0x2d8e21;})['catch'](function(_0x2062cc){throw _0x2062cc;});},'unpause':function(_0x3de8ad,_0x14ceb3=_0x7a69('0x57')){var _0x1b7b8b=this;var _0x12f528={};return Promise['resolve']()[_0x7a69('0x2a')](function(){if(!_0x3de8ad||_0x3de8ad===_0x7a69('0x58')&&_0x14ceb3===_0x7a69('0x57')){var _0x4b15eb=jayson[_0x7a69('0x50')][_0x7a69('0x51')]({'port':0x232a});return _0x4b15eb['request'](_0x7a69('0x59'),{'id':_0x1b7b8b['id'],'name':_0x1b7b8b[_0x7a69('0x26')],'pause':![]})[_0x7a69('0x2a')](function(_0x25cc6d){if(_0x25cc6d[_0x7a69('0x3d')]){throw new Error(util[_0x7a69('0xd')](_0x7a69('0x5a'),_0x1b7b8b['id'],_0x1b7b8b['name']));}return _0x25cc6d[_0x7a69('0x55')]['message'];});}})[_0x7a69('0x2a')](function(){if(!_0x3de8ad||_0x3de8ad===_0x7a69('0x58')){return _0x5baeda['UserVoiceQueueRt'][_0x7a69('0x5b')]({'paused':0x0},{'where':{'UserId':_0x1b7b8b['id']},'individualHooks':!![]});}})[_0x7a69('0x2a')](function(){var _0x25ad29=!_0x3de8ad?'findAll':'findOne';return _0x5baeda[_0x7a69('0x5c')][_0x25ad29]({'where':{'channel':_0x3de8ad,'membername':_0x1b7b8b[_0x7a69('0x26')],'type':'PAUSE','exitAt':null}});})[_0x7a69('0x2a')](function(_0x3ad21b){if(_0x3ad21b){var _0x9ec75=Array[_0x7a69('0x5d')](_0x3ad21b)?_0x3ad21b:[_0x3ad21b];var _0x3eeb5c=_0x9ec75['map'](function(_0x1e0f7c){return _0x1e0f7c[_0x7a69('0x5b')]({'exitAt':moment()[_0x7a69('0xd')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x14ceb3});});return Promise[_0x7a69('0x5e')](_0x3eeb5c);}})[_0x7a69('0x2a')](function(){if(!_0x3de8ad){_0x12f528[_0x7a69('0x5f')]=![];_0x12f528['mailPause']=![];_0x12f528[_0x7a69('0x60')]=![];_0x12f528[_0x7a69('0x61')]=![];_0x12f528[_0x7a69('0x62')]=![];_0x12f528[_0x7a69('0x63')]=![];_0x12f528['openchannelPause']=![];}else{_0x12f528[_0x3de8ad+'Pause']=![];}return _0x1b7b8b['getRealtimeData']();})['then'](function(_0x1ff0d5){var _0x430613=require(_0x7a69('0x64'));var _0x199b17=_0x430613['getChannels']();_0x199b17[_0x7a69('0x65')](function(_0x4b1f90){var _0x14dd27=_0x4b1f90+_0x7a69('0x66');_0x1b7b8b[_0x7a69('0x67')]([_0x14dd27],_0x1ff0d5[_0x14dd27]);});return _0x1b7b8b['update'](_0x12f528);})[_0x7a69('0x39')](function(_0x5954cd){throw _0x5954cd;});}}});};