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 _0xbce1=['includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','SIP/%s,,tTxX','Hangup','priority','VoiceChanSpy','findAll','then','internal','concat','catch','models','users','utf8','userProfileId','undefined','resolve','find','privacyEnabled','updateMd5Password','updatePassword','changed','UserProfile','error','VoiceExtension','bulkCreate','chanspy','destroy','encryptPassword','function','Missing\x20Callback','toString','base64','from','salt','pbkdf2Sync','sha1','indexOf','provider','Invalid\x20password','md5secret','client','http','request','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Agents','manual','QueuePause','voice','MemberReport','PAUSE','isArray','update','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','mailPause','faxPause','smsPause','whatsappPause','openchannelPause','Pause','../../config/utils','getChannels','forEach','Status','bluebird','crypto','util','lodash','jayson/promise','google','length','context','from-sip','system','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','record','${UNIQUEID}.%s,a','recordingFormat','auth','password','SIP/%s,%s','options','join','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor'];(function(_0x112fe3,_0x16b642){var _0x1ec903=function(_0x1539eb){while(--_0x1539eb){_0x112fe3['push'](_0x112fe3['shift']());}};_0x1ec903(++_0x16b642);}(_0xbce1,0x1df));var _0x1bce=function(_0x3e00c0,_0x3b0968){_0x3e00c0=_0x3e00c0-0x0;var _0x329250=_0xbce1[_0x3e00c0];return _0x329250;};'use strict';var BPromise=require(_0x1bce('0x0'));var crypto=require(_0x1bce('0x1'));var util=require(_0x1bce('0x2'));var md5=require('md5');var moment=require('moment');var _=require(_0x1bce('0x3'));var jayson=require(_0x1bce('0x4'));var attributes=require('./user.attributes');var authTypes=[_0x1bce('0x5')];var validatePresenceOf=function(_0x22f06f){return _0x22f06f&&_0x22f06f[_0x1bce('0x6')];};var getChanSpyApplications=function(_0x147d57,_0x2f5099,_0x1aaeec){var _0x3ad8df={'context':_0x147d57[_0x1bce('0x7')]||_0x1bce('0x8'),'type':_0x1bce('0x9'),'isApp':![],'UserId':_0x147d57['id']};var _0x1bc6ee=[];for(var _0x3a2467=0x0,_0x5eff51=0x1;_0x3a2467<_0x1aaeec[_0x1bce('0x6')];_0x3a2467++,_0x5eff51=0x1){var _0x28ac8b={'exten':util[_0x1bce('0xa')](_0x1bce('0xb'),_0x1aaeec[_0x3a2467][_0x1bce('0xc')],_0x2f5099),'ChanSpyId':_0x1aaeec[_0x3a2467]['id']};_0x1bc6ee[_0x1bce('0xd')](_[_0x1bce('0xe')]({'app':_0x1bce('0xf'),'appdata':util['format'](_0x1bce('0x10'),'chanspy'),'priority':_0x5eff51++},_0x3ad8df,_0x28ac8b));if(_0x1aaeec[_0x3a2467][_0x1bce('0x11')]){_0x1bc6ee['push'](_['merge']({'app':'MixMonitor','appdata':util['format'](_0x1bce('0x12'),_0x1aaeec[_0x3a2467][_0x1bce('0x13')]),'priority':_0x5eff51++},_0x3ad8df,_0x28ac8b));}if(_0x1aaeec[_0x3a2467][_0x1bce('0x14')]){_0x1bc6ee[_0x1bce('0xd')](_[_0x1bce('0xe')]({'app':'Authenticate','appdata':_0x1aaeec[_0x3a2467][_0x1bce('0x15')],'priority':_0x5eff51++},_0x3ad8df,_0x28ac8b));}_0x1bc6ee['push'](_[_0x1bce('0xe')]({'app':'ChanSpy','appdata':util['format'](_0x1bce('0x16'),_0x147d57['name'],_0x1aaeec[_0x3a2467][_0x1bce('0x17')]?_0x1aaeec[_0x3a2467][_0x1bce('0x17')][_0x1bce('0x18')](''):''),'priority':_0x5eff51++},_0x3ad8df,_0x28ac8b));if(_0x1aaeec[_0x3a2467][_0x1bce('0x11')]){_0x1bc6ee[_0x1bce('0xd')](_[_0x1bce('0xe')]({'app':_0x1bce('0x19'),'priority':_0x5eff51++},_0x3ad8df,_0x28ac8b));}}return _0x1bc6ee;};var getUserApplications=function(_0x16649e,_0x1ac9e6){var _0x4cfbf3=[_0x1bce('0x1a'),_0x1bce('0x1b'),_0x1bce('0x1c')];var _0x3243ac={'context':_0x16649e[_0x1bce('0x7')]||_0x1bce('0x8'),'exten':_0x1ac9e6,'type':_0x1bce('0x9'),'isApp':![],'UserId':_0x16649e['id']};var _0x81e47a=[{'app':_0x1bce('0xf'),'appdata':_0x1bce('0x1d')}];if(_0x16649e[_0x1bce('0x1e')]&&_[_0x1bce('0x1f')](_0x4cfbf3,_0x16649e['extensionMonitor'])){_0x81e47a['push']({'app':_0x1bce('0xf'),'appdata':_0x1bce('0x20')});_0x81e47a[_0x1bce('0xd')]({'app':'Set','appdata':util[_0x1bce('0xa')](_0x1bce('0x21'),_0x16649e[_0x1bce('0x1e')])});_0x81e47a[_0x1bce('0xd')]({'app':_0x1bce('0x22'),'appdata':util[_0x1bce('0xa')](_0x1bce('0x23'),_0x16649e[_0x1bce('0x24')])});}else{_0x81e47a[_0x1bce('0xd')]({'app':'Dial','appdata':util[_0x1bce('0xa')](_0x1bce('0x25'),_0x16649e[_0x1bce('0x24')])});}_0x81e47a[_0x1bce('0xd')]({'app':_0x1bce('0x26')});for(var _0x2bd737=0x0;_0x2bd737<_0x81e47a['length'];_0x2bd737++){_0x81e47a[_0x2bd737][_0x1bce('0x27')]=_0x2bd737+0x1;_0x81e47a[_0x2bd737]=_['defaults'](_0x81e47a[_0x2bd737],_0x3243ac);}return _0x81e47a;};var getChanSpyPromise=function(_0x357893,_0x512890){return new BPromise(function(_0x15d51,_0x5aed6d){return _0x357893[_0x1bce('0x28')][_0x1bce('0x29')]()[_0x1bce('0x2a')](function(_0x30d855){if(_0x30d855){var _0x573bb1=getChanSpyApplications(_0x512890,_0x512890[_0x1bce('0x2b')],_0x30d855);if(_0x512890[_0x1bce('0x2b')]!=_0x512890[_0x1bce('0x24')]){_0x573bb1=_0x573bb1[_0x1bce('0x2c')](getChanSpyApplications(_0x512890,_0x512890[_0x1bce('0x24')],_0x30d855));}return _0x15d51(_0x573bb1);}return _0x15d51([]);})[_0x1bce('0x2d')](function(_0x55852a){_0x5aed6d(_0x55852a);});});};module['exports']=function(_0x4f90dc){var _0x1906ee=_0x4f90dc[_0x1bce('0x2e')];return _0x4f90dc['define']('User',attributes,{'tableName':_0x1bce('0x2f'),'charset':_0x1bce('0x30'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x221e89,_0x22613c,_0x27584e){var _0x57b7ae=typeof _0x221e89[_0x1bce('0x31')]===_0x1bce('0x32')?BPromise[_0x1bce('0x33')](null):_0x1906ee['UserProfile'][_0x1bce('0x34')]({'where':{'id':_0x221e89[_0x1bce('0x31')]}});_0x57b7ae[_0x1bce('0x2a')](function(_0x1f3234){if(_0x1f3234){_0x221e89[_0x1bce('0x35')]=_0x1f3234[_0x1bce('0x35')];}})['then'](function(){_0x221e89[_0x1bce('0x36')]();_0x221e89[_0x1bce('0x37')](_0x27584e);})[_0x1bce('0x2d')](function(_0x545d0a){_0x27584e(_0x545d0a);});},'beforeUpdate':function(_0x12e5bb,_0x2a7467,_0x5d8916){Promise[_0x1bce('0x33')]()[_0x1bce('0x2a')](function(){if(_0x12e5bb[_0x1bce('0x38')](_0x1bce('0x31'))===![])return;return _0x1906ee[_0x1bce('0x39')][_0x1bce('0x34')]({'where':{'id':_0x12e5bb[_0x1bce('0x31')]}})['then'](function(_0x32f98a){if(_0x32f98a)_0x12e5bb[_0x1bce('0x35')]=_0x32f98a[_0x1bce('0x35')];return;});})[_0x1bce('0x2a')](function(){if(_0x12e5bb['changed'](_0x1bce('0x15'))){_0x12e5bb[_0x1bce('0x36')]();return _0x12e5bb[_0x1bce('0x37')](_0x5d8916);}_0x5d8916();})[_0x1bce('0x2d')](function(_0x1a5ec1){_0x5d8916(_0x1a5ec1);});},'afterCreate':function(_0xcb3a0d,_0x497a29,_0x49364b){var _0x99c5be=getUserApplications(_0xcb3a0d,_0xcb3a0d[_0x1bce('0x2b')]);if(_0xcb3a0d[_0x1bce('0x2b')]!=_0xcb3a0d[_0x1bce('0x24')]){_0x99c5be=_0x99c5be[_0x1bce('0x2c')](getUserApplications(_0xcb3a0d,_0xcb3a0d[_0x1bce('0x24')]));}return Promise[_0x1bce('0x33')]()['then'](function(){if(!_0xcb3a0d['userSetting']){return _0xcb3a0d['createUserSetting']({'clientSideLoggingLevel':_0x1bce('0x3a'),'clientSideLoggingEnabled':![]});}})['then'](function(){return _0x1906ee[_0x1bce('0x3b')][_0x1bce('0x3c')](_0x99c5be);})[_0x1bce('0x2a')](function(){if(_0xcb3a0d['chanspy']){return getChanSpyPromise(_0x1906ee,_0xcb3a0d);}})[_0x1bce('0x2a')](function(_0x3153d3){if(_0x3153d3&&_0x3153d3[_0x1bce('0x6')]){return _0x1906ee[_0x1bce('0x3b')][_0x1bce('0x3c')](_0x3153d3);}})[_0x1bce('0x2a')](function(){_0x49364b();})[_0x1bce('0x2d')](function(_0xadb0f9){_0x49364b(_0xadb0f9);});},'afterUpdate':function(_0x7626,_0x73701,_0x5514b6){return BPromise['resolve']()[_0x1bce('0x2a')](function(){if(_0x7626['changed'](_0x1bce('0x3d'))||_0x7626[_0x1bce('0x38')]('context')){return _0x1906ee[_0x1bce('0x3b')][_0x1bce('0x3e')]({'where':{'UserId':_0x7626['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x1bce('0x2a')](function(){if(_0x7626[_0x1bce('0x3d')]){return getChanSpyPromise(_0x1906ee,_0x7626)[_0x1bce('0x2a')](function(_0x6d3732){if(_0x6d3732&&_0x6d3732['length']){return _0x1906ee['VoiceExtension'][_0x1bce('0x3c')](_0x6d3732);}});}});}})['then'](function(){if(_0x7626['changed'](_0x1bce('0x1e'))||_0x7626[_0x1bce('0x38')](_0x1bce('0x7'))){return _0x1906ee['VoiceExtension'][_0x1bce('0x3e')]({'where':{'UserId':_0x7626['id'],'type':_0x1bce('0x9'),'ChanSpyId':null}})[_0x1bce('0x2a')](function(){var _0x43f60f=getUserApplications(_0x7626,_0x7626['internal']);if(_0x7626[_0x1bce('0x2b')]!=_0x7626[_0x1bce('0x24')]){_0x43f60f=_0x43f60f[_0x1bce('0x2c')](getUserApplications(_0x7626,_0x7626[_0x1bce('0x24')]));}return _0x1906ee['VoiceExtension'][_0x1bce('0x3c')](_0x43f60f);});}})[_0x1bce('0x2a')](function(){_0x5514b6();})['catch'](function(_0x7df203){_0x5514b6(_0x7df203);});},'afterDestroy':function(_0x198bf9){return _0x1906ee[_0x1bce('0x3b')]['destroy']({'where':{'UserId':_0x198bf9['id'],'type':_0x1bce('0x9')}});}},'instanceMethods':{'authenticate':function(_0x189a82,_0x22d5fe){if(!_0x22d5fe){return this[_0x1bce('0x15')]===this['encryptPassword'](_0x189a82);}var _0xca50b5=this;this[_0x1bce('0x3f')](_0x189a82,function(_0x814ea1,_0x37d452){if(_0x814ea1){_0x22d5fe(_0x814ea1);}if(_0xca50b5['password']===_0x37d452){_0x22d5fe(null,!![]);}else{_0x22d5fe(null,![]);}});},'makeSalt':function(_0x5e7b89,_0x3d2605){var _0x411293=0x10;if(typeof arguments[0x0]===_0x1bce('0x40')){_0x3d2605=arguments[0x0];_0x5e7b89=_0x411293;}else if(typeof arguments[0x1]===_0x1bce('0x40')){_0x3d2605=arguments[0x1];}else{throw new Error(_0x1bce('0x41'));}if(!_0x5e7b89){_0x5e7b89=_0x411293;}return crypto['randomBytes'](_0x5e7b89,function(_0x2f1f81,_0x27305a){if(_0x2f1f81){_0x3d2605(_0x2f1f81);}return _0x3d2605(null,_0x27305a[_0x1bce('0x42')](_0x1bce('0x43')));});},'encryptPassword':function(_0x3f43c9,_0x299778){if(!_0x3f43c9||!this['salt']){return _0x299778?_0x299778(null):null;}var _0x280cac=0x2710;var _0x345974=0x40;var _0x40b546=Buffer[_0x1bce('0x44')](this[_0x1bce('0x45')],_0x1bce('0x43'));if(!_0x299778){return crypto[_0x1bce('0x46')](_0x3f43c9,_0x40b546,_0x280cac,_0x345974,_0x1bce('0x47'))[_0x1bce('0x42')](_0x1bce('0x43'));}return crypto['pbkdf2'](_0x3f43c9,_0x40b546,_0x280cac,_0x345974,_0x1bce('0x47'),function(_0x140d75,_0x465275){if(_0x140d75){_0x299778(_0x140d75);}return _0x299778(null,_0x465275[_0x1bce('0x42')](_0x1bce('0x43')));});},'updatePassword':function(_0x3ee610){if(!this[_0x1bce('0x15')]){return _0x3ee610(null);}if(!validatePresenceOf(this[_0x1bce('0x15')])&&authTypes[_0x1bce('0x48')](this[_0x1bce('0x49')])===-0x1){_0x3ee610(new Error(_0x1bce('0x4a')));}var _0xb40f18=this;this['makeSalt'](function(_0x543423,_0x50c3c1){if(_0x543423){return _0x3ee610(_0x543423);}_0xb40f18[_0x1bce('0x45')]=_0x50c3c1;_0xb40f18[_0x1bce('0x3f')](_0xb40f18[_0x1bce('0x15')],function(_0x3ea9c6,_0xa95d0e){if(_0x3ea9c6){_0x3ee610(_0x3ea9c6);}_0xb40f18[_0x1bce('0x15')]=_0xa95d0e;_0x3ee610(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x1bce('0x24')]+':asterisk:'+this[_0x1bce('0x15')]);return this[_0x1bce('0x4b')];},'getRealtimeData':function(){var _0x2511d2={'id':this['id']};var _0x3d5be0=jayson[_0x1bce('0x4c')][_0x1bce('0x4d')]({'port':0x232a});var _0x30676a=jayson[_0x1bce('0x4c')][_0x1bce('0x4d')]({'port':0x232c});var _0x584ba={};var _0xa4ca6d={};return _0x3d5be0[_0x1bce('0x4e')]('Agents',_0x2511d2)[_0x1bce('0x2a')](function(_0x18d32e){if(_0x18d32e[_0x1bce('0x3a')]){throw new Error(_0x1bce('0x4f'));}_0x584ba=_0x18d32e[_0x1bce('0x50')];return _0x30676a[_0x1bce('0x4e')](_0x1bce('0x51'),_0x2511d2);})[_0x1bce('0x2a')](function(_0x8c9800){if(_0x8c9800['error']){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)');}_0xa4ca6d=_0x8c9800[_0x1bce('0x50')];var _0x25cfb0=_[_0x1bce('0xe')]({},_0x584ba,_0xa4ca6d);return _0x25cfb0;})[_0x1bce('0x2d')](function(_0xdb0576){throw _0xdb0576;});},'unpause':function(_0x440920,_0x368d90=_0x1bce('0x52')){var _0x1060e4=this;var _0x282a1e={};return Promise[_0x1bce('0x33')]()[_0x1bce('0x2a')](function(){if(!_0x440920||_0x440920==='voice'&&_0x368d90===_0x1bce('0x52')){var _0x1302ab=jayson[_0x1bce('0x4c')][_0x1bce('0x4d')]({'port':0x232a});return _0x1302ab[_0x1bce('0x4e')](_0x1bce('0x53'),{'id':_0x1060e4['id'],'name':_0x1060e4['name'],'pause':![]})[_0x1bce('0x2a')](function(_0x51b082){if(_0x51b082[_0x1bce('0x3a')]){throw new Error(util[_0x1bce('0xa')]('Unable\x20to\x20unpause\x20agent\x20%s:$s',_0x1060e4['id'],_0x1060e4[_0x1bce('0x24')]));}return _0x51b082[_0x1bce('0x50')]['message'];});}})[_0x1bce('0x2a')](function(){if(!_0x440920||_0x440920===_0x1bce('0x54')){return _0x1906ee['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x1060e4['id']},'individualHooks':!![]});}})[_0x1bce('0x2a')](function(){var _0x59053f=!_0x440920?_0x1bce('0x29'):'findOne';return _0x1906ee[_0x1bce('0x55')][_0x59053f]({'where':{'channel':_0x440920,'membername':_0x1060e4[_0x1bce('0x24')],'type':_0x1bce('0x56'),'exitAt':null}});})[_0x1bce('0x2a')](function(_0x147fa9){if(_0x147fa9){var _0x3c018e=Array[_0x1bce('0x57')](_0x147fa9)?_0x147fa9:[_0x147fa9];var _0x306390=_0x3c018e['map'](function(_0xd547e6){return _0xd547e6[_0x1bce('0x58')]({'exitAt':moment()['format'](_0x1bce('0x59')),'data2':_0x368d90});});return Promise[_0x1bce('0x5a')](_0x306390);}})['then'](function(){if(!_0x440920){_0x282a1e[_0x1bce('0x5b')]=![];_0x282a1e[_0x1bce('0x5c')]=![];_0x282a1e['chatPause']=![];_0x282a1e[_0x1bce('0x5d')]=![];_0x282a1e[_0x1bce('0x5e')]=![];_0x282a1e[_0x1bce('0x5f')]=![];_0x282a1e[_0x1bce('0x60')]=![];}else{_0x282a1e[_0x440920+_0x1bce('0x61')]=![];}return _0x1060e4['getRealtimeData']();})['then'](function(_0x20a674){var _0x53403d=require(_0x1bce('0x62'));var _0x1f074d=_0x53403d[_0x1bce('0x63')]();_0x1f074d[_0x1bce('0x64')](function(_0x10b1ff){var _0x23fb21=_0x10b1ff+_0x1bce('0x65');_0x1060e4['setDataValue']([_0x23fb21],_0x20a674[_0x23fb21]);});return _0x1060e4[_0x1bce('0x58')](_0x282a1e);})[_0x1bce('0x2d')](function(_0x37eb33){throw _0x37eb33;});}}});};