8ed07accdb1d9899b0709368e0eb81aebbc24e82
[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 _0x53b6=['_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','priority','defaults','VoiceChanSpy','findAll','internal','concat','catch','models','define','User','users','utf8','utf8_bin','updatePassword','changed','updateMd5Password','bulkCreate','then','chanspy','VoiceExtension','resolve','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','base64','pbkdf2Sync','sha1','toString','pbkdf2','indexOf','salt',':asterisk:','md5secret','bluebird','crypto','util','md5','lodash','./user.attributes','length','context','from-sip','system','format','%s%s','prefix','push','Set','CDR(type)=%s','merge','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','name','options','join','wav','WAV','CDR(type)=internal','extensionMonitor','includes'];(function(_0x2795d5,_0x4a411d){var _0x3a6ab3=function(_0xeff571){while(--_0xeff571){_0x2795d5['push'](_0x2795d5['shift']());}};_0x3a6ab3(++_0x4a411d);}(_0x53b6,0x6f));var _0x653b=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x53b6[_0x160c73];return _0xd9302;};'use strict';var BPromise=require(_0x653b('0x0'));var crypto=require(_0x653b('0x1'));var util=require(_0x653b('0x2'));var md5=require(_0x653b('0x3'));var _=require(_0x653b('0x4'));var attributes=require(_0x653b('0x5'));var authTypes=['google'];var validatePresenceOf=function(_0x2bc64c){return _0x2bc64c&&_0x2bc64c[_0x653b('0x6')];};var getChanSpyApplications=function(_0x472f2c,_0x2ab2b7,_0x219c4a){var _0x3e6646={'context':_0x472f2c[_0x653b('0x7')]||_0x653b('0x8'),'type':_0x653b('0x9'),'isApp':![],'UserId':_0x472f2c['id']};var _0x53fa61=[];for(var _0x3276c1=0x0,_0x168c18=0x1;_0x3276c1<_0x219c4a[_0x653b('0x6')];_0x3276c1++,_0x168c18=0x1){var _0x174ad4={'exten':util[_0x653b('0xa')](_0x653b('0xb'),_0x219c4a[_0x3276c1][_0x653b('0xc')],_0x2ab2b7),'ChanSpyId':_0x219c4a[_0x3276c1]['id']};_0x53fa61[_0x653b('0xd')](_['merge']({'app':_0x653b('0xe'),'appdata':util['format'](_0x653b('0xf'),'chanspy'),'priority':_0x168c18++},_0x3e6646,_0x174ad4));if(_0x219c4a[_0x3276c1]['record']){_0x53fa61[_0x653b('0xd')](_[_0x653b('0x10')]({'app':_0x653b('0x11'),'appdata':util[_0x653b('0xa')](_0x653b('0x12'),_0x219c4a[_0x3276c1][_0x653b('0x13')]),'priority':_0x168c18++},_0x3e6646,_0x174ad4));}if(_0x219c4a[_0x3276c1][_0x653b('0x14')]){_0x53fa61[_0x653b('0xd')](_['merge']({'app':_0x653b('0x15'),'appdata':_0x219c4a[_0x3276c1][_0x653b('0x16')],'priority':_0x168c18++},_0x3e6646,_0x174ad4));}_0x53fa61['push'](_['merge']({'app':'ChanSpy','appdata':util['format']('SIP/%s,%s',_0x472f2c[_0x653b('0x17')],_0x219c4a[_0x3276c1]['options']?_0x219c4a[_0x3276c1][_0x653b('0x18')][_0x653b('0x19')](''):''),'priority':_0x168c18++},_0x3e6646,_0x174ad4));if(_0x219c4a[_0x3276c1]['record']){_0x53fa61['push'](_['merge']({'app':'StopMixMonitor','priority':_0x168c18++},_0x3e6646,_0x174ad4));}}return _0x53fa61;};var getUserApplications=function(_0x5984e1,_0x652c10){var _0x41f314=[_0x653b('0x1a'),_0x653b('0x1b'),'gsm'];var _0x5a061c={'context':_0x5984e1[_0x653b('0x7')]||_0x653b('0x8'),'exten':_0x652c10,'type':_0x653b('0x9'),'isApp':![],'UserId':_0x5984e1['id']};var _0x4a68a9=[{'app':_0x653b('0xe'),'appdata':_0x653b('0x1c')}];if(_0x5984e1[_0x653b('0x1d')]&&_[_0x653b('0x1e')](_0x41f314,_0x5984e1['extensionMonitor'])){_0x4a68a9[_0x653b('0xd')]({'app':'Set','appdata':_0x653b('0x1f')});_0x4a68a9[_0x653b('0xd')]({'app':_0x653b('0xe'),'appdata':util[_0x653b('0xa')](_0x653b('0x20'),_0x5984e1[_0x653b('0x1d')])});_0x4a68a9['push']({'app':_0x653b('0x21'),'appdata':util[_0x653b('0xa')](_0x653b('0x22'),_0x5984e1[_0x653b('0x17')])});}else{_0x4a68a9[_0x653b('0xd')]({'app':'Dial','appdata':util[_0x653b('0xa')](_0x653b('0x23'),_0x5984e1[_0x653b('0x17')])});}_0x4a68a9[_0x653b('0xd')]({'app':'Hangup'});for(var _0x435037=0x0;_0x435037<_0x4a68a9[_0x653b('0x6')];_0x435037++){_0x4a68a9[_0x435037][_0x653b('0x24')]=_0x435037+0x1;_0x4a68a9[_0x435037]=_[_0x653b('0x25')](_0x4a68a9[_0x435037],_0x5a061c);}return _0x4a68a9;};var getChanSpyPromise=function(_0x317c1e,_0x4fbff5){return new BPromise(function(_0x49ed11,_0x2018ca){return _0x317c1e[_0x653b('0x26')][_0x653b('0x27')]()['then'](function(_0x6871aa){if(_0x6871aa){var _0x50e31f=getChanSpyApplications(_0x4fbff5,_0x4fbff5[_0x653b('0x28')],_0x6871aa);if(_0x4fbff5['internal']!=_0x4fbff5[_0x653b('0x17')]){_0x50e31f=_0x50e31f[_0x653b('0x29')](getChanSpyApplications(_0x4fbff5,_0x4fbff5[_0x653b('0x17')],_0x6871aa));}return _0x49ed11(_0x50e31f);}return _0x49ed11([]);})[_0x653b('0x2a')](function(_0x599b4c){_0x2018ca(_0x599b4c);});});};module['exports']=function(_0x355f70,_0x147e68){var _0x2e7877=_0x355f70[_0x653b('0x2b')];return _0x355f70[_0x653b('0x2c')](_0x653b('0x2d'),attributes,{'tableName':_0x653b('0x2e'),'charset':_0x653b('0x2f'),'collate':_0x653b('0x30'),'hooks':{'beforeCreate':function(_0x1dfa51,_0x17c875,_0x2ac7ed){_0x1dfa51['updateMd5Password']();_0x1dfa51[_0x653b('0x31')](_0x2ac7ed);},'beforeUpdate':function(_0x350ee8,_0x1a9b5c,_0x5a8bda){if(_0x350ee8[_0x653b('0x32')]('password')){_0x350ee8[_0x653b('0x33')]();return _0x350ee8[_0x653b('0x31')](_0x5a8bda);}_0x5a8bda();},'afterCreate':function(_0x2388d2,_0x64bf0f,_0x5c9978){var _0xcf6d64=getUserApplications(_0x2388d2,_0x2388d2['internal']);if(_0x2388d2[_0x653b('0x28')]!=_0x2388d2[_0x653b('0x17')]){_0xcf6d64=_0xcf6d64[_0x653b('0x29')](getUserApplications(_0x2388d2,_0x2388d2[_0x653b('0x17')]));}return _0x2e7877['VoiceExtension'][_0x653b('0x34')](_0xcf6d64)[_0x653b('0x35')](function(){if(_0x2388d2[_0x653b('0x36')]){return getChanSpyPromise(_0x2e7877,_0x2388d2);}})[_0x653b('0x35')](function(_0x4e87ed){if(_0x4e87ed&&_0x4e87ed[_0x653b('0x6')]){return _0x2e7877[_0x653b('0x37')]['bulkCreate'](_0x4e87ed);}})[_0x653b('0x35')](function(){_0x5c9978();})[_0x653b('0x2a')](function(_0x1c5ba1){_0x5c9978(_0x1c5ba1);});},'afterUpdate':function(_0xe7e922,_0x4255bb,_0x4bfb7d){return BPromise[_0x653b('0x38')]()[_0x653b('0x35')](function(){if(_0xe7e922['changed']('chanspy')||_0xe7e922[_0x653b('0x32')](_0x653b('0x7'))){return _0x2e7877[_0x653b('0x37')][_0x653b('0x39')]({'where':{'UserId':_0xe7e922['id'],'type':_0x653b('0x9'),'ChanSpyId':{'$ne':null}}})[_0x653b('0x35')](function(){if(_0xe7e922[_0x653b('0x36')]){return getChanSpyPromise(_0x2e7877,_0xe7e922)[_0x653b('0x35')](function(_0x1f217d){if(_0x1f217d&&_0x1f217d['length']){return _0x2e7877[_0x653b('0x37')][_0x653b('0x34')](_0x1f217d);}});}});}})[_0x653b('0x35')](function(){if(_0xe7e922[_0x653b('0x32')](_0x653b('0x1d'))||_0xe7e922[_0x653b('0x32')]('context')){return _0x2e7877['VoiceExtension']['destroy']({'where':{'UserId':_0xe7e922['id'],'type':_0x653b('0x9'),'ChanSpyId':null}})[_0x653b('0x35')](function(){var _0x221941=getUserApplications(_0xe7e922,_0xe7e922[_0x653b('0x28')]);if(_0xe7e922[_0x653b('0x28')]!=_0xe7e922[_0x653b('0x17')]){_0x221941=_0x221941[_0x653b('0x29')](getUserApplications(_0xe7e922,_0xe7e922[_0x653b('0x17')]));}return _0x2e7877[_0x653b('0x37')][_0x653b('0x34')](_0x221941);});}})[_0x653b('0x35')](function(){_0x4bfb7d();})[_0x653b('0x2a')](function(_0x3da5d2){_0x4bfb7d(_0x3da5d2);});},'afterDestroy':function(_0x546e4e,_0x28fb1d){return _0x2e7877[_0x653b('0x37')][_0x653b('0x39')]({'where':{'UserId':_0x546e4e['id'],'type':_0x653b('0x9')}});}},'instanceMethods':{'authenticate':function(_0x21c9c1,_0x299bef){if(!_0x299bef){return this['password']===this[_0x653b('0x3a')](_0x21c9c1);}var _0x538f4d=this;this[_0x653b('0x3a')](_0x21c9c1,function(_0x2b8f2e,_0x5b810e){if(_0x2b8f2e){_0x299bef(_0x2b8f2e);}if(_0x538f4d[_0x653b('0x16')]===_0x5b810e){_0x299bef(null,!![]);}else{_0x299bef(null,![]);}});},'makeSalt':function(_0x3a1ec7,_0xeecaae){var _0x1edbdd=0x10;if(typeof arguments[0x0]===_0x653b('0x3b')){_0xeecaae=arguments[0x0];_0x3a1ec7=_0x1edbdd;}else if(typeof arguments[0x1]===_0x653b('0x3b')){_0xeecaae=arguments[0x1];}else{throw new Error(_0x653b('0x3c'));}if(!_0x3a1ec7){_0x3a1ec7=_0x1edbdd;}return crypto[_0x653b('0x3d')](_0x3a1ec7,function(_0x39016d,_0x1b19a6){if(_0x39016d){_0xeecaae(_0x39016d);}return _0xeecaae(null,_0x1b19a6['toString'](_0x653b('0x3e')));});},'encryptPassword':function(_0x49add0,_0x54554d){if(!_0x49add0||!this['salt']){return _0x54554d?_0x54554d(null):null;}var _0x11790f=0x2710;var _0x250716=0x40;var _0x3c5f69=new Buffer(this['salt'],_0x653b('0x3e'));if(!_0x54554d){return crypto[_0x653b('0x3f')](_0x49add0,_0x3c5f69,_0x11790f,_0x250716,_0x653b('0x40'))[_0x653b('0x41')](_0x653b('0x3e'));}return crypto[_0x653b('0x42')](_0x49add0,_0x3c5f69,_0x11790f,_0x250716,_0x653b('0x40'),function(_0x4c3404,_0x2486aa){if(_0x4c3404){_0x54554d(_0x4c3404);}return _0x54554d(null,_0x2486aa[_0x653b('0x41')](_0x653b('0x3e')));});},'updatePassword':function(_0xf19420){if(!this[_0x653b('0x16')]){return _0xf19420(null);}if(!validatePresenceOf(this[_0x653b('0x16')])&&authTypes[_0x653b('0x43')](this['provider'])===-0x1){_0xf19420(new Error('Invalid\x20password'));}var _0x5c83c1=this;this['makeSalt'](function(_0x40d721,_0xc90318){if(_0x40d721){return _0xf19420(_0x40d721);}_0x5c83c1[_0x653b('0x44')]=_0xc90318;_0x5c83c1[_0x653b('0x3a')](_0x5c83c1['password'],function(_0x1465cf,_0x1cf21c){if(_0x1465cf){_0xf19420(_0x1465cf);}_0x5c83c1[_0x653b('0x16')]=_0x1cf21c;_0xf19420(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x653b('0x17')]+_0x653b('0x45')+this[_0x653b('0x16')]);return this[_0x653b('0x46')];}}});};