Built motion from commit (unavailable).|2.5.29
[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 _0xb1c1=['VoiceChanSpy','findAll','then','internal','concat','catch','exports','define','User','users','utf8','utf8_bin','resolve','UserProfile','find','userProfileId','privacyEnabled','updatePassword','changed','updateMd5Password','VoiceExtension','bulkCreate','destroy','encryptPassword','function','toString','base64','sha1','pbkdf2','provider','Invalid\x20password','makeSalt','salt','md5secret',':asterisk:','bluebird','crypto','md5','./user.attributes','google','length','from-sip','system','format','%s%s','prefix','push','Set','CDR(type)=%s','chanspy','merge','MixMonitor','${UNIQUEID}.%s,a','password','options','join','record','wav','context','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','SIP/%s,,tTxX','Hangup','defaults'];(function(_0x37e7a4,_0xb7a496){var _0x269b2a=function(_0x19ee3f){while(--_0x19ee3f){_0x37e7a4['push'](_0x37e7a4['shift']());}};_0x269b2a(++_0xb7a496);}(_0xb1c1,0x1c7));var _0x1b1c=function(_0x5d9568,_0x253de2){_0x5d9568=_0x5d9568-0x0;var _0x1b093d=_0xb1c1[_0x5d9568];return _0x1b093d;};'use strict';var BPromise=require(_0x1b1c('0x0'));var crypto=require(_0x1b1c('0x1'));var util=require('util');var md5=require(_0x1b1c('0x2'));var _=require('lodash');var attributes=require(_0x1b1c('0x3'));var authTypes=[_0x1b1c('0x4')];var validatePresenceOf=function(_0x1f190f){return _0x1f190f&&_0x1f190f[_0x1b1c('0x5')];};var getChanSpyApplications=function(_0x3b9718,_0x44d8ee,_0x599336){var _0x1f0dad={'context':_0x3b9718['context']||_0x1b1c('0x6'),'type':_0x1b1c('0x7'),'isApp':![],'UserId':_0x3b9718['id']};var _0x377724=[];for(var _0x3ff7e8=0x0,_0x2a394c=0x1;_0x3ff7e8<_0x599336[_0x1b1c('0x5')];_0x3ff7e8++,_0x2a394c=0x1){var _0x50df53={'exten':util[_0x1b1c('0x8')](_0x1b1c('0x9'),_0x599336[_0x3ff7e8][_0x1b1c('0xa')],_0x44d8ee),'ChanSpyId':_0x599336[_0x3ff7e8]['id']};_0x377724[_0x1b1c('0xb')](_['merge']({'app':_0x1b1c('0xc'),'appdata':util[_0x1b1c('0x8')](_0x1b1c('0xd'),_0x1b1c('0xe')),'priority':_0x2a394c++},_0x1f0dad,_0x50df53));if(_0x599336[_0x3ff7e8]['record']){_0x377724[_0x1b1c('0xb')](_[_0x1b1c('0xf')]({'app':_0x1b1c('0x10'),'appdata':util[_0x1b1c('0x8')](_0x1b1c('0x11'),_0x599336[_0x3ff7e8]['recordingFormat']),'priority':_0x2a394c++},_0x1f0dad,_0x50df53));}if(_0x599336[_0x3ff7e8]['auth']){_0x377724['push'](_[_0x1b1c('0xf')]({'app':'Authenticate','appdata':_0x599336[_0x3ff7e8][_0x1b1c('0x12')],'priority':_0x2a394c++},_0x1f0dad,_0x50df53));}_0x377724[_0x1b1c('0xb')](_['merge']({'app':'ChanSpy','appdata':util[_0x1b1c('0x8')]('SIP/%s,%s',_0x3b9718['name'],_0x599336[_0x3ff7e8][_0x1b1c('0x13')]?_0x599336[_0x3ff7e8][_0x1b1c('0x13')][_0x1b1c('0x14')](''):''),'priority':_0x2a394c++},_0x1f0dad,_0x50df53));if(_0x599336[_0x3ff7e8][_0x1b1c('0x15')]){_0x377724[_0x1b1c('0xb')](_[_0x1b1c('0xf')]({'app':'StopMixMonitor','priority':_0x2a394c++},_0x1f0dad,_0x50df53));}}return _0x377724;};var getUserApplications=function(_0x5aab34,_0x2d272f){var _0x474661=[_0x1b1c('0x16'),'WAV','gsm'];var _0x7d154={'context':_0x5aab34[_0x1b1c('0x17')]||_0x1b1c('0x6'),'exten':_0x2d272f,'type':'system','isApp':![],'UserId':_0x5aab34['id']};var _0x17eb8b=[{'app':_0x1b1c('0xc'),'appdata':_0x1b1c('0x18')}];if(_0x5aab34[_0x1b1c('0x19')]&&_[_0x1b1c('0x1a')](_0x474661,_0x5aab34[_0x1b1c('0x19')])){_0x17eb8b[_0x1b1c('0xb')]({'app':_0x1b1c('0xc'),'appdata':_0x1b1c('0x1b')});_0x17eb8b['push']({'app':_0x1b1c('0xc'),'appdata':util['format'](_0x1b1c('0x1c'),_0x5aab34['extensionMonitor'])});_0x17eb8b['push']({'app':_0x1b1c('0x1d'),'appdata':util[_0x1b1c('0x8')](_0x1b1c('0x1e'),_0x5aab34[_0x1b1c('0x1f')])});}else{_0x17eb8b['push']({'app':_0x1b1c('0x1d'),'appdata':util[_0x1b1c('0x8')](_0x1b1c('0x20'),_0x5aab34[_0x1b1c('0x1f')])});}_0x17eb8b['push']({'app':_0x1b1c('0x21')});for(var _0x4c8ef2=0x0;_0x4c8ef2<_0x17eb8b[_0x1b1c('0x5')];_0x4c8ef2++){_0x17eb8b[_0x4c8ef2]['priority']=_0x4c8ef2+0x1;_0x17eb8b[_0x4c8ef2]=_[_0x1b1c('0x22')](_0x17eb8b[_0x4c8ef2],_0x7d154);}return _0x17eb8b;};var getChanSpyPromise=function(_0x1dec58,_0x14c04b){return new BPromise(function(_0x2c10d4,_0x1c9cad){return _0x1dec58[_0x1b1c('0x23')][_0x1b1c('0x24')]()[_0x1b1c('0x25')](function(_0x1408d3){if(_0x1408d3){var _0x42aa29=getChanSpyApplications(_0x14c04b,_0x14c04b[_0x1b1c('0x26')],_0x1408d3);if(_0x14c04b['internal']!=_0x14c04b[_0x1b1c('0x1f')]){_0x42aa29=_0x42aa29[_0x1b1c('0x27')](getChanSpyApplications(_0x14c04b,_0x14c04b[_0x1b1c('0x1f')],_0x1408d3));}return _0x2c10d4(_0x42aa29);}return _0x2c10d4([]);})[_0x1b1c('0x28')](function(_0x3e1e61){_0x1c9cad(_0x3e1e61);});});};module[_0x1b1c('0x29')]=function(_0x1bde3a,_0x20e613){var _0x1ad9f7=_0x1bde3a['models'];return _0x1bde3a[_0x1b1c('0x2a')](_0x1b1c('0x2b'),attributes,{'tableName':_0x1b1c('0x2c'),'charset':_0x1b1c('0x2d'),'collate':_0x1b1c('0x2e'),'hooks':{'beforeCreate':function(_0x31d314,_0x4d7a72,_0x24a5b5){var _0x402b1c=typeof _0x31d314['userProfileId']==='undefined'?BPromise[_0x1b1c('0x2f')](null):_0x1ad9f7[_0x1b1c('0x30')][_0x1b1c('0x31')]({'where':{'id':_0x31d314[_0x1b1c('0x32')]}});_0x402b1c['then'](function(_0x6260f0){if(_0x6260f0){_0x31d314[_0x1b1c('0x33')]=_0x6260f0['privacyEnabled'];}})[_0x1b1c('0x25')](function(){_0x31d314['updateMd5Password']();_0x31d314[_0x1b1c('0x34')](_0x24a5b5);})[_0x1b1c('0x28')](function(_0x99ab0a){_0x24a5b5(_0x99ab0a);});},'beforeUpdate':function(_0x175153,_0x407013,_0x792594){Promise[_0x1b1c('0x2f')]()[_0x1b1c('0x25')](function(){if(_0x175153[_0x1b1c('0x35')](_0x1b1c('0x32'))===![])return;return _0x1ad9f7[_0x1b1c('0x30')]['find']({'where':{'id':_0x175153[_0x1b1c('0x32')]}})[_0x1b1c('0x25')](function(_0xbb893d){if(_0xbb893d)_0x175153[_0x1b1c('0x33')]=_0xbb893d[_0x1b1c('0x33')];return;});})[_0x1b1c('0x25')](function(){if(_0x175153['changed'](_0x1b1c('0x12'))){_0x175153[_0x1b1c('0x36')]();return _0x175153[_0x1b1c('0x34')](_0x792594);}_0x792594();})['catch'](function(_0x2b667e){_0x792594(_0x2b667e);});},'afterCreate':function(_0xd8e30,_0x2f32c4,_0x2adcc9){var _0x52f6fe=getUserApplications(_0xd8e30,_0xd8e30[_0x1b1c('0x26')]);if(_0xd8e30[_0x1b1c('0x26')]!=_0xd8e30[_0x1b1c('0x1f')]){_0x52f6fe=_0x52f6fe['concat'](getUserApplications(_0xd8e30,_0xd8e30['name']));}return _0x1ad9f7[_0x1b1c('0x37')][_0x1b1c('0x38')](_0x52f6fe)[_0x1b1c('0x25')](function(){if(_0xd8e30[_0x1b1c('0xe')]){return getChanSpyPromise(_0x1ad9f7,_0xd8e30);}})[_0x1b1c('0x25')](function(_0x25376b){if(_0x25376b&&_0x25376b[_0x1b1c('0x5')]){return _0x1ad9f7[_0x1b1c('0x37')][_0x1b1c('0x38')](_0x25376b);}})[_0x1b1c('0x25')](function(){_0x2adcc9();})['catch'](function(_0x58b0bc){_0x2adcc9(_0x58b0bc);});},'afterUpdate':function(_0x1e88bb,_0xe1c304,_0x38e4de){return BPromise['resolve']()[_0x1b1c('0x25')](function(){if(_0x1e88bb[_0x1b1c('0x35')]('chanspy')||_0x1e88bb[_0x1b1c('0x35')]('context')){return _0x1ad9f7[_0x1b1c('0x37')][_0x1b1c('0x39')]({'where':{'UserId':_0x1e88bb['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x1b1c('0x25')](function(){if(_0x1e88bb[_0x1b1c('0xe')]){return getChanSpyPromise(_0x1ad9f7,_0x1e88bb)[_0x1b1c('0x25')](function(_0x35ba0f){if(_0x35ba0f&&_0x35ba0f['length']){return _0x1ad9f7[_0x1b1c('0x37')][_0x1b1c('0x38')](_0x35ba0f);}});}});}})[_0x1b1c('0x25')](function(){if(_0x1e88bb[_0x1b1c('0x35')]('extensionMonitor')||_0x1e88bb['changed'](_0x1b1c('0x17'))){return _0x1ad9f7[_0x1b1c('0x37')]['destroy']({'where':{'UserId':_0x1e88bb['id'],'type':'system','ChanSpyId':null}})[_0x1b1c('0x25')](function(){var _0x2dcea5=getUserApplications(_0x1e88bb,_0x1e88bb[_0x1b1c('0x26')]);if(_0x1e88bb['internal']!=_0x1e88bb[_0x1b1c('0x1f')]){_0x2dcea5=_0x2dcea5['concat'](getUserApplications(_0x1e88bb,_0x1e88bb[_0x1b1c('0x1f')]));}return _0x1ad9f7[_0x1b1c('0x37')][_0x1b1c('0x38')](_0x2dcea5);});}})[_0x1b1c('0x25')](function(){_0x38e4de();})[_0x1b1c('0x28')](function(_0x3257ad){_0x38e4de(_0x3257ad);});},'afterDestroy':function(_0x1f404e,_0x3c6e5b){return _0x1ad9f7['VoiceExtension'][_0x1b1c('0x39')]({'where':{'UserId':_0x1f404e['id'],'type':_0x1b1c('0x7')}});}},'instanceMethods':{'authenticate':function(_0x23c778,_0x428762){if(!_0x428762){return this[_0x1b1c('0x12')]===this[_0x1b1c('0x3a')](_0x23c778);}var _0x1d54d0=this;this[_0x1b1c('0x3a')](_0x23c778,function(_0x2cbec9,_0x1616d5){if(_0x2cbec9){_0x428762(_0x2cbec9);}if(_0x1d54d0[_0x1b1c('0x12')]===_0x1616d5){_0x428762(null,!![]);}else{_0x428762(null,![]);}});},'makeSalt':function(_0x585a35,_0x8ad7a8){var _0x3ca51d=0x10;if(typeof arguments[0x0]===_0x1b1c('0x3b')){_0x8ad7a8=arguments[0x0];_0x585a35=_0x3ca51d;}else if(typeof arguments[0x1]===_0x1b1c('0x3b')){_0x8ad7a8=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x585a35){_0x585a35=_0x3ca51d;}return crypto['randomBytes'](_0x585a35,function(_0x4cc99e,_0x3a00df){if(_0x4cc99e){_0x8ad7a8(_0x4cc99e);}return _0x8ad7a8(null,_0x3a00df[_0x1b1c('0x3c')](_0x1b1c('0x3d')));});},'encryptPassword':function(_0xb423c4,_0x337900){if(!_0xb423c4||!this['salt']){return _0x337900?_0x337900(null):null;}var _0x234d69=0x2710;var _0x2b9e3c=0x40;var _0x161b23=new Buffer(this['salt'],_0x1b1c('0x3d'));if(!_0x337900){return crypto['pbkdf2Sync'](_0xb423c4,_0x161b23,_0x234d69,_0x2b9e3c,_0x1b1c('0x3e'))[_0x1b1c('0x3c')](_0x1b1c('0x3d'));}return crypto[_0x1b1c('0x3f')](_0xb423c4,_0x161b23,_0x234d69,_0x2b9e3c,_0x1b1c('0x3e'),function(_0x5aec76,_0x1c921d){if(_0x5aec76){_0x337900(_0x5aec76);}return _0x337900(null,_0x1c921d['toString']('base64'));});},'updatePassword':function(_0x646c21){if(!this[_0x1b1c('0x12')]){return _0x646c21(null);}if(!validatePresenceOf(this[_0x1b1c('0x12')])&&authTypes['indexOf'](this[_0x1b1c('0x40')])===-0x1){_0x646c21(new Error(_0x1b1c('0x41')));}var _0x52a520=this;this[_0x1b1c('0x42')](function(_0x3d264e,_0x222086){if(_0x3d264e){return _0x646c21(_0x3d264e);}_0x52a520[_0x1b1c('0x43')]=_0x222086;_0x52a520[_0x1b1c('0x3a')](_0x52a520[_0x1b1c('0x12')],function(_0x224880,_0x4399a2){if(_0x224880){_0x646c21(_0x224880);}_0x52a520[_0x1b1c('0x12')]=_0x4399a2;_0x646c21(null);});});},'updateMd5Password':function(){this[_0x1b1c('0x44')]=md5(this['name']+_0x1b1c('0x45')+this[_0x1b1c('0x12')]);return this[_0x1b1c('0x44')];}}});};