Built motion from commit (unavailable).|2.5.9
[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 _0x9aa8=['gsm','from-sip','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','SIP/%s,,tTxX','name','VoiceChanSpy','then','internal','concat','catch','exports','User','users','utf8','utf8_bin','updateMd5Password','changed','VoiceExtension','bulkCreate','resolve','destroy','encryptPassword','randomBytes','base64','salt','pbkdf2Sync','toString','pbkdf2','sha1','indexOf','provider','Invalid\x20password','md5secret',':asterisk:','bluebird','md5','lodash','./user.attributes','google','length','context','system','format','%s%s','prefix','push','Set','CDR(type)=%s','chanspy','record','merge','${UNIQUEID}.%s,a','Authenticate','password','ChanSpy','SIP/%s,%s','options','join','wav','WAV'];(function(_0x8715c3,_0x385b87){var _0x420dc5=function(_0xc1b285){while(--_0xc1b285){_0x8715c3['push'](_0x8715c3['shift']());}};_0x420dc5(++_0x385b87);}(_0x9aa8,0x12b));var _0x89aa=function(_0x2694bb,_0x4d41d3){_0x2694bb=_0x2694bb-0x0;var _0x5c50a4=_0x9aa8[_0x2694bb];return _0x5c50a4;};'use strict';var BPromise=require(_0x89aa('0x0'));var crypto=require('crypto');var util=require('util');var md5=require(_0x89aa('0x1'));var _=require(_0x89aa('0x2'));var attributes=require(_0x89aa('0x3'));var authTypes=[_0x89aa('0x4')];var validatePresenceOf=function(_0x289e2c){return _0x289e2c&&_0x289e2c[_0x89aa('0x5')];};var getChanSpyApplications=function(_0x133cc7,_0x1b6065,_0x5e9c5c){var _0x57ba0d={'context':_0x133cc7[_0x89aa('0x6')]||'from-sip','type':_0x89aa('0x7'),'isApp':![],'UserId':_0x133cc7['id']};var _0x740a5a=[];for(var _0x2252f6=0x0,_0xb931c8=0x1;_0x2252f6<_0x5e9c5c[_0x89aa('0x5')];_0x2252f6++,_0xb931c8=0x1){var _0x57d076={'exten':util[_0x89aa('0x8')](_0x89aa('0x9'),_0x5e9c5c[_0x2252f6][_0x89aa('0xa')],_0x1b6065),'ChanSpyId':_0x5e9c5c[_0x2252f6]['id']};_0x740a5a[_0x89aa('0xb')](_['merge']({'app':_0x89aa('0xc'),'appdata':util[_0x89aa('0x8')](_0x89aa('0xd'),_0x89aa('0xe')),'priority':_0xb931c8++},_0x57ba0d,_0x57d076));if(_0x5e9c5c[_0x2252f6][_0x89aa('0xf')]){_0x740a5a[_0x89aa('0xb')](_[_0x89aa('0x10')]({'app':'MixMonitor','appdata':util[_0x89aa('0x8')](_0x89aa('0x11'),_0x5e9c5c[_0x2252f6]['recordingFormat']),'priority':_0xb931c8++},_0x57ba0d,_0x57d076));}if(_0x5e9c5c[_0x2252f6]['auth']){_0x740a5a[_0x89aa('0xb')](_['merge']({'app':_0x89aa('0x12'),'appdata':_0x5e9c5c[_0x2252f6][_0x89aa('0x13')],'priority':_0xb931c8++},_0x57ba0d,_0x57d076));}_0x740a5a[_0x89aa('0xb')](_['merge']({'app':_0x89aa('0x14'),'appdata':util[_0x89aa('0x8')](_0x89aa('0x15'),_0x133cc7['name'],_0x5e9c5c[_0x2252f6][_0x89aa('0x16')]?_0x5e9c5c[_0x2252f6][_0x89aa('0x16')][_0x89aa('0x17')](''):''),'priority':_0xb931c8++},_0x57ba0d,_0x57d076));if(_0x5e9c5c[_0x2252f6][_0x89aa('0xf')]){_0x740a5a['push'](_[_0x89aa('0x10')]({'app':'StopMixMonitor','priority':_0xb931c8++},_0x57ba0d,_0x57d076));}}return _0x740a5a;};var getUserApplications=function(_0xc43c6c,_0x12555f){var _0x4d8b8d=[_0x89aa('0x18'),_0x89aa('0x19'),_0x89aa('0x1a')];var _0x3053f2={'context':_0xc43c6c['context']||_0x89aa('0x1b'),'exten':_0x12555f,'type':_0x89aa('0x7'),'isApp':![],'UserId':_0xc43c6c['id']};var _0x1f8306=[{'app':_0x89aa('0xc'),'appdata':_0x89aa('0x1c')}];if(_0xc43c6c[_0x89aa('0x1d')]&&_['includes'](_0x4d8b8d,_0xc43c6c[_0x89aa('0x1d')])){_0x1f8306[_0x89aa('0xb')]({'app':_0x89aa('0xc'),'appdata':_0x89aa('0x1e')});_0x1f8306[_0x89aa('0xb')]({'app':_0x89aa('0xc'),'appdata':util['format'](_0x89aa('0x1f'),_0xc43c6c['extensionMonitor'])});_0x1f8306[_0x89aa('0xb')]({'app':'Dial','appdata':util[_0x89aa('0x8')](_0x89aa('0x20'),_0xc43c6c['name'])});}else{_0x1f8306['push']({'app':_0x89aa('0x21'),'appdata':util['format'](_0x89aa('0x22'),_0xc43c6c[_0x89aa('0x23')])});}_0x1f8306[_0x89aa('0xb')]({'app':'Hangup'});for(var _0x493f77=0x0;_0x493f77<_0x1f8306['length'];_0x493f77++){_0x1f8306[_0x493f77]['priority']=_0x493f77+0x1;_0x1f8306[_0x493f77]=_['defaults'](_0x1f8306[_0x493f77],_0x3053f2);}return _0x1f8306;};var getChanSpyPromise=function(_0x1aedb9,_0x243698){return new BPromise(function(_0x59d281,_0x179ca3){return _0x1aedb9[_0x89aa('0x24')]['findAll']()[_0x89aa('0x25')](function(_0x554e29){if(_0x554e29){var _0x21c1b3=getChanSpyApplications(_0x243698,_0x243698[_0x89aa('0x26')],_0x554e29);if(_0x243698[_0x89aa('0x26')]!=_0x243698[_0x89aa('0x23')]){_0x21c1b3=_0x21c1b3[_0x89aa('0x27')](getChanSpyApplications(_0x243698,_0x243698[_0x89aa('0x23')],_0x554e29));}return _0x59d281(_0x21c1b3);}return _0x59d281([]);})[_0x89aa('0x28')](function(_0x3f8f6e){_0x179ca3(_0x3f8f6e);});});};module[_0x89aa('0x29')]=function(_0x165f23,_0x5f36f1){var _0x39cebf=_0x165f23['models'];return _0x165f23['define'](_0x89aa('0x2a'),attributes,{'tableName':_0x89aa('0x2b'),'charset':_0x89aa('0x2c'),'collate':_0x89aa('0x2d'),'hooks':{'beforeCreate':function(_0x5c105f,_0x44f0a1,_0x5141f4){_0x5c105f[_0x89aa('0x2e')]();_0x5c105f['updatePassword'](_0x5141f4);},'beforeUpdate':function(_0x330299,_0x5870f5,_0xe70505){if(_0x330299[_0x89aa('0x2f')](_0x89aa('0x13'))){_0x330299['updateMd5Password']();return _0x330299['updatePassword'](_0xe70505);}_0xe70505();},'afterCreate':function(_0x409812,_0x560c2c,_0x52dd91){var _0x586599=getUserApplications(_0x409812,_0x409812[_0x89aa('0x26')]);if(_0x409812[_0x89aa('0x26')]!=_0x409812[_0x89aa('0x23')]){_0x586599=_0x586599[_0x89aa('0x27')](getUserApplications(_0x409812,_0x409812['name']));}return _0x39cebf[_0x89aa('0x30')][_0x89aa('0x31')](_0x586599)['then'](function(){if(_0x409812['chanspy']){return getChanSpyPromise(_0x39cebf,_0x409812);}})['then'](function(_0x4d35aa){if(_0x4d35aa&&_0x4d35aa[_0x89aa('0x5')]){return _0x39cebf['VoiceExtension'][_0x89aa('0x31')](_0x4d35aa);}})[_0x89aa('0x25')](function(){_0x52dd91();})['catch'](function(_0x8c52d1){_0x52dd91(_0x8c52d1);});},'afterUpdate':function(_0x410689,_0x2f5661,_0x23888b){return BPromise[_0x89aa('0x32')]()[_0x89aa('0x25')](function(){if(_0x410689[_0x89aa('0x2f')](_0x89aa('0xe'))||_0x410689['changed'](_0x89aa('0x6'))){return _0x39cebf['VoiceExtension'][_0x89aa('0x33')]({'where':{'UserId':_0x410689['id'],'type':_0x89aa('0x7'),'ChanSpyId':{'$ne':null}}})[_0x89aa('0x25')](function(){if(_0x410689[_0x89aa('0xe')]){return getChanSpyPromise(_0x39cebf,_0x410689)[_0x89aa('0x25')](function(_0x5a916e){if(_0x5a916e&&_0x5a916e[_0x89aa('0x5')]){return _0x39cebf[_0x89aa('0x30')]['bulkCreate'](_0x5a916e);}});}});}})[_0x89aa('0x25')](function(){if(_0x410689[_0x89aa('0x2f')](_0x89aa('0x1d'))||_0x410689['changed'](_0x89aa('0x6'))){return _0x39cebf[_0x89aa('0x30')][_0x89aa('0x33')]({'where':{'UserId':_0x410689['id'],'type':_0x89aa('0x7'),'ChanSpyId':null}})[_0x89aa('0x25')](function(){var _0x3d35a0=getUserApplications(_0x410689,_0x410689[_0x89aa('0x26')]);if(_0x410689[_0x89aa('0x26')]!=_0x410689['name']){_0x3d35a0=_0x3d35a0['concat'](getUserApplications(_0x410689,_0x410689[_0x89aa('0x23')]));}return _0x39cebf[_0x89aa('0x30')]['bulkCreate'](_0x3d35a0);});}})[_0x89aa('0x25')](function(){_0x23888b();})['catch'](function(_0x46ea6e){_0x23888b(_0x46ea6e);});},'afterDestroy':function(_0x96b70d,_0x39b60f){return _0x39cebf[_0x89aa('0x30')][_0x89aa('0x33')]({'where':{'UserId':_0x96b70d['id'],'type':_0x89aa('0x7')}});}},'instanceMethods':{'authenticate':function(_0x17f77c,_0x4f81e0){if(!_0x4f81e0){return this['password']===this['encryptPassword'](_0x17f77c);}var _0x3888af=this;this[_0x89aa('0x34')](_0x17f77c,function(_0x2f57fa,_0x5473ea){if(_0x2f57fa){_0x4f81e0(_0x2f57fa);}if(_0x3888af[_0x89aa('0x13')]===_0x5473ea){_0x4f81e0(null,!![]);}else{_0x4f81e0(null,![]);}});},'makeSalt':function(_0x177971,_0x1b178e){var _0x54760c=0x10;if(typeof arguments[0x0]==='function'){_0x1b178e=arguments[0x0];_0x177971=_0x54760c;}else if(typeof arguments[0x1]==='function'){_0x1b178e=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x177971){_0x177971=_0x54760c;}return crypto[_0x89aa('0x35')](_0x177971,function(_0x38742f,_0x2acf19){if(_0x38742f){_0x1b178e(_0x38742f);}return _0x1b178e(null,_0x2acf19['toString'](_0x89aa('0x36')));});},'encryptPassword':function(_0x5a8464,_0x2d1957){if(!_0x5a8464||!this[_0x89aa('0x37')]){return _0x2d1957?_0x2d1957(null):null;}var _0x432b33=0x2710;var _0x977fee=0x40;var _0x4901ee=new Buffer(this[_0x89aa('0x37')],_0x89aa('0x36'));if(!_0x2d1957){return crypto[_0x89aa('0x38')](_0x5a8464,_0x4901ee,_0x432b33,_0x977fee,'sha1')[_0x89aa('0x39')]('base64');}return crypto[_0x89aa('0x3a')](_0x5a8464,_0x4901ee,_0x432b33,_0x977fee,_0x89aa('0x3b'),function(_0x27bbd3,_0x354575){if(_0x27bbd3){_0x2d1957(_0x27bbd3);}return _0x2d1957(null,_0x354575['toString']('base64'));});},'updatePassword':function(_0x557e59){if(!this[_0x89aa('0x13')]){return _0x557e59(null);}if(!validatePresenceOf(this[_0x89aa('0x13')])&&authTypes[_0x89aa('0x3c')](this[_0x89aa('0x3d')])===-0x1){_0x557e59(new Error(_0x89aa('0x3e')));}var _0x3656cb=this;this['makeSalt'](function(_0x185073,_0x2052ec){if(_0x185073){return _0x557e59(_0x185073);}_0x3656cb[_0x89aa('0x37')]=_0x2052ec;_0x3656cb[_0x89aa('0x34')](_0x3656cb[_0x89aa('0x13')],function(_0x101859,_0x1e65f7){if(_0x101859){_0x557e59(_0x101859);}_0x3656cb[_0x89aa('0x13')]=_0x1e65f7;_0x557e59(null);});});},'updateMd5Password':function(){this[_0x89aa('0x3f')]=md5(this['name']+_0x89aa('0x40')+this[_0x89aa('0x13')]);return this[_0x89aa('0x3f')];}}});};