Built motion from commit 25580385.|2.6.2
[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 _0x3e2a=['SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','priority','VoiceChanSpy','findAll','then','internal','concat','exports','models','User','users','utf8','undefined','resolve','UserProfile','find','updateMd5Password','updatePassword','catch','changed','userProfileId','userSetting','createUserSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','salt','base64','pbkdf2Sync','sha1','toString','pbkdf2','indexOf','provider','makeSalt','md5secret','bluebird','crypto','util','md5','./user.attributes','google','length','system','format','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','SIP/%s,%s','name','options','join','StopMixMonitor','wav','gsm','context','from-sip','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s'];(function(_0x2f1172,_0x5f5b26){var _0x58e374=function(_0x1a61fa){while(--_0x1a61fa){_0x2f1172['push'](_0x2f1172['shift']());}};_0x58e374(++_0x5f5b26);}(_0x3e2a,0xc4));var _0xa3e2=function(_0x46a02a,_0x22c333){_0x46a02a=_0x46a02a-0x0;var _0x4ce1fd=_0x3e2a[_0x46a02a];return _0x4ce1fd;};'use strict';var BPromise=require(_0xa3e2('0x0'));var crypto=require(_0xa3e2('0x1'));var util=require(_0xa3e2('0x2'));var md5=require(_0xa3e2('0x3'));var _=require('lodash');var attributes=require(_0xa3e2('0x4'));var authTypes=[_0xa3e2('0x5')];var validatePresenceOf=function(_0x1b4b12){return _0x1b4b12&&_0x1b4b12[_0xa3e2('0x6')];};var getChanSpyApplications=function(_0x24dc69,_0xf3f006,_0x208486){var _0x5272c7={'context':_0x24dc69['context']||'from-sip','type':_0xa3e2('0x7'),'isApp':![],'UserId':_0x24dc69['id']};var _0x4ceaf4=[];for(var _0x2f518f=0x0,_0x537d2c=0x1;_0x2f518f<_0x208486[_0xa3e2('0x6')];_0x2f518f++,_0x537d2c=0x1){var _0x5a0b98={'exten':util[_0xa3e2('0x8')]('%s%s',_0x208486[_0x2f518f][_0xa3e2('0x9')],_0xf3f006),'ChanSpyId':_0x208486[_0x2f518f]['id']};_0x4ceaf4[_0xa3e2('0xa')](_[_0xa3e2('0xb')]({'app':_0xa3e2('0xc'),'appdata':util[_0xa3e2('0x8')](_0xa3e2('0xd'),_0xa3e2('0xe')),'priority':_0x537d2c++},_0x5272c7,_0x5a0b98));if(_0x208486[_0x2f518f][_0xa3e2('0xf')]){_0x4ceaf4['push'](_[_0xa3e2('0xb')]({'app':'MixMonitor','appdata':util[_0xa3e2('0x8')](_0xa3e2('0x10'),_0x208486[_0x2f518f][_0xa3e2('0x11')]),'priority':_0x537d2c++},_0x5272c7,_0x5a0b98));}if(_0x208486[_0x2f518f][_0xa3e2('0x12')]){_0x4ceaf4[_0xa3e2('0xa')](_[_0xa3e2('0xb')]({'app':_0xa3e2('0x13'),'appdata':_0x208486[_0x2f518f][_0xa3e2('0x14')],'priority':_0x537d2c++},_0x5272c7,_0x5a0b98));}_0x4ceaf4[_0xa3e2('0xa')](_[_0xa3e2('0xb')]({'app':'ChanSpy','appdata':util['format'](_0xa3e2('0x15'),_0x24dc69[_0xa3e2('0x16')],_0x208486[_0x2f518f][_0xa3e2('0x17')]?_0x208486[_0x2f518f]['options'][_0xa3e2('0x18')](''):''),'priority':_0x537d2c++},_0x5272c7,_0x5a0b98));if(_0x208486[_0x2f518f][_0xa3e2('0xf')]){_0x4ceaf4[_0xa3e2('0xa')](_['merge']({'app':_0xa3e2('0x19'),'priority':_0x537d2c++},_0x5272c7,_0x5a0b98));}}return _0x4ceaf4;};var getUserApplications=function(_0x29d380,_0xd966c7){var _0x2fbe0b=[_0xa3e2('0x1a'),'WAV',_0xa3e2('0x1b')];var _0x1aaf07={'context':_0x29d380[_0xa3e2('0x1c')]||_0xa3e2('0x1d'),'exten':_0xd966c7,'type':'system','isApp':![],'UserId':_0x29d380['id']};var _0x8485e7=[{'app':_0xa3e2('0xc'),'appdata':_0xa3e2('0x1e')}];if(_0x29d380[_0xa3e2('0x1f')]&&_[_0xa3e2('0x20')](_0x2fbe0b,_0x29d380[_0xa3e2('0x1f')])){_0x8485e7[_0xa3e2('0xa')]({'app':_0xa3e2('0xc'),'appdata':_0xa3e2('0x21')});_0x8485e7[_0xa3e2('0xa')]({'app':'Set','appdata':util[_0xa3e2('0x8')](_0xa3e2('0x22'),_0x29d380[_0xa3e2('0x1f')])});_0x8485e7[_0xa3e2('0xa')]({'app':'Dial','appdata':util[_0xa3e2('0x8')](_0xa3e2('0x23'),_0x29d380[_0xa3e2('0x16')])});}else{_0x8485e7[_0xa3e2('0xa')]({'app':'Dial','appdata':util[_0xa3e2('0x8')](_0xa3e2('0x24'),_0x29d380[_0xa3e2('0x16')])});}_0x8485e7[_0xa3e2('0xa')]({'app':'Hangup'});for(var _0x3b1bfb=0x0;_0x3b1bfb<_0x8485e7[_0xa3e2('0x6')];_0x3b1bfb++){_0x8485e7[_0x3b1bfb][_0xa3e2('0x25')]=_0x3b1bfb+0x1;_0x8485e7[_0x3b1bfb]=_['defaults'](_0x8485e7[_0x3b1bfb],_0x1aaf07);}return _0x8485e7;};var getChanSpyPromise=function(_0x5768e2,_0x3e34e0){return new BPromise(function(_0x1a688b,_0xc4aab2){return _0x5768e2[_0xa3e2('0x26')][_0xa3e2('0x27')]()[_0xa3e2('0x28')](function(_0x5b98f4){if(_0x5b98f4){var _0x4fe696=getChanSpyApplications(_0x3e34e0,_0x3e34e0['internal'],_0x5b98f4);if(_0x3e34e0[_0xa3e2('0x29')]!=_0x3e34e0[_0xa3e2('0x16')]){_0x4fe696=_0x4fe696[_0xa3e2('0x2a')](getChanSpyApplications(_0x3e34e0,_0x3e34e0[_0xa3e2('0x16')],_0x5b98f4));}return _0x1a688b(_0x4fe696);}return _0x1a688b([]);})['catch'](function(_0x5c5fa2){_0xc4aab2(_0x5c5fa2);});});};module[_0xa3e2('0x2b')]=function(_0x56d6a9){var _0x4fe62b=_0x56d6a9[_0xa3e2('0x2c')];return _0x56d6a9['define'](_0xa3e2('0x2d'),attributes,{'tableName':_0xa3e2('0x2e'),'charset':_0xa3e2('0x2f'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x320e7d,_0x3a0e8c,_0x161b3b){var _0x542ea6=typeof _0x320e7d['userProfileId']===_0xa3e2('0x30')?BPromise[_0xa3e2('0x31')](null):_0x4fe62b[_0xa3e2('0x32')][_0xa3e2('0x33')]({'where':{'id':_0x320e7d['userProfileId']}});_0x542ea6['then'](function(_0x457935){if(_0x457935){_0x320e7d['privacyEnabled']=_0x457935['privacyEnabled'];}})[_0xa3e2('0x28')](function(){_0x320e7d[_0xa3e2('0x34')]();_0x320e7d[_0xa3e2('0x35')](_0x161b3b);})[_0xa3e2('0x36')](function(_0x33c46f){_0x161b3b(_0x33c46f);});},'beforeUpdate':function(_0x10e5af,_0x1943b7,_0x18bacb){Promise['resolve']()['then'](function(){if(_0x10e5af[_0xa3e2('0x37')](_0xa3e2('0x38'))===![])return;return _0x4fe62b['UserProfile'][_0xa3e2('0x33')]({'where':{'id':_0x10e5af[_0xa3e2('0x38')]}})[_0xa3e2('0x28')](function(_0x57e719){if(_0x57e719)_0x10e5af['privacyEnabled']=_0x57e719['privacyEnabled'];return;});})['then'](function(){if(_0x10e5af[_0xa3e2('0x37')](_0xa3e2('0x14'))){_0x10e5af['updateMd5Password']();return _0x10e5af[_0xa3e2('0x35')](_0x18bacb);}_0x18bacb();})[_0xa3e2('0x36')](function(_0xc7046b){_0x18bacb(_0xc7046b);});},'afterCreate':function(_0x4b17c7,_0x568518,_0x375366){var _0x21d7a1=getUserApplications(_0x4b17c7,_0x4b17c7[_0xa3e2('0x29')]);if(_0x4b17c7[_0xa3e2('0x29')]!=_0x4b17c7[_0xa3e2('0x16')]){_0x21d7a1=_0x21d7a1[_0xa3e2('0x2a')](getUserApplications(_0x4b17c7,_0x4b17c7[_0xa3e2('0x16')]));}return Promise[_0xa3e2('0x31')]()[_0xa3e2('0x28')](function(){if(!_0x4b17c7[_0xa3e2('0x39')]){return _0x4b17c7[_0xa3e2('0x3a')]({'clientSideLoggingLevel':_0xa3e2('0x3b'),'clientSideLoggingEnabled':![]});}})[_0xa3e2('0x28')](function(){return _0x4fe62b[_0xa3e2('0x3c')]['bulkCreate'](_0x21d7a1);})['then'](function(){if(_0x4b17c7[_0xa3e2('0xe')]){return getChanSpyPromise(_0x4fe62b,_0x4b17c7);}})['then'](function(_0x2525da){if(_0x2525da&&_0x2525da[_0xa3e2('0x6')]){return _0x4fe62b['VoiceExtension'][_0xa3e2('0x3d')](_0x2525da);}})['then'](function(){_0x375366();})[_0xa3e2('0x36')](function(_0x42d7f2){_0x375366(_0x42d7f2);});},'afterUpdate':function(_0x18562b,_0x583db8,_0x251b24){return BPromise[_0xa3e2('0x31')]()['then'](function(){if(_0x18562b['changed'](_0xa3e2('0xe'))||_0x18562b['changed'](_0xa3e2('0x1c'))){return _0x4fe62b[_0xa3e2('0x3c')]['destroy']({'where':{'UserId':_0x18562b['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xa3e2('0x28')](function(){if(_0x18562b[_0xa3e2('0xe')]){return getChanSpyPromise(_0x4fe62b,_0x18562b)['then'](function(_0x59d0fc){if(_0x59d0fc&&_0x59d0fc['length']){return _0x4fe62b[_0xa3e2('0x3c')]['bulkCreate'](_0x59d0fc);}});}});}})[_0xa3e2('0x28')](function(){if(_0x18562b[_0xa3e2('0x37')]('extensionMonitor')||_0x18562b[_0xa3e2('0x37')](_0xa3e2('0x1c'))){return _0x4fe62b['VoiceExtension']['destroy']({'where':{'UserId':_0x18562b['id'],'type':_0xa3e2('0x7'),'ChanSpyId':null}})[_0xa3e2('0x28')](function(){var _0x445220=getUserApplications(_0x18562b,_0x18562b[_0xa3e2('0x29')]);if(_0x18562b['internal']!=_0x18562b[_0xa3e2('0x16')]){_0x445220=_0x445220[_0xa3e2('0x2a')](getUserApplications(_0x18562b,_0x18562b[_0xa3e2('0x16')]));}return _0x4fe62b['VoiceExtension'][_0xa3e2('0x3d')](_0x445220);});}})['then'](function(){_0x251b24();})[_0xa3e2('0x36')](function(_0x3e0241){_0x251b24(_0x3e0241);});},'afterDestroy':function(_0x28b8e4){return _0x4fe62b['VoiceExtension'][_0xa3e2('0x3e')]({'where':{'UserId':_0x28b8e4['id'],'type':_0xa3e2('0x7')}});}},'instanceMethods':{'authenticate':function(_0x11226f,_0x5ce67b){if(!_0x5ce67b){return this[_0xa3e2('0x14')]===this[_0xa3e2('0x3f')](_0x11226f);}var _0x4946ee=this;this[_0xa3e2('0x3f')](_0x11226f,function(_0x20a6ad,_0x4d5998){if(_0x20a6ad){_0x5ce67b(_0x20a6ad);}if(_0x4946ee[_0xa3e2('0x14')]===_0x4d5998){_0x5ce67b(null,!![]);}else{_0x5ce67b(null,![]);}});},'makeSalt':function(_0x6a579b,_0x14083b){var _0x5adc1b=0x10;if(typeof arguments[0x0]===_0xa3e2('0x40')){_0x14083b=arguments[0x0];_0x6a579b=_0x5adc1b;}else if(typeof arguments[0x1]===_0xa3e2('0x40')){_0x14083b=arguments[0x1];}else{throw new Error(_0xa3e2('0x41'));}if(!_0x6a579b){_0x6a579b=_0x5adc1b;}return crypto[_0xa3e2('0x42')](_0x6a579b,function(_0x52c3ea,_0x5a8aea){if(_0x52c3ea){_0x14083b(_0x52c3ea);}return _0x14083b(null,_0x5a8aea['toString']('base64'));});},'encryptPassword':function(_0x16b621,_0x28a569){if(!_0x16b621||!this['salt']){return _0x28a569?_0x28a569(null):null;}var _0x5b534e=0x2710;var _0x2d0642=0x40;var _0x2be13f=new Buffer(this[_0xa3e2('0x43')],_0xa3e2('0x44'));if(!_0x28a569){return crypto[_0xa3e2('0x45')](_0x16b621,_0x2be13f,_0x5b534e,_0x2d0642,_0xa3e2('0x46'))[_0xa3e2('0x47')]('base64');}return crypto[_0xa3e2('0x48')](_0x16b621,_0x2be13f,_0x5b534e,_0x2d0642,'sha1',function(_0x17cc6f,_0x21d1b5){if(_0x17cc6f){_0x28a569(_0x17cc6f);}return _0x28a569(null,_0x21d1b5[_0xa3e2('0x47')](_0xa3e2('0x44')));});},'updatePassword':function(_0x1f388f){if(!this[_0xa3e2('0x14')]){return _0x1f388f(null);}if(!validatePresenceOf(this[_0xa3e2('0x14')])&&authTypes[_0xa3e2('0x49')](this[_0xa3e2('0x4a')])===-0x1){_0x1f388f(new Error('Invalid\x20password'));}var _0x198f38=this;this[_0xa3e2('0x4b')](function(_0xe75a75,_0x1f64cd){if(_0xe75a75){return _0x1f388f(_0xe75a75);}_0x198f38[_0xa3e2('0x43')]=_0x1f64cd;_0x198f38[_0xa3e2('0x3f')](_0x198f38[_0xa3e2('0x14')],function(_0x42ddcd,_0x250bfa){if(_0x42ddcd){_0x1f388f(_0x42ddcd);}_0x198f38['password']=_0x250bfa;_0x1f388f(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xa3e2('0x16')]+':asterisk:'+this[_0xa3e2('0x14')]);return this[_0xa3e2('0x4c')];}}});};