Built motion from commit 9d0783e6.|2.6.13
[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 _0xe953=['makeSalt','md5secret',':asterisk:','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','voice','UserVoiceQueueRt','findOne','PAUSE','channel','map','update','YYYY-MM-DD\x20HH:mm:ss','all','faxPause','whatsappPause','openchannelPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','Status','setDataValue','lodash','jayson/promise','google','length','context','from-sip','format','%s%s','prefix','merge','CDR(type)=%s','chanspy','record','push','${UNIQUEID}.%s,a','auth','Authenticate','SIP/%s,%s','name','options','join','wav','WAV','gsm','system','Set','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','VoiceChanSpy','findAll','catch','exports','define','User','users','utf8','userProfileId','undefined','UserProfile','then','privacyEnabled','updatePassword','resolve','changed','find','password','updateMd5Password','internal','concat','userSetting','createUserSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','randomBytes','salt','from','pbkdf2Sync','sha1','pbkdf2','toString','base64','indexOf','provider','Invalid\x20password'];(function(_0x3211ff,_0x16937f){var _0x11d3bd=function(_0x6d1e58){while(--_0x6d1e58){_0x3211ff['push'](_0x3211ff['shift']());}};_0x11d3bd(++_0x16937f);}(_0xe953,0x1d0));var _0x3e95=function(_0x22dac7,_0x45d32a){_0x22dac7=_0x22dac7-0x0;var _0x3e6cfa=_0xe953[_0x22dac7];return _0x3e6cfa;};'use strict';var BPromise=require('bluebird');var crypto=require('crypto');var util=require('util');var md5=require('md5');var moment=require('moment');var _=require(_0x3e95('0x0'));var jayson=require(_0x3e95('0x1'));var attributes=require('./user.attributes');var authTypes=[_0x3e95('0x2')];var validatePresenceOf=function(_0x5a0541){return _0x5a0541&&_0x5a0541[_0x3e95('0x3')];};var getChanSpyApplications=function(_0x4eb4a5,_0x30637c,_0x3faa2b){var _0x45f703={'context':_0x4eb4a5[_0x3e95('0x4')]||_0x3e95('0x5'),'type':'system','isApp':![],'UserId':_0x4eb4a5['id']};var _0x38c27b=[];for(var _0x21ac04=0x0,_0x1b6ce7=0x1;_0x21ac04<_0x3faa2b['length'];_0x21ac04++,_0x1b6ce7=0x1){var _0xf019c5={'exten':util[_0x3e95('0x6')](_0x3e95('0x7'),_0x3faa2b[_0x21ac04][_0x3e95('0x8')],_0x30637c),'ChanSpyId':_0x3faa2b[_0x21ac04]['id']};_0x38c27b['push'](_[_0x3e95('0x9')]({'app':'Set','appdata':util[_0x3e95('0x6')](_0x3e95('0xa'),_0x3e95('0xb')),'priority':_0x1b6ce7++},_0x45f703,_0xf019c5));if(_0x3faa2b[_0x21ac04][_0x3e95('0xc')]){_0x38c27b[_0x3e95('0xd')](_[_0x3e95('0x9')]({'app':'MixMonitor','appdata':util[_0x3e95('0x6')](_0x3e95('0xe'),_0x3faa2b[_0x21ac04]['recordingFormat']),'priority':_0x1b6ce7++},_0x45f703,_0xf019c5));}if(_0x3faa2b[_0x21ac04][_0x3e95('0xf')]){_0x38c27b[_0x3e95('0xd')](_[_0x3e95('0x9')]({'app':_0x3e95('0x10'),'appdata':_0x3faa2b[_0x21ac04]['password'],'priority':_0x1b6ce7++},_0x45f703,_0xf019c5));}_0x38c27b[_0x3e95('0xd')](_[_0x3e95('0x9')]({'app':'ChanSpy','appdata':util[_0x3e95('0x6')](_0x3e95('0x11'),_0x4eb4a5[_0x3e95('0x12')],_0x3faa2b[_0x21ac04][_0x3e95('0x13')]?_0x3faa2b[_0x21ac04]['options'][_0x3e95('0x14')](''):''),'priority':_0x1b6ce7++},_0x45f703,_0xf019c5));if(_0x3faa2b[_0x21ac04]['record']){_0x38c27b[_0x3e95('0xd')](_[_0x3e95('0x9')]({'app':'StopMixMonitor','priority':_0x1b6ce7++},_0x45f703,_0xf019c5));}}return _0x38c27b;};var getUserApplications=function(_0x439485,_0x3e8b32){var _0x21928f=[_0x3e95('0x15'),_0x3e95('0x16'),_0x3e95('0x17')];var _0x177818={'context':_0x439485[_0x3e95('0x4')]||'from-sip','exten':_0x3e8b32,'type':_0x3e95('0x18'),'isApp':![],'UserId':_0x439485['id']};var _0x5ba9a1=[{'app':_0x3e95('0x19'),'appdata':_0x3e95('0x1a')}];if(_0x439485[_0x3e95('0x1b')]&&_['includes'](_0x21928f,_0x439485[_0x3e95('0x1b')])){_0x5ba9a1[_0x3e95('0xd')]({'app':_0x3e95('0x19'),'appdata':_0x3e95('0x1c')});_0x5ba9a1[_0x3e95('0xd')]({'app':_0x3e95('0x19'),'appdata':util[_0x3e95('0x6')](_0x3e95('0x1d'),_0x439485[_0x3e95('0x1b')])});_0x5ba9a1[_0x3e95('0xd')]({'app':_0x3e95('0x1e'),'appdata':util[_0x3e95('0x6')](_0x3e95('0x1f'),_0x439485[_0x3e95('0x12')])});}else{_0x5ba9a1[_0x3e95('0xd')]({'app':_0x3e95('0x1e'),'appdata':util[_0x3e95('0x6')](_0x3e95('0x20'),_0x439485[_0x3e95('0x12')])});}_0x5ba9a1[_0x3e95('0xd')]({'app':_0x3e95('0x21')});for(var _0x70753d=0x0;_0x70753d<_0x5ba9a1[_0x3e95('0x3')];_0x70753d++){_0x5ba9a1[_0x70753d][_0x3e95('0x22')]=_0x70753d+0x1;_0x5ba9a1[_0x70753d]=_[_0x3e95('0x23')](_0x5ba9a1[_0x70753d],_0x177818);}return _0x5ba9a1;};var getChanSpyPromise=function(_0x51595b,_0x761f8b){return new BPromise(function(_0x38c2f5,_0x16b907){return _0x51595b[_0x3e95('0x24')][_0x3e95('0x25')]()['then'](function(_0x288abd){if(_0x288abd){var _0x3397b3=getChanSpyApplications(_0x761f8b,_0x761f8b['internal'],_0x288abd);if(_0x761f8b['internal']!=_0x761f8b[_0x3e95('0x12')]){_0x3397b3=_0x3397b3['concat'](getChanSpyApplications(_0x761f8b,_0x761f8b[_0x3e95('0x12')],_0x288abd));}return _0x38c2f5(_0x3397b3);}return _0x38c2f5([]);})[_0x3e95('0x26')](function(_0x4ee356){_0x16b907(_0x4ee356);});});};module[_0x3e95('0x27')]=function(_0x4849de){var _0x1d3970=_0x4849de['models'];return _0x4849de[_0x3e95('0x28')](_0x3e95('0x29'),attributes,{'tableName':_0x3e95('0x2a'),'charset':_0x3e95('0x2b'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x39692e,_0x1e8758,_0x4de257){var _0x255ac4=typeof _0x39692e[_0x3e95('0x2c')]===_0x3e95('0x2d')?BPromise['resolve'](null):_0x1d3970[_0x3e95('0x2e')]['find']({'where':{'id':_0x39692e['userProfileId']}});_0x255ac4[_0x3e95('0x2f')](function(_0x50b257){if(_0x50b257){_0x39692e[_0x3e95('0x30')]=_0x50b257['privacyEnabled'];}})['then'](function(){_0x39692e['updateMd5Password']();_0x39692e[_0x3e95('0x31')](_0x4de257);})[_0x3e95('0x26')](function(_0x11b957){_0x4de257(_0x11b957);});},'beforeUpdate':function(_0x126a8e,_0x1c0569,_0x28f2f0){Promise[_0x3e95('0x32')]()[_0x3e95('0x2f')](function(){if(_0x126a8e[_0x3e95('0x33')](_0x3e95('0x2c'))===![])return;return _0x1d3970[_0x3e95('0x2e')][_0x3e95('0x34')]({'where':{'id':_0x126a8e[_0x3e95('0x2c')]}})[_0x3e95('0x2f')](function(_0x397ab9){if(_0x397ab9)_0x126a8e[_0x3e95('0x30')]=_0x397ab9['privacyEnabled'];return;});})[_0x3e95('0x2f')](function(){if(_0x126a8e['changed'](_0x3e95('0x35'))){_0x126a8e[_0x3e95('0x36')]();return _0x126a8e['updatePassword'](_0x28f2f0);}_0x28f2f0();})[_0x3e95('0x26')](function(_0x18c0e4){_0x28f2f0(_0x18c0e4);});},'afterCreate':function(_0x4ffd05,_0x13de48,_0x433da7){var _0x3789c2=getUserApplications(_0x4ffd05,_0x4ffd05[_0x3e95('0x37')]);if(_0x4ffd05[_0x3e95('0x37')]!=_0x4ffd05[_0x3e95('0x12')]){_0x3789c2=_0x3789c2[_0x3e95('0x38')](getUserApplications(_0x4ffd05,_0x4ffd05[_0x3e95('0x12')]));}return Promise[_0x3e95('0x32')]()['then'](function(){if(!_0x4ffd05[_0x3e95('0x39')]){return _0x4ffd05[_0x3e95('0x3a')]({'clientSideLoggingLevel':_0x3e95('0x3b'),'clientSideLoggingEnabled':![]});}})[_0x3e95('0x2f')](function(){return _0x1d3970[_0x3e95('0x3c')][_0x3e95('0x3d')](_0x3789c2);})[_0x3e95('0x2f')](function(){if(_0x4ffd05['chanspy']){return getChanSpyPromise(_0x1d3970,_0x4ffd05);}})[_0x3e95('0x2f')](function(_0x288826){if(_0x288826&&_0x288826[_0x3e95('0x3')]){return _0x1d3970[_0x3e95('0x3c')][_0x3e95('0x3d')](_0x288826);}})[_0x3e95('0x2f')](function(){_0x433da7();})[_0x3e95('0x26')](function(_0x44ddfc){_0x433da7(_0x44ddfc);});},'afterUpdate':function(_0x5889e7,_0xea62e5,_0x370b67){return BPromise[_0x3e95('0x32')]()[_0x3e95('0x2f')](function(){if(_0x5889e7[_0x3e95('0x33')]('chanspy')||_0x5889e7['changed']('context')){return _0x1d3970[_0x3e95('0x3c')]['destroy']({'where':{'UserId':_0x5889e7['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x3e95('0x2f')](function(){if(_0x5889e7[_0x3e95('0xb')]){return getChanSpyPromise(_0x1d3970,_0x5889e7)[_0x3e95('0x2f')](function(_0x49fda1){if(_0x49fda1&&_0x49fda1[_0x3e95('0x3')]){return _0x1d3970['VoiceExtension'][_0x3e95('0x3d')](_0x49fda1);}});}});}})[_0x3e95('0x2f')](function(){if(_0x5889e7[_0x3e95('0x33')](_0x3e95('0x1b'))||_0x5889e7[_0x3e95('0x33')]('context')){return _0x1d3970[_0x3e95('0x3c')][_0x3e95('0x3e')]({'where':{'UserId':_0x5889e7['id'],'type':_0x3e95('0x18'),'ChanSpyId':null}})[_0x3e95('0x2f')](function(){var _0x3fd4d3=getUserApplications(_0x5889e7,_0x5889e7['internal']);if(_0x5889e7['internal']!=_0x5889e7[_0x3e95('0x12')]){_0x3fd4d3=_0x3fd4d3[_0x3e95('0x38')](getUserApplications(_0x5889e7,_0x5889e7['name']));}return _0x1d3970[_0x3e95('0x3c')][_0x3e95('0x3d')](_0x3fd4d3);});}})[_0x3e95('0x2f')](function(){_0x370b67();})['catch'](function(_0x1e27f9){_0x370b67(_0x1e27f9);});},'afterDestroy':function(_0x1323fd){return _0x1d3970['VoiceExtension'][_0x3e95('0x3e')]({'where':{'UserId':_0x1323fd['id'],'type':_0x3e95('0x18')}});}},'instanceMethods':{'authenticate':function(_0x1e5627,_0x173a4e){if(!_0x173a4e){return this[_0x3e95('0x35')]===this['encryptPassword'](_0x1e5627);}var _0x1afea8=this;this[_0x3e95('0x3f')](_0x1e5627,function(_0x423573,_0x6e3c79){if(_0x423573){_0x173a4e(_0x423573);}if(_0x1afea8['password']===_0x6e3c79){_0x173a4e(null,!![]);}else{_0x173a4e(null,![]);}});},'makeSalt':function(_0x27c72e,_0x4e4d8b){var _0x4ad471=0x10;if(typeof arguments[0x0]===_0x3e95('0x40')){_0x4e4d8b=arguments[0x0];_0x27c72e=_0x4ad471;}else if(typeof arguments[0x1]===_0x3e95('0x40')){_0x4e4d8b=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x27c72e){_0x27c72e=_0x4ad471;}return crypto[_0x3e95('0x41')](_0x27c72e,function(_0x4460ba,_0x130802){if(_0x4460ba){_0x4e4d8b(_0x4460ba);}return _0x4e4d8b(null,_0x130802['toString']('base64'));});},'encryptPassword':function(_0x14e3b8,_0xb2db69){if(!_0x14e3b8||!this[_0x3e95('0x42')]){return _0xb2db69?_0xb2db69(null):null;}var _0x5bd229=0x2710;var _0x5c9e38=0x40;var _0x21d5f8=Buffer[_0x3e95('0x43')](this[_0x3e95('0x42')],'base64');if(!_0xb2db69){return crypto[_0x3e95('0x44')](_0x14e3b8,_0x21d5f8,_0x5bd229,_0x5c9e38,_0x3e95('0x45'))['toString']('base64');}return crypto[_0x3e95('0x46')](_0x14e3b8,_0x21d5f8,_0x5bd229,_0x5c9e38,'sha1',function(_0x26c537,_0x30440b){if(_0x26c537){_0xb2db69(_0x26c537);}return _0xb2db69(null,_0x30440b[_0x3e95('0x47')](_0x3e95('0x48')));});},'updatePassword':function(_0x295c4d){if(!this['password']){return _0x295c4d(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0x3e95('0x49')](this[_0x3e95('0x4a')])===-0x1){_0x295c4d(new Error(_0x3e95('0x4b')));}var _0x44fca1=this;this[_0x3e95('0x4c')](function(_0x529769,_0x54ccce){if(_0x529769){return _0x295c4d(_0x529769);}_0x44fca1[_0x3e95('0x42')]=_0x54ccce;_0x44fca1[_0x3e95('0x3f')](_0x44fca1[_0x3e95('0x35')],function(_0x9093b8,_0x5459b5){if(_0x9093b8){_0x295c4d(_0x9093b8);}_0x44fca1[_0x3e95('0x35')]=_0x5459b5;_0x295c4d(null);});});},'updateMd5Password':function(){this[_0x3e95('0x4d')]=md5(this[_0x3e95('0x12')]+_0x3e95('0x4e')+this['password']);return this[_0x3e95('0x4d')];},'getRealtimeData':function(){var _0x1f0e9c={'id':this['id']};var _0xbbd1c8=jayson[_0x3e95('0x4f')][_0x3e95('0x50')]({'port':0x232a});var _0x350eb0=jayson[_0x3e95('0x4f')][_0x3e95('0x50')]({'port':0x232c});var _0x2ee3a2={};var _0x3751b7={};return _0xbbd1c8[_0x3e95('0x51')](_0x3e95('0x52'),_0x1f0e9c)[_0x3e95('0x2f')](function(_0x311861){if(_0x311861[_0x3e95('0x3b')]){throw new Error(_0x3e95('0x53'));}_0x2ee3a2=_0x311861[_0x3e95('0x54')];return _0x350eb0[_0x3e95('0x51')](_0x3e95('0x52'),_0x1f0e9c);})[_0x3e95('0x2f')](function(_0x50a4dc){if(_0x50a4dc[_0x3e95('0x3b')]){throw new Error(_0x3e95('0x55'));}_0x3751b7=_0x50a4dc[_0x3e95('0x54')];var _0x4ff0b0=_['merge']({},_0x2ee3a2,_0x3751b7);return _0x4ff0b0;})['catch'](function(_0x5cb170){throw _0x5cb170;});},'unpause':function(_0x4dad78,_0x38cdad=_0x3e95('0x56')){var _0x26fa94=this;var _0x3b61df={};return Promise[_0x3e95('0x32')]()['then'](function(){if(!_0x4dad78||_0x4dad78==='voice'&&_0x38cdad==='manual'){var _0x820cb3=jayson['client'][_0x3e95('0x50')]({'port':0x232a});return _0x820cb3[_0x3e95('0x51')]('QueuePause',{'id':_0x26fa94['id'],'name':_0x26fa94[_0x3e95('0x12')],'pause':![]})[_0x3e95('0x2f')](function(_0x5c5286){if(_0x5c5286[_0x3e95('0x3b')]){throw new Error(util['format'](_0x3e95('0x57'),_0x26fa94['id'],_0x26fa94[_0x3e95('0x12')]));}return _0x5c5286[_0x3e95('0x54')][_0x3e95('0x58')];});}})[_0x3e95('0x2f')](function(){if(!_0x4dad78||_0x4dad78===_0x3e95('0x59')){return _0x1d3970[_0x3e95('0x5a')]['update']({'paused':0x0},{'where':{'UserId':_0x26fa94['id']},'individualHooks':!![]});}})['then'](function(){var _0x391d18=!_0x4dad78?_0x3e95('0x25'):_0x3e95('0x5b');var _0x754bc0={'membername':_0x26fa94[_0x3e95('0x12')],'type':_0x3e95('0x5c'),'exitAt':null};if(_0x4dad78){_0x754bc0[_0x3e95('0x5d')]=_0x4dad78;}return _0x1d3970['MemberReport'][_0x391d18]({'where':_0x754bc0});})[_0x3e95('0x2f')](function(_0x49106a){if(_0x49106a){var _0x111305=Array['isArray'](_0x49106a)?_0x49106a:[_0x49106a];var _0x3dd65b=_0x111305[_0x3e95('0x5e')](function(_0x2f21d1){return _0x2f21d1[_0x3e95('0x5f')]({'exitAt':moment()[_0x3e95('0x6')](_0x3e95('0x60')),'data2':_0x38cdad});});return Promise[_0x3e95('0x61')](_0x3dd65b);}})[_0x3e95('0x2f')](function(){if(!_0x4dad78){_0x3b61df['voicePause']=![];_0x3b61df['mailPause']=![];_0x3b61df['chatPause']=![];_0x3b61df[_0x3e95('0x62')]=![];_0x3b61df['smsPause']=![];_0x3b61df[_0x3e95('0x63')]=![];_0x3b61df[_0x3e95('0x64')]=![];}else{_0x3b61df[_0x4dad78+_0x3e95('0x65')]=![];}return _0x26fa94[_0x3e95('0x66')]();})[_0x3e95('0x2f')](function(_0x12deb7){var _0x2a453f=require(_0x3e95('0x67'));var _0x417c1a=_0x2a453f[_0x3e95('0x68')]();_0x417c1a[_0x3e95('0x69')](function(_0xec4aa1){var _0x4e99c0=_0xec4aa1+_0x3e95('0x6a');_0x26fa94[_0x3e95('0x6b')]([_0x4e99c0],_0x12deb7[_0x4e99c0]);});return _0x26fa94[_0x3e95('0x5f')](_0x3b61df);})['catch'](function(_0xe14b57){throw _0xe14b57;});}}});};