Built motion from commit b5413ace.|2.6.9
[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 _0x689c=['catch','exports','models','utf8','utf8_bin','userProfileId','undefined','resolve','find','privacyEnabled','updateMd5Password','updatePassword','changed','userSetting','error','VoiceExtension','bulkCreate','system','destroy','encryptPassword','function','randomBytes','toString','salt','from','base64','provider','Invalid\x20password','makeSalt','client','http','request','Agents','result','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','voice','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','UserVoiceQueueRt','update','findAll','findOne','PAUSE','channel','MemberReport','isArray','YYYY-MM-DD\x20HH:mm:ss','mailPause','chatPause','faxPause','whatsappPause','openchannelPause','Pause','../../config/utils','forEach','Status','util','md5','moment','lodash','jayson/promise','./user.attributes','context','from-sip','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','${UNIQUEID}.%s,a','recordingFormat','password','ChanSpy','name','options','StopMixMonitor','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','length','priority','defaults','VoiceChanSpy','then','internal','concat'];(function(_0x5980c0,_0x3af95b){var _0x5c3fe1=function(_0x3b78c1){while(--_0x3b78c1){_0x5980c0['push'](_0x5980c0['shift']());}};_0x5c3fe1(++_0x3af95b);}(_0x689c,0x9e));var _0xc689=function(_0x2cdb42,_0x24a24f){_0x2cdb42=_0x2cdb42-0x0;var _0x495a27=_0x689c[_0x2cdb42];return _0x495a27;};'use strict';var BPromise=require('bluebird');var crypto=require('crypto');var util=require(_0xc689('0x0'));var md5=require(_0xc689('0x1'));var moment=require(_0xc689('0x2'));var _=require(_0xc689('0x3'));var jayson=require(_0xc689('0x4'));var attributes=require(_0xc689('0x5'));var authTypes=['google'];var validatePresenceOf=function(_0x3d106f){return _0x3d106f&&_0x3d106f['length'];};var getChanSpyApplications=function(_0x47aaf0,_0x3a4916,_0x28ce4c){var _0x2b9f8a={'context':_0x47aaf0[_0xc689('0x6')]||_0xc689('0x7'),'type':'system','isApp':![],'UserId':_0x47aaf0['id']};var _0x17ff9c=[];for(var _0x2c8b05=0x0,_0x30c7e9=0x1;_0x2c8b05<_0x28ce4c['length'];_0x2c8b05++,_0x30c7e9=0x1){var _0x1e304c={'exten':util[_0xc689('0x8')](_0xc689('0x9'),_0x28ce4c[_0x2c8b05][_0xc689('0xa')],_0x3a4916),'ChanSpyId':_0x28ce4c[_0x2c8b05]['id']};_0x17ff9c[_0xc689('0xb')](_[_0xc689('0xc')]({'app':_0xc689('0xd'),'appdata':util[_0xc689('0x8')](_0xc689('0xe'),_0xc689('0xf')),'priority':_0x30c7e9++},_0x2b9f8a,_0x1e304c));if(_0x28ce4c[_0x2c8b05][_0xc689('0x10')]){_0x17ff9c['push'](_[_0xc689('0xc')]({'app':'MixMonitor','appdata':util[_0xc689('0x8')](_0xc689('0x11'),_0x28ce4c[_0x2c8b05][_0xc689('0x12')]),'priority':_0x30c7e9++},_0x2b9f8a,_0x1e304c));}if(_0x28ce4c[_0x2c8b05]['auth']){_0x17ff9c[_0xc689('0xb')](_[_0xc689('0xc')]({'app':'Authenticate','appdata':_0x28ce4c[_0x2c8b05][_0xc689('0x13')],'priority':_0x30c7e9++},_0x2b9f8a,_0x1e304c));}_0x17ff9c[_0xc689('0xb')](_[_0xc689('0xc')]({'app':_0xc689('0x14'),'appdata':util['format']('SIP/%s,%s',_0x47aaf0[_0xc689('0x15')],_0x28ce4c[_0x2c8b05][_0xc689('0x16')]?_0x28ce4c[_0x2c8b05][_0xc689('0x16')]['join'](''):''),'priority':_0x30c7e9++},_0x2b9f8a,_0x1e304c));if(_0x28ce4c[_0x2c8b05]['record']){_0x17ff9c[_0xc689('0xb')](_[_0xc689('0xc')]({'app':_0xc689('0x17'),'priority':_0x30c7e9++},_0x2b9f8a,_0x1e304c));}}return _0x17ff9c;};var getUserApplications=function(_0x38665c,_0xea568f){var _0x2b14fb=['wav',_0xc689('0x18'),_0xc689('0x19')];var _0x4bf5ca={'context':_0x38665c['context']||'from-sip','exten':_0xea568f,'type':'system','isApp':![],'UserId':_0x38665c['id']};var _0x4deff6=[{'app':_0xc689('0xd'),'appdata':_0xc689('0x1a')}];if(_0x38665c[_0xc689('0x1b')]&&_[_0xc689('0x1c')](_0x2b14fb,_0x38665c[_0xc689('0x1b')])){_0x4deff6[_0xc689('0xb')]({'app':_0xc689('0xd'),'appdata':_0xc689('0x1d')});_0x4deff6[_0xc689('0xb')]({'app':_0xc689('0xd'),'appdata':util[_0xc689('0x8')](_0xc689('0x1e'),_0x38665c[_0xc689('0x1b')])});_0x4deff6[_0xc689('0xb')]({'app':_0xc689('0x1f'),'appdata':util[_0xc689('0x8')](_0xc689('0x20'),_0x38665c[_0xc689('0x15')])});}else{_0x4deff6[_0xc689('0xb')]({'app':_0xc689('0x1f'),'appdata':util[_0xc689('0x8')](_0xc689('0x21'),_0x38665c[_0xc689('0x15')])});}_0x4deff6['push']({'app':_0xc689('0x22')});for(var _0x1c01a4=0x0;_0x1c01a4<_0x4deff6[_0xc689('0x23')];_0x1c01a4++){_0x4deff6[_0x1c01a4][_0xc689('0x24')]=_0x1c01a4+0x1;_0x4deff6[_0x1c01a4]=_[_0xc689('0x25')](_0x4deff6[_0x1c01a4],_0x4bf5ca);}return _0x4deff6;};var getChanSpyPromise=function(_0x32bebd,_0x582d76){return new BPromise(function(_0x60afcf,_0x5a9d43){return _0x32bebd[_0xc689('0x26')]['findAll']()[_0xc689('0x27')](function(_0xd0af6d){if(_0xd0af6d){var _0x54f3e9=getChanSpyApplications(_0x582d76,_0x582d76['internal'],_0xd0af6d);if(_0x582d76[_0xc689('0x28')]!=_0x582d76[_0xc689('0x15')]){_0x54f3e9=_0x54f3e9[_0xc689('0x29')](getChanSpyApplications(_0x582d76,_0x582d76[_0xc689('0x15')],_0xd0af6d));}return _0x60afcf(_0x54f3e9);}return _0x60afcf([]);})[_0xc689('0x2a')](function(_0x1f41d6){_0x5a9d43(_0x1f41d6);});});};module[_0xc689('0x2b')]=function(_0x6af206){var _0x5c7156=_0x6af206[_0xc689('0x2c')];return _0x6af206['define']('User',attributes,{'tableName':'users','charset':_0xc689('0x2d'),'collate':_0xc689('0x2e'),'hooks':{'beforeCreate':function(_0x13727f,_0x38020c,_0x40f559){var _0x5ca8b9=typeof _0x13727f[_0xc689('0x2f')]===_0xc689('0x30')?BPromise[_0xc689('0x31')](null):_0x5c7156['UserProfile'][_0xc689('0x32')]({'where':{'id':_0x13727f[_0xc689('0x2f')]}});_0x5ca8b9[_0xc689('0x27')](function(_0x3c3b35){if(_0x3c3b35){_0x13727f['privacyEnabled']=_0x3c3b35[_0xc689('0x33')];}})[_0xc689('0x27')](function(){_0x13727f[_0xc689('0x34')]();_0x13727f[_0xc689('0x35')](_0x40f559);})['catch'](function(_0x2160dc){_0x40f559(_0x2160dc);});},'beforeUpdate':function(_0x8a888e,_0x549c28,_0x1fcdef){Promise[_0xc689('0x31')]()['then'](function(){if(_0x8a888e['changed']('userProfileId')===![])return;return _0x5c7156['UserProfile']['find']({'where':{'id':_0x8a888e[_0xc689('0x2f')]}})[_0xc689('0x27')](function(_0x178aa8){if(_0x178aa8)_0x8a888e[_0xc689('0x33')]=_0x178aa8['privacyEnabled'];return;});})[_0xc689('0x27')](function(){if(_0x8a888e[_0xc689('0x36')]('password')){_0x8a888e['updateMd5Password']();return _0x8a888e[_0xc689('0x35')](_0x1fcdef);}_0x1fcdef();})[_0xc689('0x2a')](function(_0x2a86ac){_0x1fcdef(_0x2a86ac);});},'afterCreate':function(_0x103b75,_0x122668,_0x4ec548){var _0x511569=getUserApplications(_0x103b75,_0x103b75[_0xc689('0x28')]);if(_0x103b75[_0xc689('0x28')]!=_0x103b75[_0xc689('0x15')]){_0x511569=_0x511569['concat'](getUserApplications(_0x103b75,_0x103b75['name']));}return Promise[_0xc689('0x31')]()[_0xc689('0x27')](function(){if(!_0x103b75[_0xc689('0x37')]){return _0x103b75['createUserSetting']({'clientSideLoggingLevel':_0xc689('0x38'),'clientSideLoggingEnabled':![]});}})[_0xc689('0x27')](function(){return _0x5c7156[_0xc689('0x39')][_0xc689('0x3a')](_0x511569);})['then'](function(){if(_0x103b75['chanspy']){return getChanSpyPromise(_0x5c7156,_0x103b75);}})['then'](function(_0x51494b){if(_0x51494b&&_0x51494b[_0xc689('0x23')]){return _0x5c7156[_0xc689('0x39')]['bulkCreate'](_0x51494b);}})[_0xc689('0x27')](function(){_0x4ec548();})[_0xc689('0x2a')](function(_0x401026){_0x4ec548(_0x401026);});},'afterUpdate':function(_0x3927b5,_0x399036,_0x391d2b){return BPromise[_0xc689('0x31')]()[_0xc689('0x27')](function(){if(_0x3927b5['changed'](_0xc689('0xf'))||_0x3927b5[_0xc689('0x36')](_0xc689('0x6'))){return _0x5c7156[_0xc689('0x39')]['destroy']({'where':{'UserId':_0x3927b5['id'],'type':_0xc689('0x3b'),'ChanSpyId':{'$ne':null}}})[_0xc689('0x27')](function(){if(_0x3927b5['chanspy']){return getChanSpyPromise(_0x5c7156,_0x3927b5)[_0xc689('0x27')](function(_0x2a7b2b){if(_0x2a7b2b&&_0x2a7b2b['length']){return _0x5c7156[_0xc689('0x39')]['bulkCreate'](_0x2a7b2b);}});}});}})[_0xc689('0x27')](function(){if(_0x3927b5['changed'](_0xc689('0x1b'))||_0x3927b5['changed'](_0xc689('0x6'))){return _0x5c7156[_0xc689('0x39')]['destroy']({'where':{'UserId':_0x3927b5['id'],'type':_0xc689('0x3b'),'ChanSpyId':null}})[_0xc689('0x27')](function(){var _0x2ec82e=getUserApplications(_0x3927b5,_0x3927b5[_0xc689('0x28')]);if(_0x3927b5['internal']!=_0x3927b5[_0xc689('0x15')]){_0x2ec82e=_0x2ec82e['concat'](getUserApplications(_0x3927b5,_0x3927b5[_0xc689('0x15')]));}return _0x5c7156['VoiceExtension'][_0xc689('0x3a')](_0x2ec82e);});}})[_0xc689('0x27')](function(){_0x391d2b();})[_0xc689('0x2a')](function(_0x51465c){_0x391d2b(_0x51465c);});},'afterDestroy':function(_0xd9c12f){return _0x5c7156[_0xc689('0x39')][_0xc689('0x3c')]({'where':{'UserId':_0xd9c12f['id'],'type':_0xc689('0x3b')}});}},'instanceMethods':{'authenticate':function(_0x26615e,_0x462f73){if(!_0x462f73){return this[_0xc689('0x13')]===this[_0xc689('0x3d')](_0x26615e);}var _0x2fb387=this;this[_0xc689('0x3d')](_0x26615e,function(_0x525b70,_0x5eab27){if(_0x525b70){_0x462f73(_0x525b70);}if(_0x2fb387[_0xc689('0x13')]===_0x5eab27){_0x462f73(null,!![]);}else{_0x462f73(null,![]);}});},'makeSalt':function(_0x3ab8c0,_0x3b3534){var _0x186cb6=0x10;if(typeof arguments[0x0]===_0xc689('0x3e')){_0x3b3534=arguments[0x0];_0x3ab8c0=_0x186cb6;}else if(typeof arguments[0x1]===_0xc689('0x3e')){_0x3b3534=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x3ab8c0){_0x3ab8c0=_0x186cb6;}return crypto[_0xc689('0x3f')](_0x3ab8c0,function(_0x2e64d9,_0x4d6104){if(_0x2e64d9){_0x3b3534(_0x2e64d9);}return _0x3b3534(null,_0x4d6104[_0xc689('0x40')]('base64'));});},'encryptPassword':function(_0xe9a827,_0x4e8388){if(!_0xe9a827||!this[_0xc689('0x41')]){return _0x4e8388?_0x4e8388(null):null;}var _0x1064e6=0x2710;var _0x418078=0x40;var _0xb5e0ab=Buffer[_0xc689('0x42')](this[_0xc689('0x41')],_0xc689('0x43'));if(!_0x4e8388){return crypto['pbkdf2Sync'](_0xe9a827,_0xb5e0ab,_0x1064e6,_0x418078,'sha1')[_0xc689('0x40')](_0xc689('0x43'));}return crypto['pbkdf2'](_0xe9a827,_0xb5e0ab,_0x1064e6,_0x418078,'sha1',function(_0x237208,_0x541477){if(_0x237208){_0x4e8388(_0x237208);}return _0x4e8388(null,_0x541477['toString'](_0xc689('0x43')));});},'updatePassword':function(_0x2a50fa){if(!this[_0xc689('0x13')]){return _0x2a50fa(null);}if(!validatePresenceOf(this[_0xc689('0x13')])&&authTypes['indexOf'](this[_0xc689('0x44')])===-0x1){_0x2a50fa(new Error(_0xc689('0x45')));}var _0x680a0f=this;this[_0xc689('0x46')](function(_0x32e772,_0x434490){if(_0x32e772){return _0x2a50fa(_0x32e772);}_0x680a0f[_0xc689('0x41')]=_0x434490;_0x680a0f[_0xc689('0x3d')](_0x680a0f[_0xc689('0x13')],function(_0x2719f0,_0x437e7d){if(_0x2719f0){_0x2a50fa(_0x2719f0);}_0x680a0f['password']=_0x437e7d;_0x2a50fa(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xc689('0x15')]+':asterisk:'+this[_0xc689('0x13')]);return this['md5secret'];},'getRealtimeData':function(){var _0x486298={'id':this['id']};var _0xb03978=jayson[_0xc689('0x47')][_0xc689('0x48')]({'port':0x232a});var _0x5c5564=jayson['client'][_0xc689('0x48')]({'port':0x232c});var _0x525785={};var _0x41d5e7={};return _0xb03978[_0xc689('0x49')](_0xc689('0x4a'),_0x486298)[_0xc689('0x27')](function(_0x4337c9){if(_0x4337c9[_0xc689('0x38')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)');}_0x525785=_0x4337c9[_0xc689('0x4b')];return _0x5c5564['request'](_0xc689('0x4a'),_0x486298);})[_0xc689('0x27')](function(_0x309be4){if(_0x309be4['error']){throw new Error(_0xc689('0x4c'));}_0x41d5e7=_0x309be4[_0xc689('0x4b')];var _0x422552=_[_0xc689('0xc')]({},_0x525785,_0x41d5e7);return _0x422552;})[_0xc689('0x2a')](function(_0x5bde1a){throw _0x5bde1a;});},'unpause':function(_0x4b9532,_0x28bb5e=_0xc689('0x4d')){var _0x35b212=this;var _0x3935c0={};return Promise[_0xc689('0x31')]()[_0xc689('0x27')](function(){if(!_0x4b9532||_0x4b9532===_0xc689('0x4e')&&_0x28bb5e==='manual'){var _0x20f081=jayson[_0xc689('0x47')][_0xc689('0x48')]({'port':0x232a});return _0x20f081['request'](_0xc689('0x4f'),{'id':_0x35b212['id'],'name':_0x35b212['name'],'pause':![]})[_0xc689('0x27')](function(_0x11db77){if(_0x11db77[_0xc689('0x38')]){throw new Error(util[_0xc689('0x8')](_0xc689('0x50'),_0x35b212['id'],_0x35b212[_0xc689('0x15')]));}return _0x11db77[_0xc689('0x4b')][_0xc689('0x51')];});}})['then'](function(){if(!_0x4b9532||_0x4b9532===_0xc689('0x4e')){return _0x5c7156[_0xc689('0x52')][_0xc689('0x53')]({'paused':0x0},{'where':{'UserId':_0x35b212['id']},'individualHooks':!![]});}})[_0xc689('0x27')](function(){var _0x36e351=!_0x4b9532?_0xc689('0x54'):_0xc689('0x55');var _0x2647f2={'membername':_0x35b212[_0xc689('0x15')],'type':_0xc689('0x56'),'exitAt':null};if(_0x4b9532){_0x2647f2[_0xc689('0x57')]=_0x4b9532;}return _0x5c7156[_0xc689('0x58')][_0x36e351]({'where':_0x2647f2});})[_0xc689('0x27')](function(_0xdae8e4){if(_0xdae8e4){var _0x4252ea=Array[_0xc689('0x59')](_0xdae8e4)?_0xdae8e4:[_0xdae8e4];var _0x531453=_0x4252ea['map'](function(_0x130d8f){return _0x130d8f['update']({'exitAt':moment()[_0xc689('0x8')](_0xc689('0x5a')),'data2':_0x28bb5e});});return Promise['all'](_0x531453);}})[_0xc689('0x27')](function(){if(!_0x4b9532){_0x3935c0['voicePause']=![];_0x3935c0[_0xc689('0x5b')]=![];_0x3935c0[_0xc689('0x5c')]=![];_0x3935c0[_0xc689('0x5d')]=![];_0x3935c0['smsPause']=![];_0x3935c0[_0xc689('0x5e')]=![];_0x3935c0[_0xc689('0x5f')]=![];}else{_0x3935c0[_0x4b9532+_0xc689('0x60')]=![];}return _0x35b212['getRealtimeData']();})[_0xc689('0x27')](function(_0x92329a){var _0x415c50=require(_0xc689('0x61'));var _0x167d00=_0x415c50['getChannels']();_0x167d00[_0xc689('0x62')](function(_0x4d38ca){var _0x25687e=_0x4d38ca+_0xc689('0x63');_0x35b212['setDataValue']([_0x25687e],_0x92329a[_0x25687e]);});return _0x35b212[_0xc689('0x53')](_0x3935c0);})[_0xc689('0x2a')](function(_0x97cccb){throw _0x97cccb;});}}});};