Built motion from commit e1760111.|2.6.18
[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 _0x4fde=['system','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','catch','exports','models','define','User','users','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','changed','concat','userSetting','createUserSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','salt','base64','pbkdf2Sync','sha1','toString','pbkdf2','indexOf','provider','Invalid\x20password','md5secret','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','voice','client','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','UserVoiceQueueRt','update','findOne','PAUSE','channel','MemberReport','map','voicePause','mailPause','chatPause','faxPause','smsPause','openchannelPause','Pause','getRealtimeData','getChannels','Status','setDataValue','bluebird','crypto','util','md5','lodash','jayson/promise','google','length','context','from-sip','format','%s%s','merge','Set','chanspy','record','push','MixMonitor','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','options','StopMixMonitor','wav','WAV','gsm'];(function(_0x282530,_0x5a31b2){var _0x266c57=function(_0x4a0df2){while(--_0x4a0df2){_0x282530['push'](_0x282530['shift']());}};_0x266c57(++_0x5a31b2);}(_0x4fde,0x19f));var _0xe4fd=function(_0x2265da,_0xfbbd2e){_0x2265da=_0x2265da-0x0;var _0x430c2b=_0x4fde[_0x2265da];return _0x430c2b;};'use strict';var BPromise=require(_0xe4fd('0x0'));var crypto=require(_0xe4fd('0x1'));var util=require(_0xe4fd('0x2'));var md5=require(_0xe4fd('0x3'));var moment=require('moment');var _=require(_0xe4fd('0x4'));var jayson=require(_0xe4fd('0x5'));var attributes=require('./user.attributes');var authTypes=[_0xe4fd('0x6')];var validatePresenceOf=function(_0x3c4c49){return _0x3c4c49&&_0x3c4c49[_0xe4fd('0x7')];};var getChanSpyApplications=function(_0xedc35f,_0x464a19,_0x73219e){var _0x439c7e={'context':_0xedc35f[_0xe4fd('0x8')]||_0xe4fd('0x9'),'type':'system','isApp':![],'UserId':_0xedc35f['id']};var _0x32c847=[];for(var _0x49a16f=0x0,_0x44571c=0x1;_0x49a16f<_0x73219e['length'];_0x49a16f++,_0x44571c=0x1){var _0x52e170={'exten':util[_0xe4fd('0xa')](_0xe4fd('0xb'),_0x73219e[_0x49a16f]['prefix'],_0x464a19),'ChanSpyId':_0x73219e[_0x49a16f]['id']};_0x32c847['push'](_[_0xe4fd('0xc')]({'app':_0xe4fd('0xd'),'appdata':util[_0xe4fd('0xa')]('CDR(type)=%s',_0xe4fd('0xe')),'priority':_0x44571c++},_0x439c7e,_0x52e170));if(_0x73219e[_0x49a16f][_0xe4fd('0xf')]){_0x32c847[_0xe4fd('0x10')](_[_0xe4fd('0xc')]({'app':_0xe4fd('0x11'),'appdata':util[_0xe4fd('0xa')]('${UNIQUEID}.%s,a',_0x73219e[_0x49a16f][_0xe4fd('0x12')]),'priority':_0x44571c++},_0x439c7e,_0x52e170));}if(_0x73219e[_0x49a16f][_0xe4fd('0x13')]){_0x32c847[_0xe4fd('0x10')](_['merge']({'app':_0xe4fd('0x14'),'appdata':_0x73219e[_0x49a16f][_0xe4fd('0x15')],'priority':_0x44571c++},_0x439c7e,_0x52e170));}_0x32c847['push'](_['merge']({'app':_0xe4fd('0x16'),'appdata':util[_0xe4fd('0xa')](_0xe4fd('0x17'),_0xedc35f['name'],_0x73219e[_0x49a16f][_0xe4fd('0x18')]?_0x73219e[_0x49a16f]['options']['join'](''):''),'priority':_0x44571c++},_0x439c7e,_0x52e170));if(_0x73219e[_0x49a16f][_0xe4fd('0xf')]){_0x32c847[_0xe4fd('0x10')](_[_0xe4fd('0xc')]({'app':_0xe4fd('0x19'),'priority':_0x44571c++},_0x439c7e,_0x52e170));}}return _0x32c847;};var getUserApplications=function(_0x1eb295,_0x4ec6e2){var _0xaa9aca=[_0xe4fd('0x1a'),_0xe4fd('0x1b'),_0xe4fd('0x1c')];var _0x2660d9={'context':_0x1eb295[_0xe4fd('0x8')]||_0xe4fd('0x9'),'exten':_0x4ec6e2,'type':_0xe4fd('0x1d'),'isApp':![],'UserId':_0x1eb295['id']};var _0x43d3a4=[{'app':'Set','appdata':_0xe4fd('0x1e')}];if(_0x1eb295[_0xe4fd('0x1f')]&&_['includes'](_0xaa9aca,_0x1eb295['extensionMonitor'])){_0x43d3a4['push']({'app':_0xe4fd('0xd'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x43d3a4[_0xe4fd('0x10')]({'app':'Set','appdata':util[_0xe4fd('0xa')](_0xe4fd('0x20'),_0x1eb295[_0xe4fd('0x1f')])});_0x43d3a4['push']({'app':_0xe4fd('0x21'),'appdata':util[_0xe4fd('0xa')](_0xe4fd('0x22'),_0x1eb295[_0xe4fd('0x23')])});}else{_0x43d3a4[_0xe4fd('0x10')]({'app':'Dial','appdata':util[_0xe4fd('0xa')](_0xe4fd('0x24'),_0x1eb295[_0xe4fd('0x23')])});}_0x43d3a4[_0xe4fd('0x10')]({'app':_0xe4fd('0x25')});for(var _0x15952e=0x0;_0x15952e<_0x43d3a4[_0xe4fd('0x7')];_0x15952e++){_0x43d3a4[_0x15952e][_0xe4fd('0x26')]=_0x15952e+0x1;_0x43d3a4[_0x15952e]=_[_0xe4fd('0x27')](_0x43d3a4[_0x15952e],_0x2660d9);}return _0x43d3a4;};var getChanSpyPromise=function(_0x367e3f,_0x2dcbb4){return new BPromise(function(_0x144c45,_0x92eed0){return _0x367e3f[_0xe4fd('0x28')][_0xe4fd('0x29')]()[_0xe4fd('0x2a')](function(_0x392eba){if(_0x392eba){var _0x484df9=getChanSpyApplications(_0x2dcbb4,_0x2dcbb4[_0xe4fd('0x2b')],_0x392eba);if(_0x2dcbb4[_0xe4fd('0x2b')]!=_0x2dcbb4[_0xe4fd('0x23')]){_0x484df9=_0x484df9['concat'](getChanSpyApplications(_0x2dcbb4,_0x2dcbb4[_0xe4fd('0x23')],_0x392eba));}return _0x144c45(_0x484df9);}return _0x144c45([]);})[_0xe4fd('0x2c')](function(_0xe2f6ce){_0x92eed0(_0xe2f6ce);});});};module[_0xe4fd('0x2d')]=function(_0x2cb2f9){var _0x4cee0d=_0x2cb2f9[_0xe4fd('0x2e')];return _0x2cb2f9[_0xe4fd('0x2f')](_0xe4fd('0x30'),attributes,{'tableName':_0xe4fd('0x31'),'charset':_0xe4fd('0x32'),'collate':_0xe4fd('0x33'),'hooks':{'beforeCreate':function(_0x2085d2,_0x32c71e,_0x4568b6){var _0x1f08cf=typeof _0x2085d2[_0xe4fd('0x34')]===_0xe4fd('0x35')?BPromise[_0xe4fd('0x36')](null):_0x4cee0d[_0xe4fd('0x37')][_0xe4fd('0x38')]({'where':{'id':_0x2085d2[_0xe4fd('0x34')]}});_0x1f08cf[_0xe4fd('0x2a')](function(_0xb5325c){if(_0xb5325c){_0x2085d2[_0xe4fd('0x39')]=_0xb5325c[_0xe4fd('0x39')];}})[_0xe4fd('0x2a')](function(){_0x2085d2[_0xe4fd('0x3a')]();_0x2085d2[_0xe4fd('0x3b')](_0x4568b6);})[_0xe4fd('0x2c')](function(_0x259dfe){_0x4568b6(_0x259dfe);});},'beforeUpdate':function(_0x52f17a,_0x506bac,_0x471dab){Promise[_0xe4fd('0x36')]()[_0xe4fd('0x2a')](function(){if(_0x52f17a[_0xe4fd('0x3c')]('userProfileId')===![])return;return _0x4cee0d[_0xe4fd('0x37')][_0xe4fd('0x38')]({'where':{'id':_0x52f17a[_0xe4fd('0x34')]}})[_0xe4fd('0x2a')](function(_0xda26d2){if(_0xda26d2)_0x52f17a[_0xe4fd('0x39')]=_0xda26d2[_0xe4fd('0x39')];return;});})[_0xe4fd('0x2a')](function(){if(_0x52f17a[_0xe4fd('0x3c')]('password')){_0x52f17a[_0xe4fd('0x3a')]();return _0x52f17a['updatePassword'](_0x471dab);}_0x471dab();})[_0xe4fd('0x2c')](function(_0xb42cde){_0x471dab(_0xb42cde);});},'afterCreate':function(_0x36d748,_0x267b99,_0xbea8cb){var _0x5b650a=getUserApplications(_0x36d748,_0x36d748[_0xe4fd('0x2b')]);if(_0x36d748[_0xe4fd('0x2b')]!=_0x36d748[_0xe4fd('0x23')]){_0x5b650a=_0x5b650a[_0xe4fd('0x3d')](getUserApplications(_0x36d748,_0x36d748[_0xe4fd('0x23')]));}return Promise[_0xe4fd('0x36')]()['then'](function(){if(!_0x36d748[_0xe4fd('0x3e')]){return _0x36d748[_0xe4fd('0x3f')]({'clientSideLoggingLevel':_0xe4fd('0x40'),'clientSideLoggingEnabled':![]});}})['then'](function(){return _0x4cee0d[_0xe4fd('0x41')][_0xe4fd('0x42')](_0x5b650a);})[_0xe4fd('0x2a')](function(){if(_0x36d748[_0xe4fd('0xe')]){return getChanSpyPromise(_0x4cee0d,_0x36d748);}})['then'](function(_0x38a48f){if(_0x38a48f&&_0x38a48f[_0xe4fd('0x7')]){return _0x4cee0d[_0xe4fd('0x41')][_0xe4fd('0x42')](_0x38a48f);}})['then'](function(){_0xbea8cb();})['catch'](function(_0x1601d5){_0xbea8cb(_0x1601d5);});},'afterUpdate':function(_0x465b22,_0x4d54a2,_0x18ac08){return BPromise[_0xe4fd('0x36')]()[_0xe4fd('0x2a')](function(){if(_0x465b22[_0xe4fd('0x3c')](_0xe4fd('0xe'))||_0x465b22[_0xe4fd('0x3c')]('context')){return _0x4cee0d['VoiceExtension']['destroy']({'where':{'UserId':_0x465b22['id'],'type':_0xe4fd('0x1d'),'ChanSpyId':{'$ne':null}}})[_0xe4fd('0x2a')](function(){if(_0x465b22[_0xe4fd('0xe')]){return getChanSpyPromise(_0x4cee0d,_0x465b22)[_0xe4fd('0x2a')](function(_0xd5c25){if(_0xd5c25&&_0xd5c25[_0xe4fd('0x7')]){return _0x4cee0d[_0xe4fd('0x41')][_0xe4fd('0x42')](_0xd5c25);}});}});}})[_0xe4fd('0x2a')](function(){if(_0x465b22[_0xe4fd('0x3c')](_0xe4fd('0x1f'))||_0x465b22[_0xe4fd('0x3c')](_0xe4fd('0x8'))){return _0x4cee0d[_0xe4fd('0x41')]['destroy']({'where':{'UserId':_0x465b22['id'],'type':_0xe4fd('0x1d'),'ChanSpyId':null}})[_0xe4fd('0x2a')](function(){var _0x4333b7=getUserApplications(_0x465b22,_0x465b22['internal']);if(_0x465b22[_0xe4fd('0x2b')]!=_0x465b22['name']){_0x4333b7=_0x4333b7['concat'](getUserApplications(_0x465b22,_0x465b22[_0xe4fd('0x23')]));}return _0x4cee0d[_0xe4fd('0x41')][_0xe4fd('0x42')](_0x4333b7);});}})[_0xe4fd('0x2a')](function(){_0x18ac08();})[_0xe4fd('0x2c')](function(_0x70be16){_0x18ac08(_0x70be16);});},'afterDestroy':function(_0x176e9d){return _0x4cee0d['VoiceExtension'][_0xe4fd('0x43')]({'where':{'UserId':_0x176e9d['id'],'type':_0xe4fd('0x1d')}});}},'instanceMethods':{'authenticate':function(_0x16bd52,_0x42d006){if(!_0x42d006){return this[_0xe4fd('0x15')]===this[_0xe4fd('0x44')](_0x16bd52);}var _0x1dcd0d=this;this[_0xe4fd('0x44')](_0x16bd52,function(_0x3a5ece,_0x3adc30){if(_0x3a5ece){_0x42d006(_0x3a5ece);}if(_0x1dcd0d[_0xe4fd('0x15')]===_0x3adc30){_0x42d006(null,!![]);}else{_0x42d006(null,![]);}});},'makeSalt':function(_0xd2c293,_0xfd9428){var _0x2c32cc=0x10;if(typeof arguments[0x0]===_0xe4fd('0x45')){_0xfd9428=arguments[0x0];_0xd2c293=_0x2c32cc;}else if(typeof arguments[0x1]==='function'){_0xfd9428=arguments[0x1];}else{throw new Error(_0xe4fd('0x46'));}if(!_0xd2c293){_0xd2c293=_0x2c32cc;}return crypto[_0xe4fd('0x47')](_0xd2c293,function(_0x190025,_0x255ced){if(_0x190025){_0xfd9428(_0x190025);}return _0xfd9428(null,_0x255ced['toString']('base64'));});},'encryptPassword':function(_0x3ceddf,_0x1e3423){if(!_0x3ceddf||!this[_0xe4fd('0x48')]){return _0x1e3423?_0x1e3423(null):null;}var _0x48ef90=0x2710;var _0x4232be=0x40;var _0x20c37f=Buffer['from'](this[_0xe4fd('0x48')],_0xe4fd('0x49'));if(!_0x1e3423){return crypto[_0xe4fd('0x4a')](_0x3ceddf,_0x20c37f,_0x48ef90,_0x4232be,_0xe4fd('0x4b'))[_0xe4fd('0x4c')](_0xe4fd('0x49'));}return crypto[_0xe4fd('0x4d')](_0x3ceddf,_0x20c37f,_0x48ef90,_0x4232be,_0xe4fd('0x4b'),function(_0xcc01a4,_0x5370f6){if(_0xcc01a4){_0x1e3423(_0xcc01a4);}return _0x1e3423(null,_0x5370f6['toString']('base64'));});},'updatePassword':function(_0x22bb24){if(!this[_0xe4fd('0x15')]){return _0x22bb24(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0xe4fd('0x4e')](this[_0xe4fd('0x4f')])===-0x1){_0x22bb24(new Error(_0xe4fd('0x50')));}var _0xc1cd55=this;this['makeSalt'](function(_0x479f0c,_0x52d36f){if(_0x479f0c){return _0x22bb24(_0x479f0c);}_0xc1cd55['salt']=_0x52d36f;_0xc1cd55[_0xe4fd('0x44')](_0xc1cd55[_0xe4fd('0x15')],function(_0x3013bb,_0xefb703){if(_0x3013bb){_0x22bb24(_0x3013bb);}_0xc1cd55[_0xe4fd('0x15')]=_0xefb703;_0x22bb24(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xe4fd('0x23')]+':asterisk:'+this['password']);return this[_0xe4fd('0x51')];},'getRealtimeData':function(){var _0x3e4f24={'id':this['id']};var _0x19ec5f=jayson['client'][_0xe4fd('0x52')]({'port':0x232a});var _0x43c215=jayson['client'][_0xe4fd('0x52')]({'port':0x232c});var _0x450edf={};var _0x187f5f={};return _0x19ec5f[_0xe4fd('0x53')](_0xe4fd('0x54'),_0x3e4f24)['then'](function(_0x52353e){if(_0x52353e[_0xe4fd('0x40')]){throw new Error(_0xe4fd('0x55'));}_0x450edf=_0x52353e[_0xe4fd('0x56')];return _0x43c215[_0xe4fd('0x53')](_0xe4fd('0x54'),_0x3e4f24);})['then'](function(_0x194aad){if(_0x194aad[_0xe4fd('0x40')]){throw new Error(_0xe4fd('0x57'));}_0x187f5f=_0x194aad[_0xe4fd('0x56')];var _0x600f1a=_[_0xe4fd('0xc')]({},_0x450edf,_0x187f5f);return _0x600f1a;})[_0xe4fd('0x2c')](function(_0x51fbdf){throw _0x51fbdf;});},'unpause':function(_0x3874ac,_0x39c243=_0xe4fd('0x58')){var _0x33cbb2=this;var _0x7dff98={};return Promise['resolve']()[_0xe4fd('0x2a')](function(){if(!_0x3874ac||_0x3874ac===_0xe4fd('0x59')&&_0x39c243===_0xe4fd('0x58')){var _0x1bd083=jayson[_0xe4fd('0x5a')][_0xe4fd('0x52')]({'port':0x232a});return _0x1bd083[_0xe4fd('0x53')](_0xe4fd('0x5b'),{'id':_0x33cbb2['id'],'name':_0x33cbb2[_0xe4fd('0x23')],'pause':![]})[_0xe4fd('0x2a')](function(_0x2d5c53){if(_0x2d5c53[_0xe4fd('0x40')]){throw new Error(util[_0xe4fd('0xa')](_0xe4fd('0x5c'),_0x33cbb2['id'],_0x33cbb2['name']));}return _0x2d5c53[_0xe4fd('0x56')]['message'];});}})[_0xe4fd('0x2a')](function(){if(!_0x3874ac||_0x3874ac===_0xe4fd('0x59')){return _0x4cee0d[_0xe4fd('0x5d')][_0xe4fd('0x5e')]({'paused':0x0},{'where':{'UserId':_0x33cbb2['id']},'individualHooks':!![]});}})[_0xe4fd('0x2a')](function(){var _0x486004=!_0x3874ac?'findAll':_0xe4fd('0x5f');var _0x326019={'membername':_0x33cbb2[_0xe4fd('0x23')],'type':_0xe4fd('0x60'),'exitAt':null};if(_0x3874ac){_0x326019[_0xe4fd('0x61')]=_0x3874ac;}return _0x4cee0d[_0xe4fd('0x62')][_0x486004]({'where':_0x326019});})[_0xe4fd('0x2a')](function(_0x1dee44){if(_0x1dee44){var _0x1f3c9e=Array['isArray'](_0x1dee44)?_0x1dee44:[_0x1dee44];var _0x6e48d=_0x1f3c9e[_0xe4fd('0x63')](function(_0xfc03cd){return _0xfc03cd[_0xe4fd('0x5e')]({'exitAt':moment()[_0xe4fd('0xa')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x39c243});});return Promise['all'](_0x6e48d);}})['then'](function(){if(!_0x3874ac){_0x7dff98[_0xe4fd('0x64')]=![];_0x7dff98[_0xe4fd('0x65')]=![];_0x7dff98[_0xe4fd('0x66')]=![];_0x7dff98[_0xe4fd('0x67')]=![];_0x7dff98[_0xe4fd('0x68')]=![];_0x7dff98['whatsappPause']=![];_0x7dff98[_0xe4fd('0x69')]=![];}else{_0x7dff98[_0x3874ac+_0xe4fd('0x6a')]=![];}return _0x33cbb2[_0xe4fd('0x6b')]();})[_0xe4fd('0x2a')](function(_0x2621ef){var _0x2c3e7e=require('../../config/utils');var _0x53bb60=_0x2c3e7e[_0xe4fd('0x6c')]();_0x53bb60['forEach'](function(_0x4ab898){var _0x426dc6=_0x4ab898+_0xe4fd('0x6d');_0x33cbb2[_0xe4fd('0x6e')]([_0x426dc6],_0x2621ef[_0x426dc6]);});return _0x33cbb2['update'](_0x7dff98);})[_0xe4fd('0x2c')](function(_0x192a28){throw _0x192a28;});}}});};