9c42a5cc96cfe9870f55a6d3b65a97e50bd4fb66
[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 _0xc23a=['whatsappPause','openchannelPause','getRealtimeData','getChannels','Status','setDataValue','crypto','util','md5','lodash','google','length','context','from-sip','system','push','merge','format','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','ChanSpy','SIP/%s,%s','name','options','wav','WAV','Set','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','internal','catch','define','User','utf8','utf8_bin','undefined','resolve','UserProfile','find','userProfileId','then','privacyEnabled','updateMd5Password','updatePassword','changed','userSetting','createUserSetting','VoiceExtension','bulkCreate','destroy','concat','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','pbkdf2Sync','sha1','toString','pbkdf2','indexOf','provider','Invalid\x20password','password','md5secret',':asterisk:','client','Agents','error','result','request','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','http','QueuePause','message','voice','UserVoiceQueueRt','update','findAll','PAUSE','MemberReport','isArray','map','all','voicePause','mailPause','chatPause','faxPause','smsPause'];(function(_0x203ac4,_0x4008dc){var _0x576be5=function(_0x3e413e){while(--_0x3e413e){_0x203ac4['push'](_0x203ac4['shift']());}};_0x576be5(++_0x4008dc);}(_0xc23a,0xd2));var _0xac23=function(_0x209ec9,_0x30378c){_0x209ec9=_0x209ec9-0x0;var _0x129b1b=_0xc23a[_0x209ec9];return _0x129b1b;};'use strict';var BPromise=require('bluebird');var crypto=require(_0xac23('0x0'));var util=require(_0xac23('0x1'));var md5=require(_0xac23('0x2'));var moment=require('moment');var _=require(_0xac23('0x3'));var jayson=require('jayson/promise');var attributes=require('./user.attributes');var authTypes=[_0xac23('0x4')];var validatePresenceOf=function(_0x4f104c){return _0x4f104c&&_0x4f104c[_0xac23('0x5')];};var getChanSpyApplications=function(_0x22a991,_0xc71a6d,_0x4c1482){var _0x47b021={'context':_0x22a991[_0xac23('0x6')]||_0xac23('0x7'),'type':_0xac23('0x8'),'isApp':![],'UserId':_0x22a991['id']};var _0x5b2705=[];for(var _0x2bce0a=0x0,_0x450229=0x1;_0x2bce0a<_0x4c1482[_0xac23('0x5')];_0x2bce0a++,_0x450229=0x1){var _0x40a4db={'exten':util['format']('%s%s',_0x4c1482[_0x2bce0a]['prefix'],_0xc71a6d),'ChanSpyId':_0x4c1482[_0x2bce0a]['id']};_0x5b2705[_0xac23('0x9')](_[_0xac23('0xa')]({'app':'Set','appdata':util[_0xac23('0xb')](_0xac23('0xc'),_0xac23('0xd')),'priority':_0x450229++},_0x47b021,_0x40a4db));if(_0x4c1482[_0x2bce0a][_0xac23('0xe')]){_0x5b2705[_0xac23('0x9')](_[_0xac23('0xa')]({'app':_0xac23('0xf'),'appdata':util[_0xac23('0xb')](_0xac23('0x10'),_0x4c1482[_0x2bce0a][_0xac23('0x11')]),'priority':_0x450229++},_0x47b021,_0x40a4db));}if(_0x4c1482[_0x2bce0a]['auth']){_0x5b2705[_0xac23('0x9')](_[_0xac23('0xa')]({'app':'Authenticate','appdata':_0x4c1482[_0x2bce0a]['password'],'priority':_0x450229++},_0x47b021,_0x40a4db));}_0x5b2705[_0xac23('0x9')](_[_0xac23('0xa')]({'app':_0xac23('0x12'),'appdata':util['format'](_0xac23('0x13'),_0x22a991[_0xac23('0x14')],_0x4c1482[_0x2bce0a][_0xac23('0x15')]?_0x4c1482[_0x2bce0a][_0xac23('0x15')]['join'](''):''),'priority':_0x450229++},_0x47b021,_0x40a4db));if(_0x4c1482[_0x2bce0a][_0xac23('0xe')]){_0x5b2705[_0xac23('0x9')](_[_0xac23('0xa')]({'app':'StopMixMonitor','priority':_0x450229++},_0x47b021,_0x40a4db));}}return _0x5b2705;};var getUserApplications=function(_0x5ae7db,_0x37c6ee){var _0x2d1ac1=[_0xac23('0x16'),_0xac23('0x17'),'gsm'];var _0xfaf60={'context':_0x5ae7db[_0xac23('0x6')]||_0xac23('0x7'),'exten':_0x37c6ee,'type':_0xac23('0x8'),'isApp':![],'UserId':_0x5ae7db['id']};var _0x127555=[{'app':_0xac23('0x18'),'appdata':'CDR(type)=internal'}];if(_0x5ae7db[_0xac23('0x19')]&&_[_0xac23('0x1a')](_0x2d1ac1,_0x5ae7db[_0xac23('0x19')])){_0x127555[_0xac23('0x9')]({'app':_0xac23('0x18'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x127555[_0xac23('0x9')]({'app':'Set','appdata':util[_0xac23('0xb')](_0xac23('0x1b'),_0x5ae7db[_0xac23('0x19')])});_0x127555[_0xac23('0x9')]({'app':_0xac23('0x1c'),'appdata':util[_0xac23('0xb')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x5ae7db[_0xac23('0x14')])});}else{_0x127555['push']({'app':_0xac23('0x1c'),'appdata':util[_0xac23('0xb')](_0xac23('0x1d'),_0x5ae7db[_0xac23('0x14')])});}_0x127555[_0xac23('0x9')]({'app':_0xac23('0x1e')});for(var _0x625160=0x0;_0x625160<_0x127555[_0xac23('0x5')];_0x625160++){_0x127555[_0x625160][_0xac23('0x1f')]=_0x625160+0x1;_0x127555[_0x625160]=_[_0xac23('0x20')](_0x127555[_0x625160],_0xfaf60);}return _0x127555;};var getChanSpyPromise=function(_0x2daf30,_0x1a7502){return new BPromise(function(_0x73bba0,_0x27e17b){return _0x2daf30[_0xac23('0x21')]['findAll']()['then'](function(_0x3da3b2){if(_0x3da3b2){var _0x57308d=getChanSpyApplications(_0x1a7502,_0x1a7502['internal'],_0x3da3b2);if(_0x1a7502[_0xac23('0x22')]!=_0x1a7502[_0xac23('0x14')]){_0x57308d=_0x57308d['concat'](getChanSpyApplications(_0x1a7502,_0x1a7502['name'],_0x3da3b2));}return _0x73bba0(_0x57308d);}return _0x73bba0([]);})[_0xac23('0x23')](function(_0x597a8a){_0x27e17b(_0x597a8a);});});};module['exports']=function(_0x28dd39){var _0x31bbf1=_0x28dd39['models'];return _0x28dd39[_0xac23('0x24')](_0xac23('0x25'),attributes,{'tableName':'users','charset':_0xac23('0x26'),'collate':_0xac23('0x27'),'hooks':{'beforeCreate':function(_0x213a2e,_0x1c6d42,_0x502d98){var _0x2f71e1=typeof _0x213a2e['userProfileId']===_0xac23('0x28')?BPromise[_0xac23('0x29')](null):_0x31bbf1[_0xac23('0x2a')][_0xac23('0x2b')]({'where':{'id':_0x213a2e[_0xac23('0x2c')]}});_0x2f71e1[_0xac23('0x2d')](function(_0x1cfd73){if(_0x1cfd73){_0x213a2e[_0xac23('0x2e')]=_0x1cfd73['privacyEnabled'];}})['then'](function(){_0x213a2e[_0xac23('0x2f')]();_0x213a2e[_0xac23('0x30')](_0x502d98);})[_0xac23('0x23')](function(_0x5eb307){_0x502d98(_0x5eb307);});},'beforeUpdate':function(_0xd6ef6b,_0xe80648,_0x2de06a){Promise[_0xac23('0x29')]()['then'](function(){if(_0xd6ef6b[_0xac23('0x31')](_0xac23('0x2c'))===![])return;return _0x31bbf1[_0xac23('0x2a')][_0xac23('0x2b')]({'where':{'id':_0xd6ef6b[_0xac23('0x2c')]}})['then'](function(_0x259cf1){if(_0x259cf1)_0xd6ef6b[_0xac23('0x2e')]=_0x259cf1[_0xac23('0x2e')];return;});})[_0xac23('0x2d')](function(){if(_0xd6ef6b[_0xac23('0x31')]('password')){_0xd6ef6b[_0xac23('0x2f')]();return _0xd6ef6b[_0xac23('0x30')](_0x2de06a);}_0x2de06a();})[_0xac23('0x23')](function(_0x560a0f){_0x2de06a(_0x560a0f);});},'afterCreate':function(_0x36cbe7,_0x4970e2,_0x4dfaa3){var _0x44f52b=getUserApplications(_0x36cbe7,_0x36cbe7[_0xac23('0x22')]);if(_0x36cbe7['internal']!=_0x36cbe7[_0xac23('0x14')]){_0x44f52b=_0x44f52b['concat'](getUserApplications(_0x36cbe7,_0x36cbe7['name']));}return Promise[_0xac23('0x29')]()[_0xac23('0x2d')](function(){if(!_0x36cbe7[_0xac23('0x32')]){return _0x36cbe7[_0xac23('0x33')]({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})['then'](function(){return _0x31bbf1[_0xac23('0x34')][_0xac23('0x35')](_0x44f52b);})['then'](function(){if(_0x36cbe7[_0xac23('0xd')]){return getChanSpyPromise(_0x31bbf1,_0x36cbe7);}})[_0xac23('0x2d')](function(_0x211e63){if(_0x211e63&&_0x211e63[_0xac23('0x5')]){return _0x31bbf1[_0xac23('0x34')][_0xac23('0x35')](_0x211e63);}})[_0xac23('0x2d')](function(){_0x4dfaa3();})[_0xac23('0x23')](function(_0x236548){_0x4dfaa3(_0x236548);});},'afterUpdate':function(_0x3c0fe8,_0x4a76cd,_0x26e079){return BPromise[_0xac23('0x29')]()[_0xac23('0x2d')](function(){if(_0x3c0fe8[_0xac23('0x31')](_0xac23('0xd'))||_0x3c0fe8[_0xac23('0x31')](_0xac23('0x6'))){return _0x31bbf1['VoiceExtension'][_0xac23('0x36')]({'where':{'UserId':_0x3c0fe8['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xac23('0x2d')](function(){if(_0x3c0fe8[_0xac23('0xd')]){return getChanSpyPromise(_0x31bbf1,_0x3c0fe8)['then'](function(_0x49deb8){if(_0x49deb8&&_0x49deb8[_0xac23('0x5')]){return _0x31bbf1[_0xac23('0x34')]['bulkCreate'](_0x49deb8);}});}});}})[_0xac23('0x2d')](function(){if(_0x3c0fe8['changed']('extensionMonitor')||_0x3c0fe8['changed']('context')){return _0x31bbf1['VoiceExtension'][_0xac23('0x36')]({'where':{'UserId':_0x3c0fe8['id'],'type':'system','ChanSpyId':null}})[_0xac23('0x2d')](function(){var _0x1819ba=getUserApplications(_0x3c0fe8,_0x3c0fe8[_0xac23('0x22')]);if(_0x3c0fe8[_0xac23('0x22')]!=_0x3c0fe8['name']){_0x1819ba=_0x1819ba[_0xac23('0x37')](getUserApplications(_0x3c0fe8,_0x3c0fe8[_0xac23('0x14')]));}return _0x31bbf1['VoiceExtension'][_0xac23('0x35')](_0x1819ba);});}})[_0xac23('0x2d')](function(){_0x26e079();})['catch'](function(_0x274b16){_0x26e079(_0x274b16);});},'afterDestroy':function(_0x3a94b8){return _0x31bbf1[_0xac23('0x34')][_0xac23('0x36')]({'where':{'UserId':_0x3a94b8['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x5d92d8,_0x5ddf84){if(!_0x5ddf84){return this['password']===this[_0xac23('0x38')](_0x5d92d8);}var _0x4de1e9=this;this['encryptPassword'](_0x5d92d8,function(_0x4bf383,_0x2687b8){if(_0x4bf383){_0x5ddf84(_0x4bf383);}if(_0x4de1e9['password']===_0x2687b8){_0x5ddf84(null,!![]);}else{_0x5ddf84(null,![]);}});},'makeSalt':function(_0x59ecff,_0x1d58d0){var _0x378901=0x10;if(typeof arguments[0x0]===_0xac23('0x39')){_0x1d58d0=arguments[0x0];_0x59ecff=_0x378901;}else if(typeof arguments[0x1]===_0xac23('0x39')){_0x1d58d0=arguments[0x1];}else{throw new Error(_0xac23('0x3a'));}if(!_0x59ecff){_0x59ecff=_0x378901;}return crypto[_0xac23('0x3b')](_0x59ecff,function(_0x98b327,_0x232d7c){if(_0x98b327){_0x1d58d0(_0x98b327);}return _0x1d58d0(null,_0x232d7c['toString'](_0xac23('0x3c')));});},'encryptPassword':function(_0x5b884a,_0x4bc397){if(!_0x5b884a||!this[_0xac23('0x3d')]){return _0x4bc397?_0x4bc397(null):null;}var _0x5f40d1=0x2710;var _0x5382ce=0x40;var _0x55243c=Buffer['from'](this[_0xac23('0x3d')],_0xac23('0x3c'));if(!_0x4bc397){return crypto[_0xac23('0x3e')](_0x5b884a,_0x55243c,_0x5f40d1,_0x5382ce,_0xac23('0x3f'))[_0xac23('0x40')](_0xac23('0x3c'));}return crypto[_0xac23('0x41')](_0x5b884a,_0x55243c,_0x5f40d1,_0x5382ce,_0xac23('0x3f'),function(_0x4ecf9a,_0x377f86){if(_0x4ecf9a){_0x4bc397(_0x4ecf9a);}return _0x4bc397(null,_0x377f86['toString'](_0xac23('0x3c')));});},'updatePassword':function(_0x338b63){if(!this['password']){return _0x338b63(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0xac23('0x42')](this[_0xac23('0x43')])===-0x1){_0x338b63(new Error(_0xac23('0x44')));}var _0x17f6b1=this;this['makeSalt'](function(_0x34f6fa,_0x53a171){if(_0x34f6fa){return _0x338b63(_0x34f6fa);}_0x17f6b1['salt']=_0x53a171;_0x17f6b1[_0xac23('0x38')](_0x17f6b1[_0xac23('0x45')],function(_0x57d172,_0x28c877){if(_0x57d172){_0x338b63(_0x57d172);}_0x17f6b1[_0xac23('0x45')]=_0x28c877;_0x338b63(null);});});},'updateMd5Password':function(){this[_0xac23('0x46')]=md5(this[_0xac23('0x14')]+_0xac23('0x47')+this[_0xac23('0x45')]);return this['md5secret'];},'getRealtimeData':function(){var _0x1c1cf7={'id':this['id']};var _0x31a969=jayson['client']['http']({'port':0x232a});var _0x532182=jayson[_0xac23('0x48')]['http']({'port':0x232c});var _0x23db68={};var _0x5b6bdc={};return _0x31a969['request'](_0xac23('0x49'),_0x1c1cf7)[_0xac23('0x2d')](function(_0x49eb18){if(_0x49eb18[_0xac23('0x4a')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)');}_0x23db68=_0x49eb18[_0xac23('0x4b')];return _0x532182[_0xac23('0x4c')](_0xac23('0x49'),_0x1c1cf7);})['then'](function(_0x5e16fa){if(_0x5e16fa[_0xac23('0x4a')]){throw new Error(_0xac23('0x4d'));}_0x5b6bdc=_0x5e16fa[_0xac23('0x4b')];var _0x2cf63b=_[_0xac23('0xa')]({},_0x23db68,_0x5b6bdc);return _0x2cf63b;})['catch'](function(_0x539743){throw _0x539743;});},'unpause':function(_0x5c95f3,_0x2c2557=_0xac23('0x4e')){var _0x12cfff=this;var _0x38152b={};return Promise[_0xac23('0x29')]()[_0xac23('0x2d')](function(){if(!_0x5c95f3||_0x5c95f3==='voice'&&_0x2c2557===_0xac23('0x4e')){var _0xb87cf=jayson['client'][_0xac23('0x4f')]({'port':0x232a});return _0xb87cf['request'](_0xac23('0x50'),{'id':_0x12cfff['id'],'name':_0x12cfff[_0xac23('0x14')],'pause':![]})['then'](function(_0x1d362f){if(_0x1d362f[_0xac23('0x4a')]){throw new Error(util[_0xac23('0xb')]('Unable\x20to\x20unpause\x20agent\x20%s:$s',_0x12cfff['id'],_0x12cfff[_0xac23('0x14')]));}return _0x1d362f[_0xac23('0x4b')][_0xac23('0x51')];});}})[_0xac23('0x2d')](function(){if(!_0x5c95f3||_0x5c95f3===_0xac23('0x52')){return _0x31bbf1[_0xac23('0x53')][_0xac23('0x54')]({'paused':0x0},{'where':{'UserId':_0x12cfff['id']},'individualHooks':!![]});}})['then'](function(){var _0xf25749=!_0x5c95f3?_0xac23('0x55'):'findOne';var _0x4682e2={'membername':_0x12cfff[_0xac23('0x14')],'type':_0xac23('0x56'),'exitAt':null};if(_0x5c95f3){_0x4682e2['channel']=_0x5c95f3;}return _0x31bbf1[_0xac23('0x57')][_0xf25749]({'where':_0x4682e2});})[_0xac23('0x2d')](function(_0x4ffaa9){if(_0x4ffaa9){var _0x172c05=Array[_0xac23('0x58')](_0x4ffaa9)?_0x4ffaa9:[_0x4ffaa9];var _0x8f2d82=_0x172c05[_0xac23('0x59')](function(_0x14580f){return _0x14580f[_0xac23('0x54')]({'exitAt':moment()[_0xac23('0xb')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x2c2557});});return Promise[_0xac23('0x5a')](_0x8f2d82);}})[_0xac23('0x2d')](function(){if(!_0x5c95f3){_0x38152b[_0xac23('0x5b')]=![];_0x38152b[_0xac23('0x5c')]=![];_0x38152b[_0xac23('0x5d')]=![];_0x38152b[_0xac23('0x5e')]=![];_0x38152b[_0xac23('0x5f')]=![];_0x38152b[_0xac23('0x60')]=![];_0x38152b[_0xac23('0x61')]=![];}else{_0x38152b[_0x5c95f3+'Pause']=![];}return _0x12cfff[_0xac23('0x62')]();})[_0xac23('0x2d')](function(_0x200567){var _0x308090=require('../../config/utils');var _0x28f3e3=_0x308090[_0xac23('0x63')]();_0x28f3e3['forEach'](function(_0x4cea46){var _0x357b74=_0x4cea46+_0xac23('0x64');_0x12cfff[_0xac23('0x65')]([_0x357b74],_0x200567[_0x357b74]);});return _0x12cfff[_0xac23('0x54')](_0x38152b);})[_0xac23('0x23')](function(_0x12d8c5){throw _0x12d8c5;});}}});};