Built motion from commit da24aabd.|2.6.20
[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 _0x1c9a=['name','SIP/%s,,tTxX','Hangup','priority','defaults','findAll','then','internal','concat','catch','exports','models','define','User','users','utf8','utf8_bin','undefined','resolve','UserProfile','find','updateMd5Password','updatePassword','changed','userProfileId','privacyEnabled','userSetting','createUserSetting','error','VoiceExtension','destroy','bulkCreate','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','from','pbkdf2Sync','toString','pbkdf2','sha1','indexOf','provider','Invalid\x20password','md5secret',':asterisk:','http','client','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','request','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','QueuePause','message','voice','UserVoiceQueueRt','update','PAUSE','channel','MemberReport','isArray','map','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','mailPause','smsPause','whatsappPause','openchannelPause','Pause','getRealtimeData','forEach','Status','setDataValue','bluebird','crypto','md5','moment','lodash','jayson/promise','./user.attributes','context','from-sip','system','length','prefix','merge','Set','format','CDR(type)=%s','chanspy','record','push','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','options','join','StopMixMonitor','wav','WAV','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial'];(function(_0x31b5a5,_0x44376a){var _0x364cc9=function(_0x4e5f95){while(--_0x4e5f95){_0x31b5a5['push'](_0x31b5a5['shift']());}};_0x364cc9(++_0x44376a);}(_0x1c9a,0x1a7));var _0xa1c9=function(_0x17bce8,_0x166b92){_0x17bce8=_0x17bce8-0x0;var _0x59571b=_0x1c9a[_0x17bce8];return _0x59571b;};'use strict';var BPromise=require(_0xa1c9('0x0'));var crypto=require(_0xa1c9('0x1'));var util=require('util');var md5=require(_0xa1c9('0x2'));var moment=require(_0xa1c9('0x3'));var _=require(_0xa1c9('0x4'));var jayson=require(_0xa1c9('0x5'));var attributes=require(_0xa1c9('0x6'));var authTypes=['google'];var validatePresenceOf=function(_0x2f883c){return _0x2f883c&&_0x2f883c['length'];};var getChanSpyApplications=function(_0x1716cb,_0xdd22bf,_0x237862){var _0x2b0c89={'context':_0x1716cb[_0xa1c9('0x7')]||_0xa1c9('0x8'),'type':_0xa1c9('0x9'),'isApp':![],'UserId':_0x1716cb['id']};var _0xc8bc5a=[];for(var _0x1b4b82=0x0,_0xfab70b=0x1;_0x1b4b82<_0x237862[_0xa1c9('0xa')];_0x1b4b82++,_0xfab70b=0x1){var _0xb96573={'exten':util['format']('%s%s',_0x237862[_0x1b4b82][_0xa1c9('0xb')],_0xdd22bf),'ChanSpyId':_0x237862[_0x1b4b82]['id']};_0xc8bc5a['push'](_[_0xa1c9('0xc')]({'app':_0xa1c9('0xd'),'appdata':util[_0xa1c9('0xe')](_0xa1c9('0xf'),_0xa1c9('0x10')),'priority':_0xfab70b++},_0x2b0c89,_0xb96573));if(_0x237862[_0x1b4b82][_0xa1c9('0x11')]){_0xc8bc5a[_0xa1c9('0x12')](_[_0xa1c9('0xc')]({'app':_0xa1c9('0x13'),'appdata':util[_0xa1c9('0xe')](_0xa1c9('0x14'),_0x237862[_0x1b4b82][_0xa1c9('0x15')]),'priority':_0xfab70b++},_0x2b0c89,_0xb96573));}if(_0x237862[_0x1b4b82][_0xa1c9('0x16')]){_0xc8bc5a[_0xa1c9('0x12')](_[_0xa1c9('0xc')]({'app':_0xa1c9('0x17'),'appdata':_0x237862[_0x1b4b82][_0xa1c9('0x18')],'priority':_0xfab70b++},_0x2b0c89,_0xb96573));}_0xc8bc5a[_0xa1c9('0x12')](_[_0xa1c9('0xc')]({'app':_0xa1c9('0x19'),'appdata':util['format'](_0xa1c9('0x1a'),_0x1716cb['name'],_0x237862[_0x1b4b82][_0xa1c9('0x1b')]?_0x237862[_0x1b4b82][_0xa1c9('0x1b')][_0xa1c9('0x1c')](''):''),'priority':_0xfab70b++},_0x2b0c89,_0xb96573));if(_0x237862[_0x1b4b82][_0xa1c9('0x11')]){_0xc8bc5a[_0xa1c9('0x12')](_[_0xa1c9('0xc')]({'app':_0xa1c9('0x1d'),'priority':_0xfab70b++},_0x2b0c89,_0xb96573));}}return _0xc8bc5a;};var getUserApplications=function(_0x414d70,_0x460450){var _0x3c3c30=[_0xa1c9('0x1e'),_0xa1c9('0x1f'),'gsm'];var _0x1a5b8e={'context':_0x414d70[_0xa1c9('0x7')]||_0xa1c9('0x8'),'exten':_0x460450,'type':_0xa1c9('0x9'),'isApp':![],'UserId':_0x414d70['id']};var _0x3fc5ae=[{'app':_0xa1c9('0xd'),'appdata':_0xa1c9('0x20')}];if(_0x414d70[_0xa1c9('0x21')]&&_['includes'](_0x3c3c30,_0x414d70[_0xa1c9('0x21')])){_0x3fc5ae[_0xa1c9('0x12')]({'app':'Set','appdata':_0xa1c9('0x22')});_0x3fc5ae[_0xa1c9('0x12')]({'app':_0xa1c9('0xd'),'appdata':util[_0xa1c9('0xe')](_0xa1c9('0x23'),_0x414d70['extensionMonitor'])});_0x3fc5ae[_0xa1c9('0x12')]({'app':_0xa1c9('0x24'),'appdata':util[_0xa1c9('0xe')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x414d70[_0xa1c9('0x25')])});}else{_0x3fc5ae[_0xa1c9('0x12')]({'app':_0xa1c9('0x24'),'appdata':util[_0xa1c9('0xe')](_0xa1c9('0x26'),_0x414d70[_0xa1c9('0x25')])});}_0x3fc5ae[_0xa1c9('0x12')]({'app':_0xa1c9('0x27')});for(var _0x2ba139=0x0;_0x2ba139<_0x3fc5ae[_0xa1c9('0xa')];_0x2ba139++){_0x3fc5ae[_0x2ba139][_0xa1c9('0x28')]=_0x2ba139+0x1;_0x3fc5ae[_0x2ba139]=_[_0xa1c9('0x29')](_0x3fc5ae[_0x2ba139],_0x1a5b8e);}return _0x3fc5ae;};var getChanSpyPromise=function(_0x359bc3,_0x3f43f1){return new BPromise(function(_0x35cea,_0xf584e2){return _0x359bc3['VoiceChanSpy'][_0xa1c9('0x2a')]()[_0xa1c9('0x2b')](function(_0x215462){if(_0x215462){var _0x13cda8=getChanSpyApplications(_0x3f43f1,_0x3f43f1[_0xa1c9('0x2c')],_0x215462);if(_0x3f43f1['internal']!=_0x3f43f1[_0xa1c9('0x25')]){_0x13cda8=_0x13cda8[_0xa1c9('0x2d')](getChanSpyApplications(_0x3f43f1,_0x3f43f1['name'],_0x215462));}return _0x35cea(_0x13cda8);}return _0x35cea([]);})[_0xa1c9('0x2e')](function(_0x198238){_0xf584e2(_0x198238);});});};module[_0xa1c9('0x2f')]=function(_0x1339fd){var _0xd1f98e=_0x1339fd[_0xa1c9('0x30')];return _0x1339fd[_0xa1c9('0x31')](_0xa1c9('0x32'),attributes,{'tableName':_0xa1c9('0x33'),'charset':_0xa1c9('0x34'),'collate':_0xa1c9('0x35'),'hooks':{'beforeCreate':function(_0x57aaab,_0x253dda,_0x1a0a71){var _0x20ef2b=typeof _0x57aaab['userProfileId']===_0xa1c9('0x36')?BPromise[_0xa1c9('0x37')](null):_0xd1f98e[_0xa1c9('0x38')][_0xa1c9('0x39')]({'where':{'id':_0x57aaab['userProfileId']}});_0x20ef2b[_0xa1c9('0x2b')](function(_0x365f46){if(_0x365f46){_0x57aaab['privacyEnabled']=_0x365f46['privacyEnabled'];}})[_0xa1c9('0x2b')](function(){_0x57aaab[_0xa1c9('0x3a')]();_0x57aaab[_0xa1c9('0x3b')](_0x1a0a71);})[_0xa1c9('0x2e')](function(_0x378a1e){_0x1a0a71(_0x378a1e);});},'beforeUpdate':function(_0x2c1825,_0xcedfe3,_0x32720c){Promise[_0xa1c9('0x37')]()[_0xa1c9('0x2b')](function(){if(_0x2c1825[_0xa1c9('0x3c')]('userProfileId')===![])return;return _0xd1f98e[_0xa1c9('0x38')][_0xa1c9('0x39')]({'where':{'id':_0x2c1825[_0xa1c9('0x3d')]}})[_0xa1c9('0x2b')](function(_0x3805f2){if(_0x3805f2)_0x2c1825[_0xa1c9('0x3e')]=_0x3805f2[_0xa1c9('0x3e')];return;});})[_0xa1c9('0x2b')](function(){if(_0x2c1825['changed'](_0xa1c9('0x18'))){_0x2c1825[_0xa1c9('0x3a')]();return _0x2c1825[_0xa1c9('0x3b')](_0x32720c);}_0x32720c();})['catch'](function(_0x211853){_0x32720c(_0x211853);});},'afterCreate':function(_0x928fe7,_0x23cab5,_0xa94d28){var _0x20b7b9=getUserApplications(_0x928fe7,_0x928fe7[_0xa1c9('0x2c')]);if(_0x928fe7[_0xa1c9('0x2c')]!=_0x928fe7['name']){_0x20b7b9=_0x20b7b9[_0xa1c9('0x2d')](getUserApplications(_0x928fe7,_0x928fe7['name']));}return Promise[_0xa1c9('0x37')]()['then'](function(){if(!_0x928fe7[_0xa1c9('0x3f')]){return _0x928fe7[_0xa1c9('0x40')]({'clientSideLoggingLevel':_0xa1c9('0x41'),'clientSideLoggingEnabled':![]});}})['then'](function(){return _0xd1f98e[_0xa1c9('0x42')]['bulkCreate'](_0x20b7b9);})[_0xa1c9('0x2b')](function(){if(_0x928fe7['chanspy']){return getChanSpyPromise(_0xd1f98e,_0x928fe7);}})['then'](function(_0x174f76){if(_0x174f76&&_0x174f76['length']){return _0xd1f98e[_0xa1c9('0x42')]['bulkCreate'](_0x174f76);}})['then'](function(){_0xa94d28();})[_0xa1c9('0x2e')](function(_0x418e95){_0xa94d28(_0x418e95);});},'afterUpdate':function(_0x463349,_0xa57eff,_0x568a3c){return BPromise[_0xa1c9('0x37')]()['then'](function(){if(_0x463349[_0xa1c9('0x3c')](_0xa1c9('0x10'))||_0x463349[_0xa1c9('0x3c')](_0xa1c9('0x7'))){return _0xd1f98e[_0xa1c9('0x42')][_0xa1c9('0x43')]({'where':{'UserId':_0x463349['id'],'type':_0xa1c9('0x9'),'ChanSpyId':{'$ne':null}}})[_0xa1c9('0x2b')](function(){if(_0x463349[_0xa1c9('0x10')]){return getChanSpyPromise(_0xd1f98e,_0x463349)[_0xa1c9('0x2b')](function(_0x4cf7c4){if(_0x4cf7c4&&_0x4cf7c4[_0xa1c9('0xa')]){return _0xd1f98e[_0xa1c9('0x42')][_0xa1c9('0x44')](_0x4cf7c4);}});}});}})[_0xa1c9('0x2b')](function(){if(_0x463349[_0xa1c9('0x3c')](_0xa1c9('0x21'))||_0x463349[_0xa1c9('0x3c')](_0xa1c9('0x7'))){return _0xd1f98e[_0xa1c9('0x42')]['destroy']({'where':{'UserId':_0x463349['id'],'type':_0xa1c9('0x9'),'ChanSpyId':null}})[_0xa1c9('0x2b')](function(){var _0x56ec51=getUserApplications(_0x463349,_0x463349[_0xa1c9('0x2c')]);if(_0x463349[_0xa1c9('0x2c')]!=_0x463349['name']){_0x56ec51=_0x56ec51[_0xa1c9('0x2d')](getUserApplications(_0x463349,_0x463349[_0xa1c9('0x25')]));}return _0xd1f98e[_0xa1c9('0x42')][_0xa1c9('0x44')](_0x56ec51);});}})['then'](function(){_0x568a3c();})[_0xa1c9('0x2e')](function(_0x4e7e1b){_0x568a3c(_0x4e7e1b);});},'afterDestroy':function(_0xf095ef){return _0xd1f98e['VoiceExtension'][_0xa1c9('0x43')]({'where':{'UserId':_0xf095ef['id'],'type':_0xa1c9('0x9')}});}},'instanceMethods':{'authenticate':function(_0x6d28a1,_0x160427){if(!_0x160427){return this[_0xa1c9('0x18')]===this[_0xa1c9('0x45')](_0x6d28a1);}var _0x423acf=this;this[_0xa1c9('0x45')](_0x6d28a1,function(_0x30eee2,_0x3d101b){if(_0x30eee2){_0x160427(_0x30eee2);}if(_0x423acf[_0xa1c9('0x18')]===_0x3d101b){_0x160427(null,!![]);}else{_0x160427(null,![]);}});},'makeSalt':function(_0x321075,_0x231f07){var _0x2e4a8b=0x10;if(typeof arguments[0x0]===_0xa1c9('0x46')){_0x231f07=arguments[0x0];_0x321075=_0x2e4a8b;}else if(typeof arguments[0x1]==='function'){_0x231f07=arguments[0x1];}else{throw new Error(_0xa1c9('0x47'));}if(!_0x321075){_0x321075=_0x2e4a8b;}return crypto[_0xa1c9('0x48')](_0x321075,function(_0x30df0d,_0x123001){if(_0x30df0d){_0x231f07(_0x30df0d);}return _0x231f07(null,_0x123001['toString'](_0xa1c9('0x49')));});},'encryptPassword':function(_0x220d3f,_0x2cfba4){if(!_0x220d3f||!this[_0xa1c9('0x4a')]){return _0x2cfba4?_0x2cfba4(null):null;}var _0x4c37dc=0x2710;var _0x2aa6a1=0x40;var _0x1aadc5=Buffer[_0xa1c9('0x4b')](this[_0xa1c9('0x4a')],_0xa1c9('0x49'));if(!_0x2cfba4){return crypto[_0xa1c9('0x4c')](_0x220d3f,_0x1aadc5,_0x4c37dc,_0x2aa6a1,'sha1')[_0xa1c9('0x4d')](_0xa1c9('0x49'));}return crypto[_0xa1c9('0x4e')](_0x220d3f,_0x1aadc5,_0x4c37dc,_0x2aa6a1,_0xa1c9('0x4f'),function(_0x131010,_0x45c321){if(_0x131010){_0x2cfba4(_0x131010);}return _0x2cfba4(null,_0x45c321['toString']('base64'));});},'updatePassword':function(_0x375664){if(!this['password']){return _0x375664(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0xa1c9('0x50')](this[_0xa1c9('0x51')])===-0x1){_0x375664(new Error(_0xa1c9('0x52')));}var _0x5ac5df=this;this['makeSalt'](function(_0x1a9be4,_0x53218e){if(_0x1a9be4){return _0x375664(_0x1a9be4);}_0x5ac5df[_0xa1c9('0x4a')]=_0x53218e;_0x5ac5df[_0xa1c9('0x45')](_0x5ac5df[_0xa1c9('0x18')],function(_0x57b787,_0x42f1c8){if(_0x57b787){_0x375664(_0x57b787);}_0x5ac5df[_0xa1c9('0x18')]=_0x42f1c8;_0x375664(null);});});},'updateMd5Password':function(){this[_0xa1c9('0x53')]=md5(this[_0xa1c9('0x25')]+_0xa1c9('0x54')+this['password']);return this[_0xa1c9('0x53')];},'getRealtimeData':function(){var _0x5de6d5={'id':this['id']};var _0x3925eb=jayson['client'][_0xa1c9('0x55')]({'port':0x232a});var _0x410cae=jayson[_0xa1c9('0x56')][_0xa1c9('0x55')]({'port':0x232c});var _0x4d295d={};var _0x284b4d={};return _0x3925eb['request'](_0xa1c9('0x57'),_0x5de6d5)[_0xa1c9('0x2b')](function(_0x904c05){if(_0x904c05[_0xa1c9('0x41')]){throw new Error(_0xa1c9('0x58'));}_0x4d295d=_0x904c05[_0xa1c9('0x59')];return _0x410cae[_0xa1c9('0x5a')](_0xa1c9('0x57'),_0x5de6d5);})[_0xa1c9('0x2b')](function(_0x25e74b){if(_0x25e74b[_0xa1c9('0x41')]){throw new Error(_0xa1c9('0x5b'));}_0x284b4d=_0x25e74b[_0xa1c9('0x59')];var _0x1b8a5d=_['merge']({},_0x4d295d,_0x284b4d);return _0x1b8a5d;})['catch'](function(_0x370b97){throw _0x370b97;});},'unpause':function(_0x417d1c,_0x3acd46=_0xa1c9('0x5c')){var _0xf892a3=this;var _0xa4f344={};return Promise[_0xa1c9('0x37')]()[_0xa1c9('0x2b')](function(){if(!_0x417d1c||_0x417d1c==='voice'&&_0x3acd46===_0xa1c9('0x5c')){var _0x3ff1a8=jayson[_0xa1c9('0x56')][_0xa1c9('0x55')]({'port':0x232a});return _0x3ff1a8['request'](_0xa1c9('0x5d'),{'id':_0xf892a3['id'],'name':_0xf892a3[_0xa1c9('0x25')],'pause':![]})['then'](function(_0x179de9){if(_0x179de9[_0xa1c9('0x41')]){throw new Error(util[_0xa1c9('0xe')]('Unable\x20to\x20unpause\x20agent\x20%s:$s',_0xf892a3['id'],_0xf892a3[_0xa1c9('0x25')]));}return _0x179de9['result'][_0xa1c9('0x5e')];});}})[_0xa1c9('0x2b')](function(){if(!_0x417d1c||_0x417d1c===_0xa1c9('0x5f')){return _0xd1f98e[_0xa1c9('0x60')][_0xa1c9('0x61')]({'paused':0x0},{'where':{'UserId':_0xf892a3['id']},'individualHooks':!![]});}})[_0xa1c9('0x2b')](function(){var _0x55a0c2=!_0x417d1c?_0xa1c9('0x2a'):'findOne';var _0x1755b8={'membername':_0xf892a3['name'],'type':_0xa1c9('0x62'),'exitAt':null};if(_0x417d1c){_0x1755b8[_0xa1c9('0x63')]=_0x417d1c;}return _0xd1f98e[_0xa1c9('0x64')][_0x55a0c2]({'where':_0x1755b8});})[_0xa1c9('0x2b')](function(_0x258ef7){if(_0x258ef7){var _0x46f1a8=Array[_0xa1c9('0x65')](_0x258ef7)?_0x258ef7:[_0x258ef7];var _0x1f2ae3=_0x46f1a8[_0xa1c9('0x66')](function(_0x5d0d72){return _0x5d0d72['update']({'exitAt':moment()['format'](_0xa1c9('0x67')),'data2':_0x3acd46});});return Promise[_0xa1c9('0x68')](_0x1f2ae3);}})[_0xa1c9('0x2b')](function(){if(!_0x417d1c){_0xa4f344[_0xa1c9('0x69')]=![];_0xa4f344[_0xa1c9('0x6a')]=![];_0xa4f344['chatPause']=![];_0xa4f344['faxPause']=![];_0xa4f344[_0xa1c9('0x6b')]=![];_0xa4f344[_0xa1c9('0x6c')]=![];_0xa4f344[_0xa1c9('0x6d')]=![];}else{_0xa4f344[_0x417d1c+_0xa1c9('0x6e')]=![];}return _0xf892a3[_0xa1c9('0x6f')]();})[_0xa1c9('0x2b')](function(_0x462b9f){var _0xb39ce5=require('../../config/utils');var _0x4a7d31=_0xb39ce5['getChannels']();_0x4a7d31[_0xa1c9('0x70')](function(_0x27b5f6){var _0xc6b10c=_0x27b5f6+_0xa1c9('0x71');_0xf892a3[_0xa1c9('0x72')]([_0xc6b10c],_0x462b9f[_0xc6b10c]);});return _0xf892a3[_0xa1c9('0x61')](_0xa4f344);})[_0xa1c9('0x2e')](function(_0xf84f44){throw _0xf84f44;});}}});};