25bff4cc5f2c28ec3cb0046a3d4b7ea077aa42c5
[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 _0xa2b7=['privacyEnabled','updateMd5Password','updatePassword','changed','UserProfile','internal','bulkCreate','VoiceExtension','destroy','encryptPassword','function','randomBytes','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret','bluebird','crypto','md5','lodash','./user.attributes','context','from-sip','length','format','%s%s','prefix','push','CDR(type)=%s','chanspy','merge','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','name','options','join','record','StopMixMonitor','wav','WAV','gsm','system','Set','CDR(type)=internal','includes','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','findAll','concat','catch','exports','define','User','users','utf8','utf8_bin','userProfileId','resolve','find','then'];(function(_0x3fc31d,_0x432bc9){var _0x31bb91=function(_0x1c1640){while(--_0x1c1640){_0x3fc31d['push'](_0x3fc31d['shift']());}};_0x31bb91(++_0x432bc9);}(_0xa2b7,0xb0));var _0x7a2b=function(_0x3ec376,_0x3b839a){_0x3ec376=_0x3ec376-0x0;var _0x5cc6c1=_0xa2b7[_0x3ec376];return _0x5cc6c1;};'use strict';var BPromise=require(_0x7a2b('0x0'));var crypto=require(_0x7a2b('0x1'));var util=require('util');var md5=require(_0x7a2b('0x2'));var _=require(_0x7a2b('0x3'));var attributes=require(_0x7a2b('0x4'));var authTypes=['google'];var validatePresenceOf=function(_0x210012){return _0x210012&&_0x210012['length'];};var getChanSpyApplications=function(_0x84f6fe,_0x556eea,_0x50d747){var _0x42ad9d={'context':_0x84f6fe[_0x7a2b('0x5')]||_0x7a2b('0x6'),'type':'system','isApp':![],'UserId':_0x84f6fe['id']};var _0x897122=[];for(var _0x5e51ed=0x0,_0x5f1fc1=0x1;_0x5e51ed<_0x50d747[_0x7a2b('0x7')];_0x5e51ed++,_0x5f1fc1=0x1){var _0x115f02={'exten':util[_0x7a2b('0x8')](_0x7a2b('0x9'),_0x50d747[_0x5e51ed][_0x7a2b('0xa')],_0x556eea),'ChanSpyId':_0x50d747[_0x5e51ed]['id']};_0x897122[_0x7a2b('0xb')](_['merge']({'app':'Set','appdata':util['format'](_0x7a2b('0xc'),_0x7a2b('0xd')),'priority':_0x5f1fc1++},_0x42ad9d,_0x115f02));if(_0x50d747[_0x5e51ed]['record']){_0x897122[_0x7a2b('0xb')](_[_0x7a2b('0xe')]({'app':_0x7a2b('0xf'),'appdata':util[_0x7a2b('0x8')](_0x7a2b('0x10'),_0x50d747[_0x5e51ed][_0x7a2b('0x11')]),'priority':_0x5f1fc1++},_0x42ad9d,_0x115f02));}if(_0x50d747[_0x5e51ed][_0x7a2b('0x12')]){_0x897122[_0x7a2b('0xb')](_[_0x7a2b('0xe')]({'app':_0x7a2b('0x13'),'appdata':_0x50d747[_0x5e51ed][_0x7a2b('0x14')],'priority':_0x5f1fc1++},_0x42ad9d,_0x115f02));}_0x897122[_0x7a2b('0xb')](_[_0x7a2b('0xe')]({'app':_0x7a2b('0x15'),'appdata':util['format']('SIP/%s,%s',_0x84f6fe[_0x7a2b('0x16')],_0x50d747[_0x5e51ed]['options']?_0x50d747[_0x5e51ed][_0x7a2b('0x17')][_0x7a2b('0x18')](''):''),'priority':_0x5f1fc1++},_0x42ad9d,_0x115f02));if(_0x50d747[_0x5e51ed][_0x7a2b('0x19')]){_0x897122['push'](_[_0x7a2b('0xe')]({'app':_0x7a2b('0x1a'),'priority':_0x5f1fc1++},_0x42ad9d,_0x115f02));}}return _0x897122;};var getUserApplications=function(_0x184f21,_0x4f6b88){var _0x21731a=[_0x7a2b('0x1b'),_0x7a2b('0x1c'),_0x7a2b('0x1d')];var _0x466b0b={'context':_0x184f21['context']||'from-sip','exten':_0x4f6b88,'type':_0x7a2b('0x1e'),'isApp':![],'UserId':_0x184f21['id']};var _0x50e81f=[{'app':_0x7a2b('0x1f'),'appdata':_0x7a2b('0x20')}];if(_0x184f21['extensionMonitor']&&_[_0x7a2b('0x21')](_0x21731a,_0x184f21[_0x7a2b('0x22')])){_0x50e81f['push']({'app':_0x7a2b('0x1f'),'appdata':_0x7a2b('0x23')});_0x50e81f[_0x7a2b('0xb')]({'app':'Set','appdata':util['format'](_0x7a2b('0x24'),_0x184f21['extensionMonitor'])});_0x50e81f[_0x7a2b('0xb')]({'app':_0x7a2b('0x25'),'appdata':util[_0x7a2b('0x8')](_0x7a2b('0x26'),_0x184f21[_0x7a2b('0x16')])});}else{_0x50e81f['push']({'app':'Dial','appdata':util[_0x7a2b('0x8')](_0x7a2b('0x27'),_0x184f21[_0x7a2b('0x16')])});}_0x50e81f[_0x7a2b('0xb')]({'app':_0x7a2b('0x28')});for(var _0xd6b182=0x0;_0xd6b182<_0x50e81f[_0x7a2b('0x7')];_0xd6b182++){_0x50e81f[_0xd6b182][_0x7a2b('0x29')]=_0xd6b182+0x1;_0x50e81f[_0xd6b182]=_['defaults'](_0x50e81f[_0xd6b182],_0x466b0b);}return _0x50e81f;};var getChanSpyPromise=function(_0x4ca96d,_0x46271e){return new BPromise(function(_0x359bde,_0x12daf2){return _0x4ca96d['VoiceChanSpy'][_0x7a2b('0x2a')]()['then'](function(_0x7d4924){if(_0x7d4924){var _0x43178b=getChanSpyApplications(_0x46271e,_0x46271e['internal'],_0x7d4924);if(_0x46271e['internal']!=_0x46271e['name']){_0x43178b=_0x43178b[_0x7a2b('0x2b')](getChanSpyApplications(_0x46271e,_0x46271e[_0x7a2b('0x16')],_0x7d4924));}return _0x359bde(_0x43178b);}return _0x359bde([]);})[_0x7a2b('0x2c')](function(_0x3f4023){_0x12daf2(_0x3f4023);});});};module[_0x7a2b('0x2d')]=function(_0x39c855,_0x3db9b3){var _0x5528c0=_0x39c855['models'];return _0x39c855[_0x7a2b('0x2e')](_0x7a2b('0x2f'),attributes,{'tableName':_0x7a2b('0x30'),'charset':_0x7a2b('0x31'),'collate':_0x7a2b('0x32'),'hooks':{'beforeCreate':function(_0x5a00a7,_0x491f75,_0x4e4c65){var _0x478b3d=typeof _0x5a00a7[_0x7a2b('0x33')]==='undefined'?BPromise[_0x7a2b('0x34')](null):_0x5528c0['UserProfile'][_0x7a2b('0x35')]({'where':{'id':_0x5a00a7[_0x7a2b('0x33')]}});_0x478b3d[_0x7a2b('0x36')](function(_0x2aa2ad){if(_0x2aa2ad){_0x5a00a7[_0x7a2b('0x37')]=_0x2aa2ad[_0x7a2b('0x37')];}})[_0x7a2b('0x36')](function(){_0x5a00a7[_0x7a2b('0x38')]();_0x5a00a7[_0x7a2b('0x39')](_0x4e4c65);})[_0x7a2b('0x2c')](function(_0x38ade2){_0x4e4c65(_0x38ade2);});},'beforeUpdate':function(_0x33b299,_0x3f5eeb,_0x1466c1){Promise['resolve']()['then'](function(){if(_0x33b299[_0x7a2b('0x3a')](_0x7a2b('0x33'))===![])return;return _0x5528c0[_0x7a2b('0x3b')]['find']({'where':{'id':_0x33b299[_0x7a2b('0x33')]}})[_0x7a2b('0x36')](function(_0x50df74){if(_0x50df74)_0x33b299[_0x7a2b('0x37')]=_0x50df74[_0x7a2b('0x37')];return;});})[_0x7a2b('0x36')](function(){if(_0x33b299[_0x7a2b('0x3a')]('password')){_0x33b299['updateMd5Password']();return _0x33b299['updatePassword'](_0x1466c1);}_0x1466c1();})[_0x7a2b('0x2c')](function(_0x5a0d81){_0x1466c1(_0x5a0d81);});},'afterCreate':function(_0x23a671,_0x250343,_0x1e0398){var _0x3c7ab6=getUserApplications(_0x23a671,_0x23a671['internal']);if(_0x23a671[_0x7a2b('0x3c')]!=_0x23a671[_0x7a2b('0x16')]){_0x3c7ab6=_0x3c7ab6['concat'](getUserApplications(_0x23a671,_0x23a671['name']));}return _0x5528c0['VoiceExtension'][_0x7a2b('0x3d')](_0x3c7ab6)[_0x7a2b('0x36')](function(){if(_0x23a671['chanspy']){return getChanSpyPromise(_0x5528c0,_0x23a671);}})[_0x7a2b('0x36')](function(_0x8c7ab7){if(_0x8c7ab7&&_0x8c7ab7[_0x7a2b('0x7')]){return _0x5528c0['VoiceExtension'][_0x7a2b('0x3d')](_0x8c7ab7);}})[_0x7a2b('0x36')](function(){_0x1e0398();})[_0x7a2b('0x2c')](function(_0x45fdbd){_0x1e0398(_0x45fdbd);});},'afterUpdate':function(_0x1c87f7,_0xe59c78,_0x28284e){return BPromise[_0x7a2b('0x34')]()[_0x7a2b('0x36')](function(){if(_0x1c87f7['changed']('chanspy')||_0x1c87f7[_0x7a2b('0x3a')]('context')){return _0x5528c0[_0x7a2b('0x3e')][_0x7a2b('0x3f')]({'where':{'UserId':_0x1c87f7['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x7a2b('0x36')](function(){if(_0x1c87f7['chanspy']){return getChanSpyPromise(_0x5528c0,_0x1c87f7)[_0x7a2b('0x36')](function(_0x590347){if(_0x590347&&_0x590347[_0x7a2b('0x7')]){return _0x5528c0[_0x7a2b('0x3e')]['bulkCreate'](_0x590347);}});}});}})[_0x7a2b('0x36')](function(){if(_0x1c87f7[_0x7a2b('0x3a')]('extensionMonitor')||_0x1c87f7[_0x7a2b('0x3a')](_0x7a2b('0x5'))){return _0x5528c0[_0x7a2b('0x3e')][_0x7a2b('0x3f')]({'where':{'UserId':_0x1c87f7['id'],'type':_0x7a2b('0x1e'),'ChanSpyId':null}})['then'](function(){var _0x11b1de=getUserApplications(_0x1c87f7,_0x1c87f7[_0x7a2b('0x3c')]);if(_0x1c87f7[_0x7a2b('0x3c')]!=_0x1c87f7['name']){_0x11b1de=_0x11b1de[_0x7a2b('0x2b')](getUserApplications(_0x1c87f7,_0x1c87f7[_0x7a2b('0x16')]));}return _0x5528c0['VoiceExtension'][_0x7a2b('0x3d')](_0x11b1de);});}})[_0x7a2b('0x36')](function(){_0x28284e();})['catch'](function(_0xe86a1e){_0x28284e(_0xe86a1e);});},'afterDestroy':function(_0x566b98,_0x1763bd){return _0x5528c0[_0x7a2b('0x3e')][_0x7a2b('0x3f')]({'where':{'UserId':_0x566b98['id'],'type':_0x7a2b('0x1e')}});}},'instanceMethods':{'authenticate':function(_0x5e24cd,_0x3a2181){if(!_0x3a2181){return this[_0x7a2b('0x14')]===this[_0x7a2b('0x40')](_0x5e24cd);}var _0x3e12ed=this;this[_0x7a2b('0x40')](_0x5e24cd,function(_0x403bac,_0x1f2402){if(_0x403bac){_0x3a2181(_0x403bac);}if(_0x3e12ed[_0x7a2b('0x14')]===_0x1f2402){_0x3a2181(null,!![]);}else{_0x3a2181(null,![]);}});},'makeSalt':function(_0x1eecf5,_0xb5cd32){var _0x54bbc7=0x10;if(typeof arguments[0x0]===_0x7a2b('0x41')){_0xb5cd32=arguments[0x0];_0x1eecf5=_0x54bbc7;}else if(typeof arguments[0x1]===_0x7a2b('0x41')){_0xb5cd32=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x1eecf5){_0x1eecf5=_0x54bbc7;}return crypto[_0x7a2b('0x42')](_0x1eecf5,function(_0x5aad44,_0x1ee6b4){if(_0x5aad44){_0xb5cd32(_0x5aad44);}return _0xb5cd32(null,_0x1ee6b4['toString'](_0x7a2b('0x43')));});},'encryptPassword':function(_0x20ca97,_0x5c2e3f){if(!_0x20ca97||!this[_0x7a2b('0x44')]){return _0x5c2e3f?_0x5c2e3f(null):null;}var _0x48848f=0x2710;var _0x3f8330=0x40;var _0x33d547=new Buffer(this['salt'],_0x7a2b('0x43'));if(!_0x5c2e3f){return crypto[_0x7a2b('0x45')](_0x20ca97,_0x33d547,_0x48848f,_0x3f8330,_0x7a2b('0x46'))['toString'](_0x7a2b('0x43'));}return crypto[_0x7a2b('0x47')](_0x20ca97,_0x33d547,_0x48848f,_0x3f8330,_0x7a2b('0x46'),function(_0x3a1f42,_0x1f45d2){if(_0x3a1f42){_0x5c2e3f(_0x3a1f42);}return _0x5c2e3f(null,_0x1f45d2['toString'](_0x7a2b('0x43')));});},'updatePassword':function(_0x1dbf7b){if(!this[_0x7a2b('0x14')]){return _0x1dbf7b(null);}if(!validatePresenceOf(this[_0x7a2b('0x14')])&&authTypes[_0x7a2b('0x48')](this[_0x7a2b('0x49')])===-0x1){_0x1dbf7b(new Error(_0x7a2b('0x4a')));}var _0x1d0322=this;this[_0x7a2b('0x4b')](function(_0x482ddc,_0x3d03a1){if(_0x482ddc){return _0x1dbf7b(_0x482ddc);}_0x1d0322['salt']=_0x3d03a1;_0x1d0322[_0x7a2b('0x40')](_0x1d0322[_0x7a2b('0x14')],function(_0x38b807,_0x131134){if(_0x38b807){_0x1dbf7b(_0x38b807);}_0x1d0322['password']=_0x131134;_0x1dbf7b(null);});});},'updateMd5Password':function(){this[_0x7a2b('0x4c')]=md5(this[_0x7a2b('0x16')]+':asterisk:'+this[_0x7a2b('0x14')]);return this[_0x7a2b('0x4c')];}}});};