Built motion from commit db94841.|2.5.3
[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 _0x3f5f=['then','resolve','VoiceExtension','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','pbkdf2Sync','sha1','pbkdf2','toString','Invalid\x20password','md5secret',':asterisk:','bluebird','crypto','util','md5','lodash','./user.attributes','length','context','from-sip','system','format','%s%s','prefix','Set','chanspy','record','merge','MixMonitor','${UNIQUEID}.%s,a','push','SIP/%s,%s','options','join','StopMixMonitor','WAV','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','SIP/%s,,tTxX','defaults','VoiceChanSpy','findAll','internal','concat','catch','exports','models','define','User','users','updateMd5Password','updatePassword','changed','password','bulkCreate'];(function(_0x3740fe,_0x6c543c){var _0x55492b=function(_0x1f851f){while(--_0x1f851f){_0x3740fe['push'](_0x3740fe['shift']());}};_0x55492b(++_0x6c543c);}(_0x3f5f,0x93));var _0xf3f5=function(_0x5800a5,_0x2823f6){_0x5800a5=_0x5800a5-0x0;var _0x420c85=_0x3f5f[_0x5800a5];return _0x420c85;};'use strict';var BPromise=require(_0xf3f5('0x0'));var crypto=require(_0xf3f5('0x1'));var util=require(_0xf3f5('0x2'));var md5=require(_0xf3f5('0x3'));var _=require(_0xf3f5('0x4'));var attributes=require(_0xf3f5('0x5'));var authTypes=['google'];var validatePresenceOf=function(_0x37c36c){return _0x37c36c&&_0x37c36c[_0xf3f5('0x6')];};var getChanSpyApplications=function(_0xda775a,_0x1abf7c,_0x54abed){var _0x4d4a89={'context':_0xda775a[_0xf3f5('0x7')]||_0xf3f5('0x8'),'type':_0xf3f5('0x9'),'isApp':![],'UserId':_0xda775a['id']};var _0x481a31=[];for(var _0x20f34b=0x0,_0x5b50a2=0x1;_0x20f34b<_0x54abed[_0xf3f5('0x6')];_0x20f34b++,_0x5b50a2=0x1){var _0x1ea9dd={'exten':util[_0xf3f5('0xa')](_0xf3f5('0xb'),_0x54abed[_0x20f34b][_0xf3f5('0xc')],_0x1abf7c),'ChanSpyId':_0x54abed[_0x20f34b]['id']};_0x481a31['push'](_['merge']({'app':_0xf3f5('0xd'),'appdata':util['format']('CDR(type)=%s',_0xf3f5('0xe')),'priority':_0x5b50a2++},_0x4d4a89,_0x1ea9dd));if(_0x54abed[_0x20f34b][_0xf3f5('0xf')]){_0x481a31['push'](_[_0xf3f5('0x10')]({'app':_0xf3f5('0x11'),'appdata':util[_0xf3f5('0xa')](_0xf3f5('0x12'),_0x54abed[_0x20f34b]['recordingFormat']),'priority':_0x5b50a2++},_0x4d4a89,_0x1ea9dd));}if(_0x54abed[_0x20f34b]['auth']){_0x481a31[_0xf3f5('0x13')](_[_0xf3f5('0x10')]({'app':'Authenticate','appdata':_0x54abed[_0x20f34b]['password'],'priority':_0x5b50a2++},_0x4d4a89,_0x1ea9dd));}_0x481a31[_0xf3f5('0x13')](_[_0xf3f5('0x10')]({'app':'ChanSpy','appdata':util[_0xf3f5('0xa')](_0xf3f5('0x14'),_0xda775a['name'],_0x54abed[_0x20f34b][_0xf3f5('0x15')]?_0x54abed[_0x20f34b][_0xf3f5('0x15')][_0xf3f5('0x16')](''):''),'priority':_0x5b50a2++},_0x4d4a89,_0x1ea9dd));if(_0x54abed[_0x20f34b][_0xf3f5('0xf')]){_0x481a31['push'](_['merge']({'app':_0xf3f5('0x17'),'priority':_0x5b50a2++},_0x4d4a89,_0x1ea9dd));}}return _0x481a31;};var getUserApplications=function(_0x1f8bd2,_0x5d51f1){var _0xb0d0e6=['wav',_0xf3f5('0x18'),'gsm'];var _0x29b2fd={'context':_0x1f8bd2['context']||_0xf3f5('0x8'),'exten':_0x5d51f1,'type':_0xf3f5('0x9'),'isApp':![],'UserId':_0x1f8bd2['id']};var _0x5cb914=[{'app':_0xf3f5('0xd'),'appdata':_0xf3f5('0x19')}];if(_0x1f8bd2[_0xf3f5('0x1a')]&&_['includes'](_0xb0d0e6,_0x1f8bd2['extensionMonitor'])){_0x5cb914[_0xf3f5('0x13')]({'app':_0xf3f5('0xd'),'appdata':_0xf3f5('0x1b')});_0x5cb914[_0xf3f5('0x13')]({'app':_0xf3f5('0xd'),'appdata':util[_0xf3f5('0xa')](_0xf3f5('0x1c'),_0x1f8bd2[_0xf3f5('0x1a')])});_0x5cb914[_0xf3f5('0x13')]({'app':'Dial','appdata':util['format'](_0xf3f5('0x1d'),_0x1f8bd2[_0xf3f5('0x1e')])});}else{_0x5cb914['push']({'app':'Dial','appdata':util[_0xf3f5('0xa')](_0xf3f5('0x1f'),_0x1f8bd2[_0xf3f5('0x1e')])});}_0x5cb914[_0xf3f5('0x13')]({'app':'Hangup'});for(var _0x21917b=0x0;_0x21917b<_0x5cb914[_0xf3f5('0x6')];_0x21917b++){_0x5cb914[_0x21917b]['priority']=_0x21917b+0x1;_0x5cb914[_0x21917b]=_[_0xf3f5('0x20')](_0x5cb914[_0x21917b],_0x29b2fd);}return _0x5cb914;};var getChanSpyPromise=function(_0x1909fc,_0x2ee71e){return new BPromise(function(_0x4012b2,_0x43de67){return _0x1909fc[_0xf3f5('0x21')][_0xf3f5('0x22')]()['then'](function(_0x2c84eb){if(_0x2c84eb){var _0x12ee09=getChanSpyApplications(_0x2ee71e,_0x2ee71e[_0xf3f5('0x23')],_0x2c84eb);if(_0x2ee71e[_0xf3f5('0x23')]!=_0x2ee71e[_0xf3f5('0x1e')]){_0x12ee09=_0x12ee09[_0xf3f5('0x24')](getChanSpyApplications(_0x2ee71e,_0x2ee71e[_0xf3f5('0x1e')],_0x2c84eb));}return _0x4012b2(_0x12ee09);}return _0x4012b2([]);})[_0xf3f5('0x25')](function(_0x5a1459){_0x43de67(_0x5a1459);});});};module[_0xf3f5('0x26')]=function(_0xba9f78,_0x3dcc62){var _0x2aa1ac=_0xba9f78[_0xf3f5('0x27')];return _0xba9f78[_0xf3f5('0x28')](_0xf3f5('0x29'),attributes,{'tableName':_0xf3f5('0x2a'),'charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0xbc8d57,_0x7ddab8,_0x56399c){_0xbc8d57[_0xf3f5('0x2b')]();_0xbc8d57[_0xf3f5('0x2c')](_0x56399c);},'beforeUpdate':function(_0x55a2b6,_0x4755af,_0x149660){if(_0x55a2b6[_0xf3f5('0x2d')](_0xf3f5('0x2e'))){_0x55a2b6[_0xf3f5('0x2b')]();return _0x55a2b6['updatePassword'](_0x149660);}_0x149660();},'afterCreate':function(_0x481b0b,_0x11b83a,_0x4da6c9){var _0x560fb5=getUserApplications(_0x481b0b,_0x481b0b[_0xf3f5('0x23')]);if(_0x481b0b[_0xf3f5('0x23')]!=_0x481b0b['name']){_0x560fb5=_0x560fb5['concat'](getUserApplications(_0x481b0b,_0x481b0b[_0xf3f5('0x1e')]));}return _0x2aa1ac['VoiceExtension'][_0xf3f5('0x2f')](_0x560fb5)['then'](function(){if(_0x481b0b[_0xf3f5('0xe')]){return getChanSpyPromise(_0x2aa1ac,_0x481b0b);}})[_0xf3f5('0x30')](function(_0x4bf7a7){if(_0x4bf7a7&&_0x4bf7a7[_0xf3f5('0x6')]){return _0x2aa1ac['VoiceExtension'][_0xf3f5('0x2f')](_0x4bf7a7);}})[_0xf3f5('0x30')](function(){_0x4da6c9();})[_0xf3f5('0x25')](function(_0x55bc52){_0x4da6c9(_0x55bc52);});},'afterUpdate':function(_0x3deb77,_0x54b5bb,_0x1b4e16){return BPromise[_0xf3f5('0x31')]()[_0xf3f5('0x30')](function(){if(_0x3deb77['changed'](_0xf3f5('0xe'))||_0x3deb77[_0xf3f5('0x2d')](_0xf3f5('0x7'))){return _0x2aa1ac[_0xf3f5('0x32')][_0xf3f5('0x33')]({'where':{'UserId':_0x3deb77['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xf3f5('0x30')](function(){if(_0x3deb77['chanspy']){return getChanSpyPromise(_0x2aa1ac,_0x3deb77)[_0xf3f5('0x30')](function(_0x5ed452){if(_0x5ed452&&_0x5ed452['length']){return _0x2aa1ac[_0xf3f5('0x32')][_0xf3f5('0x2f')](_0x5ed452);}});}});}})[_0xf3f5('0x30')](function(){if(_0x3deb77[_0xf3f5('0x2d')](_0xf3f5('0x1a'))||_0x3deb77[_0xf3f5('0x2d')](_0xf3f5('0x7'))){return _0x2aa1ac[_0xf3f5('0x32')][_0xf3f5('0x33')]({'where':{'UserId':_0x3deb77['id'],'type':'system','ChanSpyId':null}})[_0xf3f5('0x30')](function(){var _0x3d69cf=getUserApplications(_0x3deb77,_0x3deb77[_0xf3f5('0x23')]);if(_0x3deb77[_0xf3f5('0x23')]!=_0x3deb77[_0xf3f5('0x1e')]){_0x3d69cf=_0x3d69cf['concat'](getUserApplications(_0x3deb77,_0x3deb77[_0xf3f5('0x1e')]));}return _0x2aa1ac[_0xf3f5('0x32')]['bulkCreate'](_0x3d69cf);});}})['then'](function(){_0x1b4e16();})['catch'](function(_0x1ae85d){_0x1b4e16(_0x1ae85d);});},'afterDestroy':function(_0x48c950,_0x537ee9){return _0x2aa1ac[_0xf3f5('0x32')]['destroy']({'where':{'UserId':_0x48c950['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x4cd389,_0x445c65){if(!_0x445c65){return this[_0xf3f5('0x2e')]===this[_0xf3f5('0x34')](_0x4cd389);}var _0x4cbf23=this;this[_0xf3f5('0x34')](_0x4cd389,function(_0x535da3,_0x2e3924){if(_0x535da3){_0x445c65(_0x535da3);}if(_0x4cbf23[_0xf3f5('0x2e')]===_0x2e3924){_0x445c65(null,!![]);}else{_0x445c65(null,![]);}});},'makeSalt':function(_0x4699af,_0x834372){var _0x4fe537=0x10;if(typeof arguments[0x0]===_0xf3f5('0x35')){_0x834372=arguments[0x0];_0x4699af=_0x4fe537;}else if(typeof arguments[0x1]===_0xf3f5('0x35')){_0x834372=arguments[0x1];}else{throw new Error(_0xf3f5('0x36'));}if(!_0x4699af){_0x4699af=_0x4fe537;}return crypto[_0xf3f5('0x37')](_0x4699af,function(_0x40c918,_0x588b10){if(_0x40c918){_0x834372(_0x40c918);}return _0x834372(null,_0x588b10['toString'](_0xf3f5('0x38')));});},'encryptPassword':function(_0x38e3a8,_0x3c42d0){if(!_0x38e3a8||!this[_0xf3f5('0x39')]){return _0x3c42d0?_0x3c42d0(null):null;}var _0x4eaa7f=0x2710;var _0x40d4c3=0x40;var _0x30ba4a=new Buffer(this[_0xf3f5('0x39')],_0xf3f5('0x38'));if(!_0x3c42d0){return crypto[_0xf3f5('0x3a')](_0x38e3a8,_0x30ba4a,_0x4eaa7f,_0x40d4c3,_0xf3f5('0x3b'))['toString'](_0xf3f5('0x38'));}return crypto[_0xf3f5('0x3c')](_0x38e3a8,_0x30ba4a,_0x4eaa7f,_0x40d4c3,'sha1',function(_0x48247c,_0x2905a7){if(_0x48247c){_0x3c42d0(_0x48247c);}return _0x3c42d0(null,_0x2905a7[_0xf3f5('0x3d')]('base64'));});},'updatePassword':function(_0x203581){if(!this[_0xf3f5('0x2e')]){return _0x203581(null);}if(!validatePresenceOf(this[_0xf3f5('0x2e')])&&authTypes['indexOf'](this['provider'])===-0x1){_0x203581(new Error(_0xf3f5('0x3e')));}var _0x1a7c94=this;this['makeSalt'](function(_0x508e48,_0x23c84c){if(_0x508e48){return _0x203581(_0x508e48);}_0x1a7c94[_0xf3f5('0x39')]=_0x23c84c;_0x1a7c94['encryptPassword'](_0x1a7c94[_0xf3f5('0x2e')],function(_0x3df981,_0x13f4b1){if(_0x3df981){_0x203581(_0x3df981);}_0x1a7c94[_0xf3f5('0x2e')]=_0x13f4b1;_0x203581(null);});});},'updateMd5Password':function(){this[_0xf3f5('0x3f')]=md5(this['name']+_0xf3f5('0x40')+this[_0xf3f5('0x2e')]);return this['md5secret'];}}});};