Built motion from commit (unavailable).|2.5.1
[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 _0xaecf=['salt','pbkdf2Sync','sha1','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','md5secret','bluebird','util','md5','./user.attributes','google','length','context','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','record','${UNIQUEID}.%s,a','recordingFormat','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','system','CDR(type)=internal','includes','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxX','priority','defaults','VoiceChanSpy','findAll','internal','exports','models','User','users','utf8_bin','updateMd5Password','concat','VoiceExtension','bulkCreate','then','chanspy','catch','resolve','changed','destroy','encryptPassword','function','toString','base64'];(function(_0xfba9c4,_0x398976){var _0x4985ce=function(_0x13496e){while(--_0x13496e){_0xfba9c4['push'](_0xfba9c4['shift']());}};_0x4985ce(++_0x398976);}(_0xaecf,0x149));var _0xfaec=function(_0x31472e,_0x5eefaf){_0x31472e=_0x31472e-0x0;var _0x43ea68=_0xaecf[_0x31472e];return _0x43ea68;};'use strict';var BPromise=require(_0xfaec('0x0'));var crypto=require('crypto');var util=require(_0xfaec('0x1'));var md5=require(_0xfaec('0x2'));var _=require('lodash');var attributes=require(_0xfaec('0x3'));var authTypes=[_0xfaec('0x4')];var validatePresenceOf=function(_0x366646){return _0x366646&&_0x366646[_0xfaec('0x5')];};var getChanSpyApplications=function(_0x285549,_0x1447b0,_0x4b2082){var _0x180598={'context':_0x285549[_0xfaec('0x6')]||'from-sip','type':'system','isApp':![],'UserId':_0x285549['id']};var _0x5570f7=[];for(var _0x26cba6=0x0,_0x2332dd=0x1;_0x26cba6<_0x4b2082[_0xfaec('0x5')];_0x26cba6++,_0x2332dd=0x1){var _0x21389b={'exten':util[_0xfaec('0x7')](_0xfaec('0x8'),_0x4b2082[_0x26cba6][_0xfaec('0x9')],_0x1447b0),'ChanSpyId':_0x4b2082[_0x26cba6]['id']};_0x5570f7[_0xfaec('0xa')](_[_0xfaec('0xb')]({'app':_0xfaec('0xc'),'appdata':util[_0xfaec('0x7')](_0xfaec('0xd'),'chanspy'),'priority':_0x2332dd++},_0x180598,_0x21389b));if(_0x4b2082[_0x26cba6][_0xfaec('0xe')]){_0x5570f7[_0xfaec('0xa')](_['merge']({'app':'MixMonitor','appdata':util[_0xfaec('0x7')](_0xfaec('0xf'),_0x4b2082[_0x26cba6][_0xfaec('0x10')]),'priority':_0x2332dd++},_0x180598,_0x21389b));}if(_0x4b2082[_0x26cba6]['auth']){_0x5570f7[_0xfaec('0xa')](_[_0xfaec('0xb')]({'app':'Authenticate','appdata':_0x4b2082[_0x26cba6][_0xfaec('0x11')],'priority':_0x2332dd++},_0x180598,_0x21389b));}_0x5570f7[_0xfaec('0xa')](_['merge']({'app':_0xfaec('0x12'),'appdata':util[_0xfaec('0x7')](_0xfaec('0x13'),_0x285549[_0xfaec('0x14')],_0x4b2082[_0x26cba6][_0xfaec('0x15')]?_0x4b2082[_0x26cba6][_0xfaec('0x15')][_0xfaec('0x16')](''):''),'priority':_0x2332dd++},_0x180598,_0x21389b));if(_0x4b2082[_0x26cba6][_0xfaec('0xe')]){_0x5570f7['push'](_[_0xfaec('0xb')]({'app':_0xfaec('0x17'),'priority':_0x2332dd++},_0x180598,_0x21389b));}}return _0x5570f7;};var getUserApplications=function(_0x4541dd,_0x53092f){var _0x45ece1=['wav','WAV','gsm'];var _0x4a01d5={'context':_0x4541dd[_0xfaec('0x6')]||'from-sip','exten':_0x53092f,'type':_0xfaec('0x18'),'isApp':![],'UserId':_0x4541dd['id']};var _0x2c5ce6=[{'app':_0xfaec('0xc'),'appdata':_0xfaec('0x19')}];if(_0x4541dd['extensionMonitor']&&_[_0xfaec('0x1a')](_0x45ece1,_0x4541dd[_0xfaec('0x1b')])){_0x2c5ce6['push']({'app':_0xfaec('0xc'),'appdata':_0xfaec('0x1c')});_0x2c5ce6[_0xfaec('0xa')]({'app':'Set','appdata':util[_0xfaec('0x7')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x4541dd['extensionMonitor'])});_0x2c5ce6[_0xfaec('0xa')]({'app':'Dial','appdata':util[_0xfaec('0x7')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x4541dd['name'])});}else{_0x2c5ce6[_0xfaec('0xa')]({'app':_0xfaec('0x1d'),'appdata':util['format'](_0xfaec('0x1e'),_0x4541dd[_0xfaec('0x14')])});}_0x2c5ce6[_0xfaec('0xa')]({'app':'Hangup'});for(var _0x2d0c5f=0x0;_0x2d0c5f<_0x2c5ce6[_0xfaec('0x5')];_0x2d0c5f++){_0x2c5ce6[_0x2d0c5f][_0xfaec('0x1f')]=_0x2d0c5f+0x1;_0x2c5ce6[_0x2d0c5f]=_[_0xfaec('0x20')](_0x2c5ce6[_0x2d0c5f],_0x4a01d5);}return _0x2c5ce6;};var getChanSpyPromise=function(_0x1d3b1f,_0x3ddcc9){return new BPromise(function(_0x19840a,_0x3b2a0f){return _0x1d3b1f[_0xfaec('0x21')][_0xfaec('0x22')]()['then'](function(_0x51f8eb){if(_0x51f8eb){var _0x28c1be=getChanSpyApplications(_0x3ddcc9,_0x3ddcc9[_0xfaec('0x23')],_0x51f8eb);if(_0x3ddcc9['internal']!=_0x3ddcc9[_0xfaec('0x14')]){_0x28c1be=_0x28c1be['concat'](getChanSpyApplications(_0x3ddcc9,_0x3ddcc9[_0xfaec('0x14')],_0x51f8eb));}return _0x19840a(_0x28c1be);}return _0x19840a([]);})['catch'](function(_0xb8dcaf){_0x3b2a0f(_0xb8dcaf);});});};module[_0xfaec('0x24')]=function(_0x165c1b,_0x50547c){var _0x27f265=_0x165c1b[_0xfaec('0x25')];return _0x165c1b['define'](_0xfaec('0x26'),attributes,{'tableName':_0xfaec('0x27'),'charset':'utf8','collate':_0xfaec('0x28'),'hooks':{'beforeCreate':function(_0x1aaabf,_0x3d165d,_0x4032cc){_0x1aaabf[_0xfaec('0x29')]();_0x1aaabf['updatePassword'](_0x4032cc);},'beforeUpdate':function(_0x3cd0d9,_0x150775,_0x36a7fa){if(_0x3cd0d9['changed'](_0xfaec('0x11'))){_0x3cd0d9[_0xfaec('0x29')]();return _0x3cd0d9['updatePassword'](_0x36a7fa);}_0x36a7fa();},'afterCreate':function(_0x29596a,_0x169c3e,_0x4b151d){var _0x58b2b3=getUserApplications(_0x29596a,_0x29596a['internal']);if(_0x29596a[_0xfaec('0x23')]!=_0x29596a['name']){_0x58b2b3=_0x58b2b3[_0xfaec('0x2a')](getUserApplications(_0x29596a,_0x29596a[_0xfaec('0x14')]));}return _0x27f265[_0xfaec('0x2b')][_0xfaec('0x2c')](_0x58b2b3)[_0xfaec('0x2d')](function(){if(_0x29596a[_0xfaec('0x2e')]){return getChanSpyPromise(_0x27f265,_0x29596a);}})[_0xfaec('0x2d')](function(_0x46859f){if(_0x46859f&&_0x46859f[_0xfaec('0x5')]){return _0x27f265[_0xfaec('0x2b')]['bulkCreate'](_0x46859f);}})[_0xfaec('0x2d')](function(){_0x4b151d();})[_0xfaec('0x2f')](function(_0x1e8b81){_0x4b151d(_0x1e8b81);});},'afterUpdate':function(_0x2ee03c,_0x5cb72e,_0x52a97d){return BPromise[_0xfaec('0x30')]()['then'](function(){if(_0x2ee03c[_0xfaec('0x31')](_0xfaec('0x2e'))||_0x2ee03c[_0xfaec('0x31')](_0xfaec('0x6'))){return _0x27f265['VoiceExtension'][_0xfaec('0x32')]({'where':{'UserId':_0x2ee03c['id'],'type':_0xfaec('0x18'),'ChanSpyId':{'$ne':null}}})[_0xfaec('0x2d')](function(){if(_0x2ee03c['chanspy']){return getChanSpyPromise(_0x27f265,_0x2ee03c)['then'](function(_0x5d9932){if(_0x5d9932&&_0x5d9932[_0xfaec('0x5')]){return _0x27f265['VoiceExtension'][_0xfaec('0x2c')](_0x5d9932);}});}});}})['then'](function(){if(_0x2ee03c['changed']('extensionMonitor')||_0x2ee03c[_0xfaec('0x31')](_0xfaec('0x6'))){return _0x27f265[_0xfaec('0x2b')][_0xfaec('0x32')]({'where':{'UserId':_0x2ee03c['id'],'type':_0xfaec('0x18'),'ChanSpyId':null}})[_0xfaec('0x2d')](function(){var _0x30fd1f=getUserApplications(_0x2ee03c,_0x2ee03c[_0xfaec('0x23')]);if(_0x2ee03c['internal']!=_0x2ee03c[_0xfaec('0x14')]){_0x30fd1f=_0x30fd1f['concat'](getUserApplications(_0x2ee03c,_0x2ee03c[_0xfaec('0x14')]));}return _0x27f265['VoiceExtension'][_0xfaec('0x2c')](_0x30fd1f);});}})['then'](function(){_0x52a97d();})[_0xfaec('0x2f')](function(_0x34561d){_0x52a97d(_0x34561d);});},'afterDestroy':function(_0x472bed,_0x57a5c4){return _0x27f265[_0xfaec('0x2b')]['destroy']({'where':{'UserId':_0x472bed['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x350632,_0x587bd4){if(!_0x587bd4){return this[_0xfaec('0x11')]===this[_0xfaec('0x33')](_0x350632);}var _0x306130=this;this[_0xfaec('0x33')](_0x350632,function(_0x89b24f,_0x35abc9){if(_0x89b24f){_0x587bd4(_0x89b24f);}if(_0x306130['password']===_0x35abc9){_0x587bd4(null,!![]);}else{_0x587bd4(null,![]);}});},'makeSalt':function(_0x33cd59,_0x5e6cb6){var _0x1aa817=0x10;if(typeof arguments[0x0]==='function'){_0x5e6cb6=arguments[0x0];_0x33cd59=_0x1aa817;}else if(typeof arguments[0x1]===_0xfaec('0x34')){_0x5e6cb6=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x33cd59){_0x33cd59=_0x1aa817;}return crypto['randomBytes'](_0x33cd59,function(_0x5c5fdc,_0xfd879d){if(_0x5c5fdc){_0x5e6cb6(_0x5c5fdc);}return _0x5e6cb6(null,_0xfd879d[_0xfaec('0x35')](_0xfaec('0x36')));});},'encryptPassword':function(_0x15605d,_0x3d9713){if(!_0x15605d||!this[_0xfaec('0x37')]){return _0x3d9713?_0x3d9713(null):null;}var _0xd24076=0x2710;var _0x312b95=0x40;var _0x5b23ba=new Buffer(this[_0xfaec('0x37')],'base64');if(!_0x3d9713){return crypto[_0xfaec('0x38')](_0x15605d,_0x5b23ba,_0xd24076,_0x312b95,_0xfaec('0x39'))[_0xfaec('0x35')](_0xfaec('0x36'));}return crypto['pbkdf2'](_0x15605d,_0x5b23ba,_0xd24076,_0x312b95,_0xfaec('0x39'),function(_0x1fd2ff,_0x13aab4){if(_0x1fd2ff){_0x3d9713(_0x1fd2ff);}return _0x3d9713(null,_0x13aab4['toString'](_0xfaec('0x36')));});},'updatePassword':function(_0x1c71b9){if(!this[_0xfaec('0x11')]){return _0x1c71b9(null);}if(!validatePresenceOf(this[_0xfaec('0x11')])&&authTypes[_0xfaec('0x3a')](this[_0xfaec('0x3b')])===-0x1){_0x1c71b9(new Error(_0xfaec('0x3c')));}var _0x465bfd=this;this[_0xfaec('0x3d')](function(_0x38d6ff,_0x591d02){if(_0x38d6ff){return _0x1c71b9(_0x38d6ff);}_0x465bfd[_0xfaec('0x37')]=_0x591d02;_0x465bfd['encryptPassword'](_0x465bfd[_0xfaec('0x11')],function(_0x369932,_0x593c98){if(_0x369932){_0x1c71b9(_0x369932);}_0x465bfd['password']=_0x593c98;_0x1c71b9(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this['name']+_0xfaec('0x3e')+this[_0xfaec('0x11')]);return this[_0xfaec('0x3f')];}}});};