Built motion from commit a61a4a20.|2.5.46
[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 _0x935d=['./user.attributes','google','length','context','from-sip','system','%s%s','push','merge','Set','format','CDR(type)=%s','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','ChanSpy','name','options','join','WAV','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','VoiceChanSpy','findAll','then','internal','catch','exports','define','userProfileId','UserProfile','updateMd5Password','updatePassword','changed','privacyEnabled','concat','resolve','createUserSetting','error','chanspy','VoiceExtension','bulkCreate','destroy','password','function','toString','base64','salt','pbkdf2Sync','pbkdf2','sha1','indexOf','provider','makeSalt','encryptPassword','md5secret',':asterisk:','bluebird','crypto','md5','lodash'];(function(_0x1200a3,_0x1fa4f5){var _0x15b066=function(_0x2340e9){while(--_0x2340e9){_0x1200a3['push'](_0x1200a3['shift']());}};_0x15b066(++_0x1fa4f5);}(_0x935d,0xcb));var _0xd935=function(_0x22bee0,_0x412ecb){_0x22bee0=_0x22bee0-0x0;var _0x2d295b=_0x935d[_0x22bee0];return _0x2d295b;};'use strict';var BPromise=require(_0xd935('0x0'));var crypto=require(_0xd935('0x1'));var util=require('util');var md5=require(_0xd935('0x2'));var _=require(_0xd935('0x3'));var attributes=require(_0xd935('0x4'));var authTypes=[_0xd935('0x5')];var validatePresenceOf=function(_0x1c81f7){return _0x1c81f7&&_0x1c81f7[_0xd935('0x6')];};var getChanSpyApplications=function(_0x5bd123,_0x515bc2,_0x5855af){var _0xcd905a={'context':_0x5bd123[_0xd935('0x7')]||_0xd935('0x8'),'type':_0xd935('0x9'),'isApp':![],'UserId':_0x5bd123['id']};var _0x518dc7=[];for(var _0x3f5e9e=0x0,_0x36c791=0x1;_0x3f5e9e<_0x5855af[_0xd935('0x6')];_0x3f5e9e++,_0x36c791=0x1){var _0x364b8b={'exten':util['format'](_0xd935('0xa'),_0x5855af[_0x3f5e9e]['prefix'],_0x515bc2),'ChanSpyId':_0x5855af[_0x3f5e9e]['id']};_0x518dc7[_0xd935('0xb')](_[_0xd935('0xc')]({'app':_0xd935('0xd'),'appdata':util[_0xd935('0xe')](_0xd935('0xf'),'chanspy'),'priority':_0x36c791++},_0xcd905a,_0x364b8b));if(_0x5855af[_0x3f5e9e][_0xd935('0x10')]){_0x518dc7[_0xd935('0xb')](_[_0xd935('0xc')]({'app':_0xd935('0x11'),'appdata':util[_0xd935('0xe')](_0xd935('0x12'),_0x5855af[_0x3f5e9e][_0xd935('0x13')]),'priority':_0x36c791++},_0xcd905a,_0x364b8b));}if(_0x5855af[_0x3f5e9e]['auth']){_0x518dc7[_0xd935('0xb')](_[_0xd935('0xc')]({'app':'Authenticate','appdata':_0x5855af[_0x3f5e9e]['password'],'priority':_0x36c791++},_0xcd905a,_0x364b8b));}_0x518dc7[_0xd935('0xb')](_[_0xd935('0xc')]({'app':_0xd935('0x14'),'appdata':util[_0xd935('0xe')]('SIP/%s,%s',_0x5bd123[_0xd935('0x15')],_0x5855af[_0x3f5e9e][_0xd935('0x16')]?_0x5855af[_0x3f5e9e][_0xd935('0x16')][_0xd935('0x17')](''):''),'priority':_0x36c791++},_0xcd905a,_0x364b8b));if(_0x5855af[_0x3f5e9e]['record']){_0x518dc7[_0xd935('0xb')](_[_0xd935('0xc')]({'app':'StopMixMonitor','priority':_0x36c791++},_0xcd905a,_0x364b8b));}}return _0x518dc7;};var getUserApplications=function(_0x503325,_0x5cfdb0){var _0x4dcb97=['wav',_0xd935('0x18'),'gsm'];var _0x5a8ece={'context':_0x503325[_0xd935('0x7')]||_0xd935('0x8'),'exten':_0x5cfdb0,'type':_0xd935('0x9'),'isApp':![],'UserId':_0x503325['id']};var _0x5a0f9a=[{'app':_0xd935('0xd'),'appdata':_0xd935('0x19')}];if(_0x503325[_0xd935('0x1a')]&&_[_0xd935('0x1b')](_0x4dcb97,_0x503325['extensionMonitor'])){_0x5a0f9a['push']({'app':_0xd935('0xd'),'appdata':_0xd935('0x1c')});_0x5a0f9a[_0xd935('0xb')]({'app':'Set','appdata':util[_0xd935('0xe')](_0xd935('0x1d'),_0x503325[_0xd935('0x1a')])});_0x5a0f9a[_0xd935('0xb')]({'app':_0xd935('0x1e'),'appdata':util['format'](_0xd935('0x1f'),_0x503325[_0xd935('0x15')])});}else{_0x5a0f9a['push']({'app':'Dial','appdata':util['format'](_0xd935('0x20'),_0x503325['name'])});}_0x5a0f9a['push']({'app':_0xd935('0x21')});for(var _0x1968c3=0x0;_0x1968c3<_0x5a0f9a[_0xd935('0x6')];_0x1968c3++){_0x5a0f9a[_0x1968c3]['priority']=_0x1968c3+0x1;_0x5a0f9a[_0x1968c3]=_['defaults'](_0x5a0f9a[_0x1968c3],_0x5a8ece);}return _0x5a0f9a;};var getChanSpyPromise=function(_0x5df91f,_0x347b62){return new BPromise(function(_0x1919cd,_0x1c761b){return _0x5df91f[_0xd935('0x22')][_0xd935('0x23')]()[_0xd935('0x24')](function(_0x424967){if(_0x424967){var _0x2feda7=getChanSpyApplications(_0x347b62,_0x347b62[_0xd935('0x25')],_0x424967);if(_0x347b62[_0xd935('0x25')]!=_0x347b62[_0xd935('0x15')]){_0x2feda7=_0x2feda7['concat'](getChanSpyApplications(_0x347b62,_0x347b62[_0xd935('0x15')],_0x424967));}return _0x1919cd(_0x2feda7);}return _0x1919cd([]);})[_0xd935('0x26')](function(_0x31bb43){_0x1c761b(_0x31bb43);});});};module[_0xd935('0x27')]=function(_0x3666dc){var _0xeedbc=_0x3666dc['models'];return _0x3666dc[_0xd935('0x28')]('User',attributes,{'tableName':'users','charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0x4cb702,_0x31a07,_0x1292bd){var _0x4df389=typeof _0x4cb702[_0xd935('0x29')]==='undefined'?BPromise['resolve'](null):_0xeedbc[_0xd935('0x2a')]['find']({'where':{'id':_0x4cb702[_0xd935('0x29')]}});_0x4df389[_0xd935('0x24')](function(_0x39780b){if(_0x39780b){_0x4cb702['privacyEnabled']=_0x39780b['privacyEnabled'];}})['then'](function(){_0x4cb702[_0xd935('0x2b')]();_0x4cb702[_0xd935('0x2c')](_0x1292bd);})['catch'](function(_0xb1f247){_0x1292bd(_0xb1f247);});},'beforeUpdate':function(_0x330f35,_0x3c504a,_0x524cf5){Promise['resolve']()[_0xd935('0x24')](function(){if(_0x330f35[_0xd935('0x2d')](_0xd935('0x29'))===![])return;return _0xeedbc[_0xd935('0x2a')]['find']({'where':{'id':_0x330f35[_0xd935('0x29')]}})[_0xd935('0x24')](function(_0x4f2df4){if(_0x4f2df4)_0x330f35['privacyEnabled']=_0x4f2df4[_0xd935('0x2e')];return;});})[_0xd935('0x24')](function(){if(_0x330f35['changed']('password')){_0x330f35[_0xd935('0x2b')]();return _0x330f35[_0xd935('0x2c')](_0x524cf5);}_0x524cf5();})[_0xd935('0x26')](function(_0x4d41e3){_0x524cf5(_0x4d41e3);});},'afterCreate':function(_0x5b07f0,_0x7c836a,_0x279fdf){var _0x3f183c=getUserApplications(_0x5b07f0,_0x5b07f0[_0xd935('0x25')]);if(_0x5b07f0[_0xd935('0x25')]!=_0x5b07f0['name']){_0x3f183c=_0x3f183c[_0xd935('0x2f')](getUserApplications(_0x5b07f0,_0x5b07f0['name']));}return Promise[_0xd935('0x30')]()['then'](function(){if(!_0x5b07f0['userSetting']){return _0x5b07f0[_0xd935('0x31')]({'clientSideLoggingLevel':_0xd935('0x32'),'clientSideLoggingEnabled':![]});}})[_0xd935('0x24')](function(){return _0xeedbc['VoiceExtension']['bulkCreate'](_0x3f183c);})[_0xd935('0x24')](function(){if(_0x5b07f0[_0xd935('0x33')]){return getChanSpyPromise(_0xeedbc,_0x5b07f0);}})[_0xd935('0x24')](function(_0x2db812){if(_0x2db812&&_0x2db812[_0xd935('0x6')]){return _0xeedbc[_0xd935('0x34')][_0xd935('0x35')](_0x2db812);}})[_0xd935('0x24')](function(){_0x279fdf();})[_0xd935('0x26')](function(_0x15c962){_0x279fdf(_0x15c962);});},'afterUpdate':function(_0x499785,_0xa457a,_0x5bee13){return BPromise[_0xd935('0x30')]()['then'](function(){if(_0x499785[_0xd935('0x2d')](_0xd935('0x33'))||_0x499785[_0xd935('0x2d')]('context')){return _0xeedbc['VoiceExtension'][_0xd935('0x36')]({'where':{'UserId':_0x499785['id'],'type':_0xd935('0x9'),'ChanSpyId':{'$ne':null}}})[_0xd935('0x24')](function(){if(_0x499785['chanspy']){return getChanSpyPromise(_0xeedbc,_0x499785)[_0xd935('0x24')](function(_0x100404){if(_0x100404&&_0x100404[_0xd935('0x6')]){return _0xeedbc[_0xd935('0x34')][_0xd935('0x35')](_0x100404);}});}});}})[_0xd935('0x24')](function(){if(_0x499785[_0xd935('0x2d')]('extensionMonitor')||_0x499785[_0xd935('0x2d')](_0xd935('0x7'))){return _0xeedbc['VoiceExtension'][_0xd935('0x36')]({'where':{'UserId':_0x499785['id'],'type':_0xd935('0x9'),'ChanSpyId':null}})[_0xd935('0x24')](function(){var _0x3b17e4=getUserApplications(_0x499785,_0x499785[_0xd935('0x25')]);if(_0x499785[_0xd935('0x25')]!=_0x499785[_0xd935('0x15')]){_0x3b17e4=_0x3b17e4['concat'](getUserApplications(_0x499785,_0x499785[_0xd935('0x15')]));}return _0xeedbc[_0xd935('0x34')][_0xd935('0x35')](_0x3b17e4);});}})[_0xd935('0x24')](function(){_0x5bee13();})['catch'](function(_0x567d1b){_0x5bee13(_0x567d1b);});},'afterDestroy':function(_0x543fee){return _0xeedbc[_0xd935('0x34')][_0xd935('0x36')]({'where':{'UserId':_0x543fee['id'],'type':_0xd935('0x9')}});}},'instanceMethods':{'authenticate':function(_0x36f50d,_0x4f3f8a){if(!_0x4f3f8a){return this[_0xd935('0x37')]===this['encryptPassword'](_0x36f50d);}var _0x28dc83=this;this['encryptPassword'](_0x36f50d,function(_0x4c98bc,_0x55f375){if(_0x4c98bc){_0x4f3f8a(_0x4c98bc);}if(_0x28dc83[_0xd935('0x37')]===_0x55f375){_0x4f3f8a(null,!![]);}else{_0x4f3f8a(null,![]);}});},'makeSalt':function(_0x2e53e5,_0x4ded1c){var _0x52fb39=0x10;if(typeof arguments[0x0]===_0xd935('0x38')){_0x4ded1c=arguments[0x0];_0x2e53e5=_0x52fb39;}else if(typeof arguments[0x1]===_0xd935('0x38')){_0x4ded1c=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x2e53e5){_0x2e53e5=_0x52fb39;}return crypto['randomBytes'](_0x2e53e5,function(_0x443dab,_0x6ea166){if(_0x443dab){_0x4ded1c(_0x443dab);}return _0x4ded1c(null,_0x6ea166[_0xd935('0x39')](_0xd935('0x3a')));});},'encryptPassword':function(_0x1b4385,_0x37dd82){if(!_0x1b4385||!this[_0xd935('0x3b')]){return _0x37dd82?_0x37dd82(null):null;}var _0x492327=0x2710;var _0x2aca1b=0x40;var _0x3ceb54=new Buffer(this[_0xd935('0x3b')],'base64');if(!_0x37dd82){return crypto[_0xd935('0x3c')](_0x1b4385,_0x3ceb54,_0x492327,_0x2aca1b,'sha1')[_0xd935('0x39')](_0xd935('0x3a'));}return crypto[_0xd935('0x3d')](_0x1b4385,_0x3ceb54,_0x492327,_0x2aca1b,_0xd935('0x3e'),function(_0x4241b3,_0x394ea8){if(_0x4241b3){_0x37dd82(_0x4241b3);}return _0x37dd82(null,_0x394ea8['toString'](_0xd935('0x3a')));});},'updatePassword':function(_0x2c6a51){if(!this[_0xd935('0x37')]){return _0x2c6a51(null);}if(!validatePresenceOf(this[_0xd935('0x37')])&&authTypes[_0xd935('0x3f')](this[_0xd935('0x40')])===-0x1){_0x2c6a51(new Error('Invalid\x20password'));}var _0x370dcd=this;this[_0xd935('0x41')](function(_0x3af607,_0xf442b){if(_0x3af607){return _0x2c6a51(_0x3af607);}_0x370dcd[_0xd935('0x3b')]=_0xf442b;_0x370dcd[_0xd935('0x42')](_0x370dcd['password'],function(_0x20604b,_0x5bdbc3){if(_0x20604b){_0x2c6a51(_0x20604b);}_0x370dcd['password']=_0x5bdbc3;_0x2c6a51(null);});});},'updateMd5Password':function(){this[_0xd935('0x43')]=md5(this['name']+_0xd935('0x44')+this['password']);return this[_0xd935('0x43')];}}});};