Built motion from commit (unavailable).|2.5.31
[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 _0x6ea1=['then','internal','concat','exports','models','User','users','utf8','utf8_bin','userProfileId','undefined','UserProfile','privacyEnabled','updateMd5Password','updatePassword','catch','resolve','changed','find','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','toString','base64','salt','sha1','pbkdf2','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','util','google','length','context','system','format','%s%s','prefix','push','Set','CDR(type)=%s','chanspy','record','merge','MixMonitor','${UNIQUEID}.%s,a','auth','Authenticate','password','options','StopMixMonitor','WAV','from-sip','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','Hangup','defaults','VoiceChanSpy','findAll'];(function(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0x6ea1,0x68));var _0x16ea=function(_0x56e6c6,_0x424c7e){_0x56e6c6=_0x56e6c6-0x0;var _0x24a52b=_0x6ea1[_0x56e6c6];return _0x24a52b;};'use strict';var BPromise=require(_0x16ea('0x0'));var crypto=require('crypto');var util=require(_0x16ea('0x1'));var md5=require('md5');var _=require('lodash');var attributes=require('./user.attributes');var authTypes=[_0x16ea('0x2')];var validatePresenceOf=function(_0x27cf87){return _0x27cf87&&_0x27cf87[_0x16ea('0x3')];};var getChanSpyApplications=function(_0x29544b,_0x5a50de,_0x53f3f4){var _0x37a9b2={'context':_0x29544b[_0x16ea('0x4')]||'from-sip','type':_0x16ea('0x5'),'isApp':![],'UserId':_0x29544b['id']};var _0x2360ae=[];for(var _0x5e11ea=0x0,_0xe71122=0x1;_0x5e11ea<_0x53f3f4['length'];_0x5e11ea++,_0xe71122=0x1){var _0x33d31a={'exten':util[_0x16ea('0x6')](_0x16ea('0x7'),_0x53f3f4[_0x5e11ea][_0x16ea('0x8')],_0x5a50de),'ChanSpyId':_0x53f3f4[_0x5e11ea]['id']};_0x2360ae[_0x16ea('0x9')](_['merge']({'app':_0x16ea('0xa'),'appdata':util[_0x16ea('0x6')](_0x16ea('0xb'),_0x16ea('0xc')),'priority':_0xe71122++},_0x37a9b2,_0x33d31a));if(_0x53f3f4[_0x5e11ea][_0x16ea('0xd')]){_0x2360ae[_0x16ea('0x9')](_[_0x16ea('0xe')]({'app':_0x16ea('0xf'),'appdata':util[_0x16ea('0x6')](_0x16ea('0x10'),_0x53f3f4[_0x5e11ea]['recordingFormat']),'priority':_0xe71122++},_0x37a9b2,_0x33d31a));}if(_0x53f3f4[_0x5e11ea][_0x16ea('0x11')]){_0x2360ae[_0x16ea('0x9')](_[_0x16ea('0xe')]({'app':_0x16ea('0x12'),'appdata':_0x53f3f4[_0x5e11ea][_0x16ea('0x13')],'priority':_0xe71122++},_0x37a9b2,_0x33d31a));}_0x2360ae['push'](_[_0x16ea('0xe')]({'app':'ChanSpy','appdata':util['format']('SIP/%s,%s',_0x29544b['name'],_0x53f3f4[_0x5e11ea][_0x16ea('0x14')]?_0x53f3f4[_0x5e11ea][_0x16ea('0x14')]['join'](''):''),'priority':_0xe71122++},_0x37a9b2,_0x33d31a));if(_0x53f3f4[_0x5e11ea][_0x16ea('0xd')]){_0x2360ae[_0x16ea('0x9')](_[_0x16ea('0xe')]({'app':_0x16ea('0x15'),'priority':_0xe71122++},_0x37a9b2,_0x33d31a));}}return _0x2360ae;};var getUserApplications=function(_0x26b3f8,_0xf59bea){var _0x3dcf06=['wav',_0x16ea('0x16'),'gsm'];var _0x51f1d7={'context':_0x26b3f8[_0x16ea('0x4')]||_0x16ea('0x17'),'exten':_0xf59bea,'type':_0x16ea('0x5'),'isApp':![],'UserId':_0x26b3f8['id']};var _0x1f13a0=[{'app':_0x16ea('0xa'),'appdata':_0x16ea('0x18')}];if(_0x26b3f8[_0x16ea('0x19')]&&_['includes'](_0x3dcf06,_0x26b3f8[_0x16ea('0x19')])){_0x1f13a0[_0x16ea('0x9')]({'app':_0x16ea('0xa'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x1f13a0[_0x16ea('0x9')]({'app':'Set','appdata':util[_0x16ea('0x6')](_0x16ea('0x1a'),_0x26b3f8[_0x16ea('0x19')])});_0x1f13a0[_0x16ea('0x9')]({'app':_0x16ea('0x1b'),'appdata':util[_0x16ea('0x6')](_0x16ea('0x1c'),_0x26b3f8[_0x16ea('0x1d')])});}else{_0x1f13a0[_0x16ea('0x9')]({'app':_0x16ea('0x1b'),'appdata':util['format']('SIP/%s,,tTxX',_0x26b3f8['name'])});}_0x1f13a0[_0x16ea('0x9')]({'app':_0x16ea('0x1e')});for(var _0x3f7fd2=0x0;_0x3f7fd2<_0x1f13a0[_0x16ea('0x3')];_0x3f7fd2++){_0x1f13a0[_0x3f7fd2]['priority']=_0x3f7fd2+0x1;_0x1f13a0[_0x3f7fd2]=_[_0x16ea('0x1f')](_0x1f13a0[_0x3f7fd2],_0x51f1d7);}return _0x1f13a0;};var getChanSpyPromise=function(_0x22bd60,_0x25d5a0){return new BPromise(function(_0x21b63b,_0x1013be){return _0x22bd60[_0x16ea('0x20')][_0x16ea('0x21')]()[_0x16ea('0x22')](function(_0xc6ed3){if(_0xc6ed3){var _0x1f6673=getChanSpyApplications(_0x25d5a0,_0x25d5a0[_0x16ea('0x23')],_0xc6ed3);if(_0x25d5a0[_0x16ea('0x23')]!=_0x25d5a0[_0x16ea('0x1d')]){_0x1f6673=_0x1f6673[_0x16ea('0x24')](getChanSpyApplications(_0x25d5a0,_0x25d5a0['name'],_0xc6ed3));}return _0x21b63b(_0x1f6673);}return _0x21b63b([]);})['catch'](function(_0x3b689b){_0x1013be(_0x3b689b);});});};module[_0x16ea('0x25')]=function(_0x336dee,_0x354e07){var _0x49d6d9=_0x336dee[_0x16ea('0x26')];return _0x336dee['define'](_0x16ea('0x27'),attributes,{'tableName':_0x16ea('0x28'),'charset':_0x16ea('0x29'),'collate':_0x16ea('0x2a'),'hooks':{'beforeCreate':function(_0x1a1b34,_0x43a166,_0xd98421){var _0x1ccac0=typeof _0x1a1b34[_0x16ea('0x2b')]===_0x16ea('0x2c')?BPromise['resolve'](null):_0x49d6d9[_0x16ea('0x2d')]['find']({'where':{'id':_0x1a1b34[_0x16ea('0x2b')]}});_0x1ccac0[_0x16ea('0x22')](function(_0x1224a9){if(_0x1224a9){_0x1a1b34[_0x16ea('0x2e')]=_0x1224a9[_0x16ea('0x2e')];}})[_0x16ea('0x22')](function(){_0x1a1b34[_0x16ea('0x2f')]();_0x1a1b34[_0x16ea('0x30')](_0xd98421);})[_0x16ea('0x31')](function(_0x19fe3e){_0xd98421(_0x19fe3e);});},'beforeUpdate':function(_0x14bb6c,_0x25b1c2,_0x226e44){Promise[_0x16ea('0x32')]()[_0x16ea('0x22')](function(){if(_0x14bb6c[_0x16ea('0x33')](_0x16ea('0x2b'))===![])return;return _0x49d6d9['UserProfile'][_0x16ea('0x34')]({'where':{'id':_0x14bb6c['userProfileId']}})[_0x16ea('0x22')](function(_0x3faf51){if(_0x3faf51)_0x14bb6c['privacyEnabled']=_0x3faf51[_0x16ea('0x2e')];return;});})['then'](function(){if(_0x14bb6c[_0x16ea('0x33')](_0x16ea('0x13'))){_0x14bb6c[_0x16ea('0x2f')]();return _0x14bb6c[_0x16ea('0x30')](_0x226e44);}_0x226e44();})[_0x16ea('0x31')](function(_0x16f190){_0x226e44(_0x16f190);});},'afterCreate':function(_0x45cf38,_0x428b38,_0x1a4b3e){var _0x3782cd=getUserApplications(_0x45cf38,_0x45cf38[_0x16ea('0x23')]);if(_0x45cf38['internal']!=_0x45cf38[_0x16ea('0x1d')]){_0x3782cd=_0x3782cd[_0x16ea('0x24')](getUserApplications(_0x45cf38,_0x45cf38['name']));}return _0x49d6d9['VoiceExtension']['bulkCreate'](_0x3782cd)[_0x16ea('0x22')](function(){if(_0x45cf38[_0x16ea('0xc')]){return getChanSpyPromise(_0x49d6d9,_0x45cf38);}})[_0x16ea('0x22')](function(_0x590aa4){if(_0x590aa4&&_0x590aa4[_0x16ea('0x3')]){return _0x49d6d9[_0x16ea('0x35')][_0x16ea('0x36')](_0x590aa4);}})[_0x16ea('0x22')](function(){_0x1a4b3e();})[_0x16ea('0x31')](function(_0xe06b59){_0x1a4b3e(_0xe06b59);});},'afterUpdate':function(_0x45ee32,_0x2ecab0,_0x1db90a){return BPromise[_0x16ea('0x32')]()[_0x16ea('0x22')](function(){if(_0x45ee32[_0x16ea('0x33')]('chanspy')||_0x45ee32[_0x16ea('0x33')]('context')){return _0x49d6d9[_0x16ea('0x35')]['destroy']({'where':{'UserId':_0x45ee32['id'],'type':_0x16ea('0x5'),'ChanSpyId':{'$ne':null}}})[_0x16ea('0x22')](function(){if(_0x45ee32['chanspy']){return getChanSpyPromise(_0x49d6d9,_0x45ee32)[_0x16ea('0x22')](function(_0x2c7c0e){if(_0x2c7c0e&&_0x2c7c0e[_0x16ea('0x3')]){return _0x49d6d9[_0x16ea('0x35')][_0x16ea('0x36')](_0x2c7c0e);}});}});}})[_0x16ea('0x22')](function(){if(_0x45ee32[_0x16ea('0x33')]('extensionMonitor')||_0x45ee32['changed'](_0x16ea('0x4'))){return _0x49d6d9[_0x16ea('0x35')][_0x16ea('0x37')]({'where':{'UserId':_0x45ee32['id'],'type':_0x16ea('0x5'),'ChanSpyId':null}})[_0x16ea('0x22')](function(){var _0x7c7977=getUserApplications(_0x45ee32,_0x45ee32['internal']);if(_0x45ee32['internal']!=_0x45ee32['name']){_0x7c7977=_0x7c7977['concat'](getUserApplications(_0x45ee32,_0x45ee32['name']));}return _0x49d6d9[_0x16ea('0x35')][_0x16ea('0x36')](_0x7c7977);});}})[_0x16ea('0x22')](function(){_0x1db90a();})['catch'](function(_0x2810f7){_0x1db90a(_0x2810f7);});},'afterDestroy':function(_0x308913,_0x4b3f2b){return _0x49d6d9['VoiceExtension'][_0x16ea('0x37')]({'where':{'UserId':_0x308913['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x947d8a,_0x5a1d45){if(!_0x5a1d45){return this[_0x16ea('0x13')]===this[_0x16ea('0x38')](_0x947d8a);}var _0x1359d4=this;this[_0x16ea('0x38')](_0x947d8a,function(_0x424cdd,_0x40795c){if(_0x424cdd){_0x5a1d45(_0x424cdd);}if(_0x1359d4['password']===_0x40795c){_0x5a1d45(null,!![]);}else{_0x5a1d45(null,![]);}});},'makeSalt':function(_0x446a3d,_0x2795b4){var _0x18b151=0x10;if(typeof arguments[0x0]===_0x16ea('0x39')){_0x2795b4=arguments[0x0];_0x446a3d=_0x18b151;}else if(typeof arguments[0x1]===_0x16ea('0x39')){_0x2795b4=arguments[0x1];}else{throw new Error(_0x16ea('0x3a'));}if(!_0x446a3d){_0x446a3d=_0x18b151;}return crypto['randomBytes'](_0x446a3d,function(_0x2b0602,_0x1f4c66){if(_0x2b0602){_0x2795b4(_0x2b0602);}return _0x2795b4(null,_0x1f4c66[_0x16ea('0x3b')](_0x16ea('0x3c')));});},'encryptPassword':function(_0x51aa6b,_0x1fe938){if(!_0x51aa6b||!this['salt']){return _0x1fe938?_0x1fe938(null):null;}var _0xa86216=0x2710;var _0x23d86c=0x40;var _0x47485c=new Buffer(this[_0x16ea('0x3d')],_0x16ea('0x3c'));if(!_0x1fe938){return crypto['pbkdf2Sync'](_0x51aa6b,_0x47485c,_0xa86216,_0x23d86c,_0x16ea('0x3e'))[_0x16ea('0x3b')](_0x16ea('0x3c'));}return crypto[_0x16ea('0x3f')](_0x51aa6b,_0x47485c,_0xa86216,_0x23d86c,_0x16ea('0x3e'),function(_0x780f4c,_0x1f6d5f){if(_0x780f4c){_0x1fe938(_0x780f4c);}return _0x1fe938(null,_0x1f6d5f[_0x16ea('0x3b')](_0x16ea('0x3c')));});},'updatePassword':function(_0x1b3ef4){if(!this[_0x16ea('0x13')]){return _0x1b3ef4(null);}if(!validatePresenceOf(this['password'])&&authTypes['indexOf'](this[_0x16ea('0x40')])===-0x1){_0x1b3ef4(new Error(_0x16ea('0x41')));}var _0x3d9bd0=this;this[_0x16ea('0x42')](function(_0x572354,_0x4a23c0){if(_0x572354){return _0x1b3ef4(_0x572354);}_0x3d9bd0[_0x16ea('0x3d')]=_0x4a23c0;_0x3d9bd0[_0x16ea('0x38')](_0x3d9bd0['password'],function(_0x4eb30f,_0x4ffa47){if(_0x4eb30f){_0x1b3ef4(_0x4eb30f);}_0x3d9bd0[_0x16ea('0x13')]=_0x4ffa47;_0x1b3ef4(null);});});},'updateMd5Password':function(){this[_0x16ea('0x43')]=md5(this['name']+_0x16ea('0x44')+this[_0x16ea('0x13')]);return this[_0x16ea('0x43')];}}});};