Built motion from commit 43538d75.|2.5.35
[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 _0xcfee=['catch','exports','models','User','users','utf8_bin','userProfileId','undefined','UserProfile','privacyEnabled','updatePassword','resolve','changed','then','VoiceExtension','bulkCreate','chanspy','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','Invalid\x20password','md5secret',':asterisk:','bluebird','crypto','util','md5','./user.attributes','google','length','context','system','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','record','${UNIQUEID}.%s,a','recordingFormat','Authenticate','password','ChanSpy','name','join','StopMixMonitor','WAV','gsm','from-sip','CDR(type)=internal','includes','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','VoiceChanSpy','findAll','internal','concat'];(function(_0x596030,_0x52791b){var _0xf35375=function(_0x58a5d4){while(--_0x58a5d4){_0x596030['push'](_0x596030['shift']());}};_0xf35375(++_0x52791b);}(_0xcfee,0xb0));var _0xecfe=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0xcfee[_0x12fc8d];return _0x3f9d04;};'use strict';var BPromise=require(_0xecfe('0x0'));var crypto=require(_0xecfe('0x1'));var util=require(_0xecfe('0x2'));var md5=require(_0xecfe('0x3'));var _=require('lodash');var attributes=require(_0xecfe('0x4'));var authTypes=[_0xecfe('0x5')];var validatePresenceOf=function(_0x37b4c3){return _0x37b4c3&&_0x37b4c3[_0xecfe('0x6')];};var getChanSpyApplications=function(_0x43e823,_0x370450,_0x5be9d6){var _0x55cf2f={'context':_0x43e823[_0xecfe('0x7')]||'from-sip','type':_0xecfe('0x8'),'isApp':![],'UserId':_0x43e823['id']};var _0x4effef=[];for(var _0x40c0ff=0x0,_0x2695af=0x1;_0x40c0ff<_0x5be9d6[_0xecfe('0x6')];_0x40c0ff++,_0x2695af=0x1){var _0x5cfc18={'exten':util[_0xecfe('0x9')](_0xecfe('0xa'),_0x5be9d6[_0x40c0ff][_0xecfe('0xb')],_0x370450),'ChanSpyId':_0x5be9d6[_0x40c0ff]['id']};_0x4effef[_0xecfe('0xc')](_[_0xecfe('0xd')]({'app':_0xecfe('0xe'),'appdata':util[_0xecfe('0x9')](_0xecfe('0xf'),'chanspy'),'priority':_0x2695af++},_0x55cf2f,_0x5cfc18));if(_0x5be9d6[_0x40c0ff][_0xecfe('0x10')]){_0x4effef[_0xecfe('0xc')](_['merge']({'app':'MixMonitor','appdata':util[_0xecfe('0x9')](_0xecfe('0x11'),_0x5be9d6[_0x40c0ff][_0xecfe('0x12')]),'priority':_0x2695af++},_0x55cf2f,_0x5cfc18));}if(_0x5be9d6[_0x40c0ff]['auth']){_0x4effef[_0xecfe('0xc')](_[_0xecfe('0xd')]({'app':_0xecfe('0x13'),'appdata':_0x5be9d6[_0x40c0ff][_0xecfe('0x14')],'priority':_0x2695af++},_0x55cf2f,_0x5cfc18));}_0x4effef[_0xecfe('0xc')](_[_0xecfe('0xd')]({'app':_0xecfe('0x15'),'appdata':util[_0xecfe('0x9')]('SIP/%s,%s',_0x43e823[_0xecfe('0x16')],_0x5be9d6[_0x40c0ff]['options']?_0x5be9d6[_0x40c0ff]['options'][_0xecfe('0x17')](''):''),'priority':_0x2695af++},_0x55cf2f,_0x5cfc18));if(_0x5be9d6[_0x40c0ff][_0xecfe('0x10')]){_0x4effef[_0xecfe('0xc')](_['merge']({'app':_0xecfe('0x18'),'priority':_0x2695af++},_0x55cf2f,_0x5cfc18));}}return _0x4effef;};var getUserApplications=function(_0x5f1cd2,_0x355d8b){var _0x1a0e24=['wav',_0xecfe('0x19'),_0xecfe('0x1a')];var _0x22efd9={'context':_0x5f1cd2[_0xecfe('0x7')]||_0xecfe('0x1b'),'exten':_0x355d8b,'type':'system','isApp':![],'UserId':_0x5f1cd2['id']};var _0x3017bc=[{'app':'Set','appdata':_0xecfe('0x1c')}];if(_0x5f1cd2['extensionMonitor']&&_[_0xecfe('0x1d')](_0x1a0e24,_0x5f1cd2[_0xecfe('0x1e')])){_0x3017bc[_0xecfe('0xc')]({'app':_0xecfe('0xe'),'appdata':_0xecfe('0x1f')});_0x3017bc['push']({'app':'Set','appdata':util[_0xecfe('0x9')](_0xecfe('0x20'),_0x5f1cd2['extensionMonitor'])});_0x3017bc[_0xecfe('0xc')]({'app':'Dial','appdata':util[_0xecfe('0x9')](_0xecfe('0x21'),_0x5f1cd2[_0xecfe('0x16')])});}else{_0x3017bc[_0xecfe('0xc')]({'app':'Dial','appdata':util[_0xecfe('0x9')](_0xecfe('0x22'),_0x5f1cd2[_0xecfe('0x16')])});}_0x3017bc['push']({'app':_0xecfe('0x23')});for(var _0x5b3308=0x0;_0x5b3308<_0x3017bc[_0xecfe('0x6')];_0x5b3308++){_0x3017bc[_0x5b3308]['priority']=_0x5b3308+0x1;_0x3017bc[_0x5b3308]=_['defaults'](_0x3017bc[_0x5b3308],_0x22efd9);}return _0x3017bc;};var getChanSpyPromise=function(_0x1cf67c,_0x595fe3){return new BPromise(function(_0x161251,_0x14e2d1){return _0x1cf67c[_0xecfe('0x24')][_0xecfe('0x25')]()['then'](function(_0x2f3c95){if(_0x2f3c95){var _0x4059f3=getChanSpyApplications(_0x595fe3,_0x595fe3['internal'],_0x2f3c95);if(_0x595fe3[_0xecfe('0x26')]!=_0x595fe3[_0xecfe('0x16')]){_0x4059f3=_0x4059f3[_0xecfe('0x27')](getChanSpyApplications(_0x595fe3,_0x595fe3[_0xecfe('0x16')],_0x2f3c95));}return _0x161251(_0x4059f3);}return _0x161251([]);})[_0xecfe('0x28')](function(_0xf9ebe1){_0x14e2d1(_0xf9ebe1);});});};module[_0xecfe('0x29')]=function(_0x4d551f,_0x557051){var _0x563ac2=_0x4d551f[_0xecfe('0x2a')];return _0x4d551f['define'](_0xecfe('0x2b'),attributes,{'tableName':_0xecfe('0x2c'),'charset':'utf8','collate':_0xecfe('0x2d'),'hooks':{'beforeCreate':function(_0x419ae9,_0x1e2d3c,_0x46a425){var _0x4a9944=typeof _0x419ae9[_0xecfe('0x2e')]===_0xecfe('0x2f')?BPromise['resolve'](null):_0x563ac2[_0xecfe('0x30')]['find']({'where':{'id':_0x419ae9['userProfileId']}});_0x4a9944['then'](function(_0x433aa6){if(_0x433aa6){_0x419ae9[_0xecfe('0x31')]=_0x433aa6['privacyEnabled'];}})['then'](function(){_0x419ae9['updateMd5Password']();_0x419ae9[_0xecfe('0x32')](_0x46a425);})['catch'](function(_0x47394c){_0x46a425(_0x47394c);});},'beforeUpdate':function(_0x5a0c72,_0x3e24e0,_0x459789){Promise[_0xecfe('0x33')]()['then'](function(){if(_0x5a0c72[_0xecfe('0x34')](_0xecfe('0x2e'))===![])return;return _0x563ac2[_0xecfe('0x30')]['find']({'where':{'id':_0x5a0c72[_0xecfe('0x2e')]}})[_0xecfe('0x35')](function(_0xea8dde){if(_0xea8dde)_0x5a0c72['privacyEnabled']=_0xea8dde[_0xecfe('0x31')];return;});})['then'](function(){if(_0x5a0c72[_0xecfe('0x34')](_0xecfe('0x14'))){_0x5a0c72['updateMd5Password']();return _0x5a0c72['updatePassword'](_0x459789);}_0x459789();})[_0xecfe('0x28')](function(_0x13a7a6){_0x459789(_0x13a7a6);});},'afterCreate':function(_0x13c0e2,_0x4db6c5,_0x5ed9df){var _0x3da188=getUserApplications(_0x13c0e2,_0x13c0e2[_0xecfe('0x26')]);if(_0x13c0e2['internal']!=_0x13c0e2[_0xecfe('0x16')]){_0x3da188=_0x3da188[_0xecfe('0x27')](getUserApplications(_0x13c0e2,_0x13c0e2[_0xecfe('0x16')]));}return _0x563ac2[_0xecfe('0x36')][_0xecfe('0x37')](_0x3da188)['then'](function(){if(_0x13c0e2[_0xecfe('0x38')]){return getChanSpyPromise(_0x563ac2,_0x13c0e2);}})[_0xecfe('0x35')](function(_0x532044){if(_0x532044&&_0x532044[_0xecfe('0x6')]){return _0x563ac2['VoiceExtension'][_0xecfe('0x37')](_0x532044);}})[_0xecfe('0x35')](function(){_0x5ed9df();})[_0xecfe('0x28')](function(_0x3fcd7b){_0x5ed9df(_0x3fcd7b);});},'afterUpdate':function(_0x16438c,_0xe25712,_0x4c1fe9){return BPromise['resolve']()[_0xecfe('0x35')](function(){if(_0x16438c[_0xecfe('0x34')](_0xecfe('0x38'))||_0x16438c[_0xecfe('0x34')](_0xecfe('0x7'))){return _0x563ac2['VoiceExtension']['destroy']({'where':{'UserId':_0x16438c['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xecfe('0x35')](function(){if(_0x16438c[_0xecfe('0x38')]){return getChanSpyPromise(_0x563ac2,_0x16438c)[_0xecfe('0x35')](function(_0x337b2c){if(_0x337b2c&&_0x337b2c[_0xecfe('0x6')]){return _0x563ac2['VoiceExtension'][_0xecfe('0x37')](_0x337b2c);}});}});}})[_0xecfe('0x35')](function(){if(_0x16438c[_0xecfe('0x34')](_0xecfe('0x1e'))||_0x16438c[_0xecfe('0x34')](_0xecfe('0x7'))){return _0x563ac2[_0xecfe('0x36')][_0xecfe('0x39')]({'where':{'UserId':_0x16438c['id'],'type':_0xecfe('0x8'),'ChanSpyId':null}})[_0xecfe('0x35')](function(){var _0x39a563=getUserApplications(_0x16438c,_0x16438c[_0xecfe('0x26')]);if(_0x16438c[_0xecfe('0x26')]!=_0x16438c[_0xecfe('0x16')]){_0x39a563=_0x39a563[_0xecfe('0x27')](getUserApplications(_0x16438c,_0x16438c[_0xecfe('0x16')]));}return _0x563ac2[_0xecfe('0x36')][_0xecfe('0x37')](_0x39a563);});}})[_0xecfe('0x35')](function(){_0x4c1fe9();})['catch'](function(_0x12c0e7){_0x4c1fe9(_0x12c0e7);});},'afterDestroy':function(_0x483326,_0xebb981){return _0x563ac2[_0xecfe('0x36')][_0xecfe('0x39')]({'where':{'UserId':_0x483326['id'],'type':_0xecfe('0x8')}});}},'instanceMethods':{'authenticate':function(_0x5b8656,_0x4b41a9){if(!_0x4b41a9){return this[_0xecfe('0x14')]===this[_0xecfe('0x3a')](_0x5b8656);}var _0x5c964a=this;this[_0xecfe('0x3a')](_0x5b8656,function(_0x52c9b3,_0x38c568){if(_0x52c9b3){_0x4b41a9(_0x52c9b3);}if(_0x5c964a[_0xecfe('0x14')]===_0x38c568){_0x4b41a9(null,!![]);}else{_0x4b41a9(null,![]);}});},'makeSalt':function(_0x5da4f4,_0x3680ae){var _0x15e963=0x10;if(typeof arguments[0x0]==='function'){_0x3680ae=arguments[0x0];_0x5da4f4=_0x15e963;}else if(typeof arguments[0x1]===_0xecfe('0x3b')){_0x3680ae=arguments[0x1];}else{throw new Error(_0xecfe('0x3c'));}if(!_0x5da4f4){_0x5da4f4=_0x15e963;}return crypto[_0xecfe('0x3d')](_0x5da4f4,function(_0x4b04f2,_0x169fc2){if(_0x4b04f2){_0x3680ae(_0x4b04f2);}return _0x3680ae(null,_0x169fc2[_0xecfe('0x3e')](_0xecfe('0x3f')));});},'encryptPassword':function(_0x27627a,_0x48144a){if(!_0x27627a||!this[_0xecfe('0x40')]){return _0x48144a?_0x48144a(null):null;}var _0x8d855=0x2710;var _0x256e58=0x40;var _0x490ab3=new Buffer(this['salt'],_0xecfe('0x3f'));if(!_0x48144a){return crypto[_0xecfe('0x41')](_0x27627a,_0x490ab3,_0x8d855,_0x256e58,_0xecfe('0x42'))[_0xecfe('0x3e')](_0xecfe('0x3f'));}return crypto[_0xecfe('0x43')](_0x27627a,_0x490ab3,_0x8d855,_0x256e58,'sha1',function(_0x44eafe,_0x1e257e){if(_0x44eafe){_0x48144a(_0x44eafe);}return _0x48144a(null,_0x1e257e[_0xecfe('0x3e')](_0xecfe('0x3f')));});},'updatePassword':function(_0x5d2086){if(!this[_0xecfe('0x14')]){return _0x5d2086(null);}if(!validatePresenceOf(this[_0xecfe('0x14')])&&authTypes[_0xecfe('0x44')](this['provider'])===-0x1){_0x5d2086(new Error(_0xecfe('0x45')));}var _0x7c5500=this;this['makeSalt'](function(_0x132df7,_0x50bc1b){if(_0x132df7){return _0x5d2086(_0x132df7);}_0x7c5500[_0xecfe('0x40')]=_0x50bc1b;_0x7c5500[_0xecfe('0x3a')](_0x7c5500['password'],function(_0x125525,_0x2afe68){if(_0x125525){_0x5d2086(_0x125525);}_0x7c5500[_0xecfe('0x14')]=_0x2afe68;_0x5d2086(null);});});},'updateMd5Password':function(){this[_0xecfe('0x46')]=md5(this[_0xecfe('0x16')]+_0xecfe('0x47')+this[_0xecfe('0x14')]);return this[_0xecfe('0x46')];}}});};