Built motion from commit 00bf23f6.|2.6.16
[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 _0x3d9f=['merge','Set','format','chanspy','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','record','StopMixMonitor','wav','WAV','gsm','from-sip','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','SIP/%s,,tTxX','priority','defaults','VoiceChanSpy','findAll','internal','catch','models','define','User','users','utf8','utf8_bin','userProfileId','undefined','resolve','then','privacyEnabled','updateMd5Password','changed','UserProfile','concat','userSetting','error','bulkCreate','VoiceExtension','destroy','context','encryptPassword','function','Missing\x20Callback','randomBytes','toString','salt','base64','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','md5secret','client','http','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','manual','request','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','voice','UserVoiceQueueRt','update','findOne','PAUSE','channel','MemberReport','map','YYYY-MM-DD\x20HH:mm:ss','voicePause','mailPause','chatPause','faxPause','whatsappPause','openchannelPause','getRealtimeData','getChannels','forEach','Status','setDataValue','bluebird','crypto','util','md5','moment','lodash','jayson/promise','./user.attributes','system','length','prefix','push'];(function(_0x3e44fa,_0x75ed2a){var _0x2a0aba=function(_0x1db6a7){while(--_0x1db6a7){_0x3e44fa['push'](_0x3e44fa['shift']());}};_0x2a0aba(++_0x75ed2a);}(_0x3d9f,0xd2));var _0xf3d9=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x3d9f[_0x30ae5e];return _0x1f2e93;};'use strict';var BPromise=require(_0xf3d9('0x0'));var crypto=require(_0xf3d9('0x1'));var util=require(_0xf3d9('0x2'));var md5=require(_0xf3d9('0x3'));var moment=require(_0xf3d9('0x4'));var _=require(_0xf3d9('0x5'));var jayson=require(_0xf3d9('0x6'));var attributes=require(_0xf3d9('0x7'));var authTypes=['google'];var validatePresenceOf=function(_0x4ab31c){return _0x4ab31c&&_0x4ab31c['length'];};var getChanSpyApplications=function(_0x29dd94,_0x5c3fe6,_0x6d83d7){var _0x1eefe1={'context':_0x29dd94['context']||'from-sip','type':_0xf3d9('0x8'),'isApp':![],'UserId':_0x29dd94['id']};var _0x169c6f=[];for(var _0x13a4cc=0x0,_0x13503a=0x1;_0x13a4cc<_0x6d83d7[_0xf3d9('0x9')];_0x13a4cc++,_0x13503a=0x1){var _0x1b893f={'exten':util['format']('%s%s',_0x6d83d7[_0x13a4cc][_0xf3d9('0xa')],_0x5c3fe6),'ChanSpyId':_0x6d83d7[_0x13a4cc]['id']};_0x169c6f[_0xf3d9('0xb')](_[_0xf3d9('0xc')]({'app':_0xf3d9('0xd'),'appdata':util[_0xf3d9('0xe')]('CDR(type)=%s',_0xf3d9('0xf')),'priority':_0x13503a++},_0x1eefe1,_0x1b893f));if(_0x6d83d7[_0x13a4cc]['record']){_0x169c6f[_0xf3d9('0xb')](_[_0xf3d9('0xc')]({'app':_0xf3d9('0x10'),'appdata':util['format'](_0xf3d9('0x11'),_0x6d83d7[_0x13a4cc][_0xf3d9('0x12')]),'priority':_0x13503a++},_0x1eefe1,_0x1b893f));}if(_0x6d83d7[_0x13a4cc][_0xf3d9('0x13')]){_0x169c6f[_0xf3d9('0xb')](_['merge']({'app':_0xf3d9('0x14'),'appdata':_0x6d83d7[_0x13a4cc][_0xf3d9('0x15')],'priority':_0x13503a++},_0x1eefe1,_0x1b893f));}_0x169c6f[_0xf3d9('0xb')](_['merge']({'app':_0xf3d9('0x16'),'appdata':util[_0xf3d9('0xe')](_0xf3d9('0x17'),_0x29dd94[_0xf3d9('0x18')],_0x6d83d7[_0x13a4cc][_0xf3d9('0x19')]?_0x6d83d7[_0x13a4cc]['options'][_0xf3d9('0x1a')](''):''),'priority':_0x13503a++},_0x1eefe1,_0x1b893f));if(_0x6d83d7[_0x13a4cc][_0xf3d9('0x1b')]){_0x169c6f[_0xf3d9('0xb')](_[_0xf3d9('0xc')]({'app':_0xf3d9('0x1c'),'priority':_0x13503a++},_0x1eefe1,_0x1b893f));}}return _0x169c6f;};var getUserApplications=function(_0x40c523,_0x15cfb5){var _0x9f8bad=[_0xf3d9('0x1d'),_0xf3d9('0x1e'),_0xf3d9('0x1f')];var _0x51aeef={'context':_0x40c523['context']||_0xf3d9('0x20'),'exten':_0x15cfb5,'type':_0xf3d9('0x8'),'isApp':![],'UserId':_0x40c523['id']};var _0x3d8f50=[{'app':_0xf3d9('0xd'),'appdata':_0xf3d9('0x21')}];if(_0x40c523[_0xf3d9('0x22')]&&_[_0xf3d9('0x23')](_0x9f8bad,_0x40c523[_0xf3d9('0x22')])){_0x3d8f50[_0xf3d9('0xb')]({'app':_0xf3d9('0xd'),'appdata':_0xf3d9('0x24')});_0x3d8f50[_0xf3d9('0xb')]({'app':_0xf3d9('0xd'),'appdata':util['format'](_0xf3d9('0x25'),_0x40c523[_0xf3d9('0x22')])});_0x3d8f50[_0xf3d9('0xb')]({'app':'Dial','appdata':util[_0xf3d9('0xe')](_0xf3d9('0x26'),_0x40c523[_0xf3d9('0x18')])});}else{_0x3d8f50[_0xf3d9('0xb')]({'app':_0xf3d9('0x27'),'appdata':util[_0xf3d9('0xe')](_0xf3d9('0x28'),_0x40c523[_0xf3d9('0x18')])});}_0x3d8f50[_0xf3d9('0xb')]({'app':'Hangup'});for(var _0x165957=0x0;_0x165957<_0x3d8f50['length'];_0x165957++){_0x3d8f50[_0x165957][_0xf3d9('0x29')]=_0x165957+0x1;_0x3d8f50[_0x165957]=_[_0xf3d9('0x2a')](_0x3d8f50[_0x165957],_0x51aeef);}return _0x3d8f50;};var getChanSpyPromise=function(_0x1491d0,_0x3d9c23){return new BPromise(function(_0x4e336a,_0x1d51ce){return _0x1491d0[_0xf3d9('0x2b')][_0xf3d9('0x2c')]()['then'](function(_0x1d6080){if(_0x1d6080){var _0x5eba1e=getChanSpyApplications(_0x3d9c23,_0x3d9c23[_0xf3d9('0x2d')],_0x1d6080);if(_0x3d9c23['internal']!=_0x3d9c23[_0xf3d9('0x18')]){_0x5eba1e=_0x5eba1e['concat'](getChanSpyApplications(_0x3d9c23,_0x3d9c23[_0xf3d9('0x18')],_0x1d6080));}return _0x4e336a(_0x5eba1e);}return _0x4e336a([]);})[_0xf3d9('0x2e')](function(_0x201dee){_0x1d51ce(_0x201dee);});});};module['exports']=function(_0x7d0ef7){var _0x524da0=_0x7d0ef7[_0xf3d9('0x2f')];return _0x7d0ef7[_0xf3d9('0x30')](_0xf3d9('0x31'),attributes,{'tableName':_0xf3d9('0x32'),'charset':_0xf3d9('0x33'),'collate':_0xf3d9('0x34'),'hooks':{'beforeCreate':function(_0x1a0860,_0x1831f5,_0x1cae82){var _0x16258a=typeof _0x1a0860[_0xf3d9('0x35')]===_0xf3d9('0x36')?BPromise[_0xf3d9('0x37')](null):_0x524da0['UserProfile']['find']({'where':{'id':_0x1a0860[_0xf3d9('0x35')]}});_0x16258a[_0xf3d9('0x38')](function(_0x6d116f){if(_0x6d116f){_0x1a0860[_0xf3d9('0x39')]=_0x6d116f[_0xf3d9('0x39')];}})[_0xf3d9('0x38')](function(){_0x1a0860[_0xf3d9('0x3a')]();_0x1a0860['updatePassword'](_0x1cae82);})[_0xf3d9('0x2e')](function(_0x44ea06){_0x1cae82(_0x44ea06);});},'beforeUpdate':function(_0x56bd5e,_0x4232da,_0x5e2b98){Promise[_0xf3d9('0x37')]()[_0xf3d9('0x38')](function(){if(_0x56bd5e[_0xf3d9('0x3b')](_0xf3d9('0x35'))===![])return;return _0x524da0[_0xf3d9('0x3c')]['find']({'where':{'id':_0x56bd5e[_0xf3d9('0x35')]}})[_0xf3d9('0x38')](function(_0x19174b){if(_0x19174b)_0x56bd5e[_0xf3d9('0x39')]=_0x19174b['privacyEnabled'];return;});})[_0xf3d9('0x38')](function(){if(_0x56bd5e[_0xf3d9('0x3b')](_0xf3d9('0x15'))){_0x56bd5e[_0xf3d9('0x3a')]();return _0x56bd5e['updatePassword'](_0x5e2b98);}_0x5e2b98();})[_0xf3d9('0x2e')](function(_0x4e249c){_0x5e2b98(_0x4e249c);});},'afterCreate':function(_0x33a422,_0x17f573,_0x2316f3){var _0x574de7=getUserApplications(_0x33a422,_0x33a422['internal']);if(_0x33a422[_0xf3d9('0x2d')]!=_0x33a422[_0xf3d9('0x18')]){_0x574de7=_0x574de7[_0xf3d9('0x3d')](getUserApplications(_0x33a422,_0x33a422[_0xf3d9('0x18')]));}return Promise['resolve']()[_0xf3d9('0x38')](function(){if(!_0x33a422[_0xf3d9('0x3e')]){return _0x33a422['createUserSetting']({'clientSideLoggingLevel':_0xf3d9('0x3f'),'clientSideLoggingEnabled':![]});}})[_0xf3d9('0x38')](function(){return _0x524da0['VoiceExtension'][_0xf3d9('0x40')](_0x574de7);})[_0xf3d9('0x38')](function(){if(_0x33a422[_0xf3d9('0xf')]){return getChanSpyPromise(_0x524da0,_0x33a422);}})[_0xf3d9('0x38')](function(_0x4a57f6){if(_0x4a57f6&&_0x4a57f6[_0xf3d9('0x9')]){return _0x524da0['VoiceExtension'][_0xf3d9('0x40')](_0x4a57f6);}})[_0xf3d9('0x38')](function(){_0x2316f3();})[_0xf3d9('0x2e')](function(_0x55a1a1){_0x2316f3(_0x55a1a1);});},'afterUpdate':function(_0x17be73,_0x460866,_0x39ff57){return BPromise[_0xf3d9('0x37')]()[_0xf3d9('0x38')](function(){if(_0x17be73[_0xf3d9('0x3b')](_0xf3d9('0xf'))||_0x17be73['changed']('context')){return _0x524da0[_0xf3d9('0x41')][_0xf3d9('0x42')]({'where':{'UserId':_0x17be73['id'],'type':_0xf3d9('0x8'),'ChanSpyId':{'$ne':null}}})[_0xf3d9('0x38')](function(){if(_0x17be73[_0xf3d9('0xf')]){return getChanSpyPromise(_0x524da0,_0x17be73)['then'](function(_0x36c4eb){if(_0x36c4eb&&_0x36c4eb['length']){return _0x524da0['VoiceExtension'][_0xf3d9('0x40')](_0x36c4eb);}});}});}})[_0xf3d9('0x38')](function(){if(_0x17be73[_0xf3d9('0x3b')]('extensionMonitor')||_0x17be73[_0xf3d9('0x3b')](_0xf3d9('0x43'))){return _0x524da0['VoiceExtension'][_0xf3d9('0x42')]({'where':{'UserId':_0x17be73['id'],'type':_0xf3d9('0x8'),'ChanSpyId':null}})[_0xf3d9('0x38')](function(){var _0x8e21eb=getUserApplications(_0x17be73,_0x17be73[_0xf3d9('0x2d')]);if(_0x17be73['internal']!=_0x17be73[_0xf3d9('0x18')]){_0x8e21eb=_0x8e21eb['concat'](getUserApplications(_0x17be73,_0x17be73['name']));}return _0x524da0[_0xf3d9('0x41')][_0xf3d9('0x40')](_0x8e21eb);});}})[_0xf3d9('0x38')](function(){_0x39ff57();})[_0xf3d9('0x2e')](function(_0x4cce20){_0x39ff57(_0x4cce20);});},'afterDestroy':function(_0xa3b6e8){return _0x524da0[_0xf3d9('0x41')][_0xf3d9('0x42')]({'where':{'UserId':_0xa3b6e8['id'],'type':_0xf3d9('0x8')}});}},'instanceMethods':{'authenticate':function(_0xb05455,_0x49442d){if(!_0x49442d){return this[_0xf3d9('0x15')]===this['encryptPassword'](_0xb05455);}var _0x3d5d59=this;this[_0xf3d9('0x44')](_0xb05455,function(_0x2c2232,_0x5d5235){if(_0x2c2232){_0x49442d(_0x2c2232);}if(_0x3d5d59[_0xf3d9('0x15')]===_0x5d5235){_0x49442d(null,!![]);}else{_0x49442d(null,![]);}});},'makeSalt':function(_0x15c883,_0x4524f3){var _0x46e58=0x10;if(typeof arguments[0x0]==='function'){_0x4524f3=arguments[0x0];_0x15c883=_0x46e58;}else if(typeof arguments[0x1]===_0xf3d9('0x45')){_0x4524f3=arguments[0x1];}else{throw new Error(_0xf3d9('0x46'));}if(!_0x15c883){_0x15c883=_0x46e58;}return crypto[_0xf3d9('0x47')](_0x15c883,function(_0x98ea2c,_0x330fc4){if(_0x98ea2c){_0x4524f3(_0x98ea2c);}return _0x4524f3(null,_0x330fc4[_0xf3d9('0x48')]('base64'));});},'encryptPassword':function(_0x3f019d,_0x75b462){if(!_0x3f019d||!this[_0xf3d9('0x49')]){return _0x75b462?_0x75b462(null):null;}var _0x8d25cc=0x2710;var _0x58e4ee=0x40;var _0x39b8e3=Buffer['from'](this[_0xf3d9('0x49')],_0xf3d9('0x4a'));if(!_0x75b462){return crypto['pbkdf2Sync'](_0x3f019d,_0x39b8e3,_0x8d25cc,_0x58e4ee,'sha1')[_0xf3d9('0x48')]('base64');}return crypto[_0xf3d9('0x4b')](_0x3f019d,_0x39b8e3,_0x8d25cc,_0x58e4ee,'sha1',function(_0x12bfcb,_0x1be037){if(_0x12bfcb){_0x75b462(_0x12bfcb);}return _0x75b462(null,_0x1be037[_0xf3d9('0x48')](_0xf3d9('0x4a')));});},'updatePassword':function(_0x2a88f0){if(!this[_0xf3d9('0x15')]){return _0x2a88f0(null);}if(!validatePresenceOf(this[_0xf3d9('0x15')])&&authTypes[_0xf3d9('0x4c')](this[_0xf3d9('0x4d')])===-0x1){_0x2a88f0(new Error(_0xf3d9('0x4e')));}var _0x3c7bb8=this;this[_0xf3d9('0x4f')](function(_0x1e91c6,_0x4af31d){if(_0x1e91c6){return _0x2a88f0(_0x1e91c6);}_0x3c7bb8[_0xf3d9('0x49')]=_0x4af31d;_0x3c7bb8[_0xf3d9('0x44')](_0x3c7bb8['password'],function(_0x86750c,_0x3e3e2a){if(_0x86750c){_0x2a88f0(_0x86750c);}_0x3c7bb8[_0xf3d9('0x15')]=_0x3e3e2a;_0x2a88f0(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xf3d9('0x18')]+_0xf3d9('0x50')+this[_0xf3d9('0x15')]);return this[_0xf3d9('0x51')];},'getRealtimeData':function(){var _0x48fbcf={'id':this['id']};var _0x25ace0=jayson[_0xf3d9('0x52')][_0xf3d9('0x53')]({'port':0x232a});var _0x1a8d6f=jayson[_0xf3d9('0x52')][_0xf3d9('0x53')]({'port':0x232c});var _0x25b9a9={};var _0xe4e2f5={};return _0x25ace0['request'](_0xf3d9('0x54'),_0x48fbcf)[_0xf3d9('0x38')](function(_0x2ff52f){if(_0x2ff52f[_0xf3d9('0x3f')]){throw new Error(_0xf3d9('0x55'));}_0x25b9a9=_0x2ff52f[_0xf3d9('0x56')];return _0x1a8d6f['request']('Agents',_0x48fbcf);})['then'](function(_0x3db4fb){if(_0x3db4fb[_0xf3d9('0x3f')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)');}_0xe4e2f5=_0x3db4fb[_0xf3d9('0x56')];var _0x13b718=_[_0xf3d9('0xc')]({},_0x25b9a9,_0xe4e2f5);return _0x13b718;})[_0xf3d9('0x2e')](function(_0x1ffe09){throw _0x1ffe09;});},'unpause':function(_0x120f6c,_0x29b5e5=_0xf3d9('0x57')){var _0x3a7308=this;var _0x3935ee={};return Promise[_0xf3d9('0x37')]()[_0xf3d9('0x38')](function(){if(!_0x120f6c||_0x120f6c==='voice'&&_0x29b5e5===_0xf3d9('0x57')){var _0x2878e0=jayson['client'][_0xf3d9('0x53')]({'port':0x232a});return _0x2878e0[_0xf3d9('0x58')](_0xf3d9('0x59'),{'id':_0x3a7308['id'],'name':_0x3a7308[_0xf3d9('0x18')],'pause':![]})[_0xf3d9('0x38')](function(_0x495c52){if(_0x495c52[_0xf3d9('0x3f')]){throw new Error(util[_0xf3d9('0xe')](_0xf3d9('0x5a'),_0x3a7308['id'],_0x3a7308[_0xf3d9('0x18')]));}return _0x495c52['result']['message'];});}})[_0xf3d9('0x38')](function(){if(!_0x120f6c||_0x120f6c===_0xf3d9('0x5b')){return _0x524da0[_0xf3d9('0x5c')][_0xf3d9('0x5d')]({'paused':0x0},{'where':{'UserId':_0x3a7308['id']},'individualHooks':!![]});}})[_0xf3d9('0x38')](function(){var _0x410e3c=!_0x120f6c?_0xf3d9('0x2c'):_0xf3d9('0x5e');var _0x3bab7e={'membername':_0x3a7308[_0xf3d9('0x18')],'type':_0xf3d9('0x5f'),'exitAt':null};if(_0x120f6c){_0x3bab7e[_0xf3d9('0x60')]=_0x120f6c;}return _0x524da0[_0xf3d9('0x61')][_0x410e3c]({'where':_0x3bab7e});})['then'](function(_0xf88df7){if(_0xf88df7){var _0x3e0397=Array['isArray'](_0xf88df7)?_0xf88df7:[_0xf88df7];var _0x376921=_0x3e0397[_0xf3d9('0x62')](function(_0x8e97b3){return _0x8e97b3['update']({'exitAt':moment()[_0xf3d9('0xe')](_0xf3d9('0x63')),'data2':_0x29b5e5});});return Promise['all'](_0x376921);}})[_0xf3d9('0x38')](function(){if(!_0x120f6c){_0x3935ee[_0xf3d9('0x64')]=![];_0x3935ee[_0xf3d9('0x65')]=![];_0x3935ee[_0xf3d9('0x66')]=![];_0x3935ee[_0xf3d9('0x67')]=![];_0x3935ee['smsPause']=![];_0x3935ee[_0xf3d9('0x68')]=![];_0x3935ee[_0xf3d9('0x69')]=![];}else{_0x3935ee[_0x120f6c+'Pause']=![];}return _0x3a7308[_0xf3d9('0x6a')]();})['then'](function(_0x5dd6bc){var _0x3526c9=require('../../config/utils');var _0x3f8a02=_0x3526c9[_0xf3d9('0x6b')]();_0x3f8a02[_0xf3d9('0x6c')](function(_0x28ed9d){var _0x621c58=_0x28ed9d+_0xf3d9('0x6d');_0x3a7308[_0xf3d9('0x6e')]([_0x621c58],_0x5dd6bc[_0x621c58]);});return _0x3a7308[_0xf3d9('0x5d')](_0x3935ee);})[_0xf3d9('0x2e')](function(_0x396dc6){throw _0x396dc6;});}}});};