421afa2491e0d73f19c1b53e6447b18ae53d3fcc
[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 _0xf1a5=['from-sip','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','Hangup','priority','defaults','findAll','then','internal','catch','exports','models','define','User','users','updateMd5Password','updatePassword','changed','concat','VoiceExtension','bulkCreate','resolve','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','pbkdf2Sync','sha1','pbkdf2','provider','Invalid\x20password','makeSalt','salt','md5secret','bluebird','crypto','util','md5','lodash','./user.attributes','google','context','system','length','format','%s%s','prefix','merge','Set','CDR(type)=%s','chanspy','record','push','MixMonitor','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','wav','WAV','gsm'];(function(_0x55548a,_0x33777f){var _0x308785=function(_0x24d8b1){while(--_0x24d8b1){_0x55548a['push'](_0x55548a['shift']());}};_0x308785(++_0x33777f);}(_0xf1a5,0x71));var _0x5f1a=function(_0x59527b,_0x4e4457){_0x59527b=_0x59527b-0x0;var _0x1ef0e1=_0xf1a5[_0x59527b];return _0x1ef0e1;};'use strict';var BPromise=require(_0x5f1a('0x0'));var crypto=require(_0x5f1a('0x1'));var util=require(_0x5f1a('0x2'));var md5=require(_0x5f1a('0x3'));var _=require(_0x5f1a('0x4'));var attributes=require(_0x5f1a('0x5'));var authTypes=[_0x5f1a('0x6')];var validatePresenceOf=function(_0x40b344){return _0x40b344&&_0x40b344['length'];};var getChanSpyApplications=function(_0x220b01,_0x356256,_0x22c6cb){var _0x18f15e={'context':_0x220b01[_0x5f1a('0x7')]||'from-sip','type':_0x5f1a('0x8'),'isApp':![],'UserId':_0x220b01['id']};var _0x955c20=[];for(var _0x58582d=0x0,_0x56247d=0x1;_0x58582d<_0x22c6cb[_0x5f1a('0x9')];_0x58582d++,_0x56247d=0x1){var _0xf7fcc={'exten':util[_0x5f1a('0xa')](_0x5f1a('0xb'),_0x22c6cb[_0x58582d][_0x5f1a('0xc')],_0x356256),'ChanSpyId':_0x22c6cb[_0x58582d]['id']};_0x955c20['push'](_[_0x5f1a('0xd')]({'app':_0x5f1a('0xe'),'appdata':util['format'](_0x5f1a('0xf'),_0x5f1a('0x10')),'priority':_0x56247d++},_0x18f15e,_0xf7fcc));if(_0x22c6cb[_0x58582d][_0x5f1a('0x11')]){_0x955c20[_0x5f1a('0x12')](_[_0x5f1a('0xd')]({'app':_0x5f1a('0x13'),'appdata':util['format']('${UNIQUEID}.%s,a',_0x22c6cb[_0x58582d]['recordingFormat']),'priority':_0x56247d++},_0x18f15e,_0xf7fcc));}if(_0x22c6cb[_0x58582d][_0x5f1a('0x14')]){_0x955c20[_0x5f1a('0x12')](_['merge']({'app':_0x5f1a('0x15'),'appdata':_0x22c6cb[_0x58582d][_0x5f1a('0x16')],'priority':_0x56247d++},_0x18f15e,_0xf7fcc));}_0x955c20[_0x5f1a('0x12')](_[_0x5f1a('0xd')]({'app':_0x5f1a('0x17'),'appdata':util[_0x5f1a('0xa')](_0x5f1a('0x18'),_0x220b01[_0x5f1a('0x19')],_0x22c6cb[_0x58582d][_0x5f1a('0x1a')]?_0x22c6cb[_0x58582d][_0x5f1a('0x1a')][_0x5f1a('0x1b')](''):''),'priority':_0x56247d++},_0x18f15e,_0xf7fcc));if(_0x22c6cb[_0x58582d][_0x5f1a('0x11')]){_0x955c20[_0x5f1a('0x12')](_[_0x5f1a('0xd')]({'app':'StopMixMonitor','priority':_0x56247d++},_0x18f15e,_0xf7fcc));}}return _0x955c20;};var getUserApplications=function(_0x44104e,_0x406ad0){var _0x237f47=[_0x5f1a('0x1c'),_0x5f1a('0x1d'),_0x5f1a('0x1e')];var _0x21e5c9={'context':_0x44104e['context']||_0x5f1a('0x1f'),'exten':_0x406ad0,'type':'system','isApp':![],'UserId':_0x44104e['id']};var _0xb1e464=[{'app':'Set','appdata':_0x5f1a('0x20')}];if(_0x44104e[_0x5f1a('0x21')]&&_[_0x5f1a('0x22')](_0x237f47,_0x44104e[_0x5f1a('0x21')])){_0xb1e464[_0x5f1a('0x12')]({'app':_0x5f1a('0xe'),'appdata':_0x5f1a('0x23')});_0xb1e464[_0x5f1a('0x12')]({'app':_0x5f1a('0xe'),'appdata':util[_0x5f1a('0xa')](_0x5f1a('0x24'),_0x44104e[_0x5f1a('0x21')])});_0xb1e464[_0x5f1a('0x12')]({'app':_0x5f1a('0x25'),'appdata':util[_0x5f1a('0xa')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x44104e[_0x5f1a('0x19')])});}else{_0xb1e464['push']({'app':_0x5f1a('0x25'),'appdata':util[_0x5f1a('0xa')]('SIP/%s,,tTxX',_0x44104e[_0x5f1a('0x19')])});}_0xb1e464[_0x5f1a('0x12')]({'app':_0x5f1a('0x26')});for(var _0x5afa9f=0x0;_0x5afa9f<_0xb1e464['length'];_0x5afa9f++){_0xb1e464[_0x5afa9f][_0x5f1a('0x27')]=_0x5afa9f+0x1;_0xb1e464[_0x5afa9f]=_[_0x5f1a('0x28')](_0xb1e464[_0x5afa9f],_0x21e5c9);}return _0xb1e464;};var getChanSpyPromise=function(_0x112de5,_0x1ab0a0){return new BPromise(function(_0x337a1e,_0x205f3d){return _0x112de5['VoiceChanSpy'][_0x5f1a('0x29')]()[_0x5f1a('0x2a')](function(_0x1078f2){if(_0x1078f2){var _0xc00615=getChanSpyApplications(_0x1ab0a0,_0x1ab0a0[_0x5f1a('0x2b')],_0x1078f2);if(_0x1ab0a0[_0x5f1a('0x2b')]!=_0x1ab0a0[_0x5f1a('0x19')]){_0xc00615=_0xc00615['concat'](getChanSpyApplications(_0x1ab0a0,_0x1ab0a0['name'],_0x1078f2));}return _0x337a1e(_0xc00615);}return _0x337a1e([]);})[_0x5f1a('0x2c')](function(_0x24645f){_0x205f3d(_0x24645f);});});};module[_0x5f1a('0x2d')]=function(_0x530f40,_0x41fac4){var _0x4be1de=_0x530f40[_0x5f1a('0x2e')];return _0x530f40[_0x5f1a('0x2f')](_0x5f1a('0x30'),attributes,{'tableName':_0x5f1a('0x31'),'charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0x4d5dcb,_0xbf1171,_0x51f6a6){_0x4d5dcb[_0x5f1a('0x32')]();_0x4d5dcb[_0x5f1a('0x33')](_0x51f6a6);},'beforeUpdate':function(_0x14f673,_0x32de33,_0x5898ac){if(_0x14f673[_0x5f1a('0x34')]('password')){_0x14f673[_0x5f1a('0x32')]();return _0x14f673[_0x5f1a('0x33')](_0x5898ac);}_0x5898ac();},'afterCreate':function(_0x3d6d3c,_0x3e8fb8,_0x27a6bd){var _0x44e7c0=getUserApplications(_0x3d6d3c,_0x3d6d3c[_0x5f1a('0x2b')]);if(_0x3d6d3c[_0x5f1a('0x2b')]!=_0x3d6d3c[_0x5f1a('0x19')]){_0x44e7c0=_0x44e7c0[_0x5f1a('0x35')](getUserApplications(_0x3d6d3c,_0x3d6d3c[_0x5f1a('0x19')]));}return _0x4be1de[_0x5f1a('0x36')][_0x5f1a('0x37')](_0x44e7c0)[_0x5f1a('0x2a')](function(){if(_0x3d6d3c[_0x5f1a('0x10')]){return getChanSpyPromise(_0x4be1de,_0x3d6d3c);}})[_0x5f1a('0x2a')](function(_0x1228d8){if(_0x1228d8&&_0x1228d8[_0x5f1a('0x9')]){return _0x4be1de[_0x5f1a('0x36')]['bulkCreate'](_0x1228d8);}})[_0x5f1a('0x2a')](function(){_0x27a6bd();})[_0x5f1a('0x2c')](function(_0x454a17){_0x27a6bd(_0x454a17);});},'afterUpdate':function(_0x3b1a97,_0x1d1f2f,_0x113276){return BPromise[_0x5f1a('0x38')]()['then'](function(){if(_0x3b1a97['changed'](_0x5f1a('0x10'))||_0x3b1a97[_0x5f1a('0x34')](_0x5f1a('0x7'))){return _0x4be1de[_0x5f1a('0x36')]['destroy']({'where':{'UserId':_0x3b1a97['id'],'type':_0x5f1a('0x8'),'ChanSpyId':{'$ne':null}}})[_0x5f1a('0x2a')](function(){if(_0x3b1a97['chanspy']){return getChanSpyPromise(_0x4be1de,_0x3b1a97)[_0x5f1a('0x2a')](function(_0x3b5671){if(_0x3b5671&&_0x3b5671[_0x5f1a('0x9')]){return _0x4be1de['VoiceExtension'][_0x5f1a('0x37')](_0x3b5671);}});}});}})[_0x5f1a('0x2a')](function(){if(_0x3b1a97['changed']('extensionMonitor')||_0x3b1a97['changed'](_0x5f1a('0x7'))){return _0x4be1de['VoiceExtension'][_0x5f1a('0x39')]({'where':{'UserId':_0x3b1a97['id'],'type':_0x5f1a('0x8'),'ChanSpyId':null}})[_0x5f1a('0x2a')](function(){var _0x229daa=getUserApplications(_0x3b1a97,_0x3b1a97[_0x5f1a('0x2b')]);if(_0x3b1a97[_0x5f1a('0x2b')]!=_0x3b1a97[_0x5f1a('0x19')]){_0x229daa=_0x229daa[_0x5f1a('0x35')](getUserApplications(_0x3b1a97,_0x3b1a97[_0x5f1a('0x19')]));}return _0x4be1de[_0x5f1a('0x36')]['bulkCreate'](_0x229daa);});}})['then'](function(){_0x113276();})[_0x5f1a('0x2c')](function(_0x3caf55){_0x113276(_0x3caf55);});},'afterDestroy':function(_0x423c40,_0x377a5a){return _0x4be1de[_0x5f1a('0x36')][_0x5f1a('0x39')]({'where':{'UserId':_0x423c40['id'],'type':_0x5f1a('0x8')}});}},'instanceMethods':{'authenticate':function(_0x2bc5e3,_0xbf72a7){if(!_0xbf72a7){return this[_0x5f1a('0x16')]===this['encryptPassword'](_0x2bc5e3);}var _0x4f0861=this;this[_0x5f1a('0x3a')](_0x2bc5e3,function(_0x13ee43,_0x3d0923){if(_0x13ee43){_0xbf72a7(_0x13ee43);}if(_0x4f0861[_0x5f1a('0x16')]===_0x3d0923){_0xbf72a7(null,!![]);}else{_0xbf72a7(null,![]);}});},'makeSalt':function(_0xd1d047,_0x9ff0bd){var _0x239739=0x10;if(typeof arguments[0x0]===_0x5f1a('0x3b')){_0x9ff0bd=arguments[0x0];_0xd1d047=_0x239739;}else if(typeof arguments[0x1]===_0x5f1a('0x3b')){_0x9ff0bd=arguments[0x1];}else{throw new Error(_0x5f1a('0x3c'));}if(!_0xd1d047){_0xd1d047=_0x239739;}return crypto[_0x5f1a('0x3d')](_0xd1d047,function(_0x2c2aca,_0x5f9533){if(_0x2c2aca){_0x9ff0bd(_0x2c2aca);}return _0x9ff0bd(null,_0x5f9533[_0x5f1a('0x3e')](_0x5f1a('0x3f')));});},'encryptPassword':function(_0x3a1e65,_0xad9bb4){if(!_0x3a1e65||!this['salt']){return _0xad9bb4?_0xad9bb4(null):null;}var _0x291ccf=0x2710;var _0x5b3869=0x40;var _0x535e17=new Buffer(this['salt'],_0x5f1a('0x3f'));if(!_0xad9bb4){return crypto[_0x5f1a('0x40')](_0x3a1e65,_0x535e17,_0x291ccf,_0x5b3869,_0x5f1a('0x41'))[_0x5f1a('0x3e')]('base64');}return crypto[_0x5f1a('0x42')](_0x3a1e65,_0x535e17,_0x291ccf,_0x5b3869,_0x5f1a('0x41'),function(_0x3c5cf7,_0xaaf4b4){if(_0x3c5cf7){_0xad9bb4(_0x3c5cf7);}return _0xad9bb4(null,_0xaaf4b4[_0x5f1a('0x3e')](_0x5f1a('0x3f')));});},'updatePassword':function(_0x3b32f4){if(!this[_0x5f1a('0x16')]){return _0x3b32f4(null);}if(!validatePresenceOf(this[_0x5f1a('0x16')])&&authTypes['indexOf'](this[_0x5f1a('0x43')])===-0x1){_0x3b32f4(new Error(_0x5f1a('0x44')));}var _0x1ad16b=this;this[_0x5f1a('0x45')](function(_0x4e93bf,_0x239c0e){if(_0x4e93bf){return _0x3b32f4(_0x4e93bf);}_0x1ad16b[_0x5f1a('0x46')]=_0x239c0e;_0x1ad16b['encryptPassword'](_0x1ad16b[_0x5f1a('0x16')],function(_0x2148c1,_0x3a8acd){if(_0x2148c1){_0x3b32f4(_0x2148c1);}_0x1ad16b['password']=_0x3a8acd;_0x3b32f4(null);});});},'updateMd5Password':function(){this[_0x5f1a('0x47')]=md5(this[_0x5f1a('0x19')]+':asterisk:'+this[_0x5f1a('0x16')]);return this['md5secret'];}}});};