4e9f5964b33004b876f11f291e006a2eb8410b4b
[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 _0x4641=['utf8','utf8_bin','undefined','resolve','UserProfile','find','privacyEnabled','updateMd5Password','catch','changed','userProfileId','updatePassword','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','toString','base64','salt','sha1','pbkdf2','indexOf','provider','Invalid\x20password','md5secret',':asterisk:','bluebird','crypto','util','md5','lodash','./user.attributes','google','length','context','from-sip','system','format','push','Set','CDR(type)=%s','chanspy','merge','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','name','options','join','record','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','priority','VoiceChanSpy','then','internal','concat','exports','models','define','User','users'];(function(_0x1ae864,_0x23e15b){var _0x21e862=function(_0x2a15a0){while(--_0x2a15a0){_0x1ae864['push'](_0x1ae864['shift']());}};_0x21e862(++_0x23e15b);}(_0x4641,0x198));var _0x1464=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x4641[_0x2be8c2];return _0x97f531;};'use strict';var BPromise=require(_0x1464('0x0'));var crypto=require(_0x1464('0x1'));var util=require(_0x1464('0x2'));var md5=require(_0x1464('0x3'));var _=require(_0x1464('0x4'));var attributes=require(_0x1464('0x5'));var authTypes=[_0x1464('0x6')];var validatePresenceOf=function(_0xb3cd54){return _0xb3cd54&&_0xb3cd54[_0x1464('0x7')];};var getChanSpyApplications=function(_0x2d8606,_0x5470f1,_0x2d6eff){var _0x402dff={'context':_0x2d8606[_0x1464('0x8')]||_0x1464('0x9'),'type':_0x1464('0xa'),'isApp':![],'UserId':_0x2d8606['id']};var _0x39e2e3=[];for(var _0x1aa91a=0x0,_0x45e0f9=0x1;_0x1aa91a<_0x2d6eff['length'];_0x1aa91a++,_0x45e0f9=0x1){var _0x28f0de={'exten':util[_0x1464('0xb')]('%s%s',_0x2d6eff[_0x1aa91a]['prefix'],_0x5470f1),'ChanSpyId':_0x2d6eff[_0x1aa91a]['id']};_0x39e2e3[_0x1464('0xc')](_['merge']({'app':_0x1464('0xd'),'appdata':util[_0x1464('0xb')](_0x1464('0xe'),_0x1464('0xf')),'priority':_0x45e0f9++},_0x402dff,_0x28f0de));if(_0x2d6eff[_0x1aa91a]['record']){_0x39e2e3[_0x1464('0xc')](_[_0x1464('0x10')]({'app':_0x1464('0x11'),'appdata':util['format'](_0x1464('0x12'),_0x2d6eff[_0x1aa91a][_0x1464('0x13')]),'priority':_0x45e0f9++},_0x402dff,_0x28f0de));}if(_0x2d6eff[_0x1aa91a][_0x1464('0x14')]){_0x39e2e3['push'](_['merge']({'app':_0x1464('0x15'),'appdata':_0x2d6eff[_0x1aa91a][_0x1464('0x16')],'priority':_0x45e0f9++},_0x402dff,_0x28f0de));}_0x39e2e3['push'](_['merge']({'app':_0x1464('0x17'),'appdata':util[_0x1464('0xb')]('SIP/%s,%s',_0x2d8606[_0x1464('0x18')],_0x2d6eff[_0x1aa91a]['options']?_0x2d6eff[_0x1aa91a][_0x1464('0x19')][_0x1464('0x1a')](''):''),'priority':_0x45e0f9++},_0x402dff,_0x28f0de));if(_0x2d6eff[_0x1aa91a][_0x1464('0x1b')]){_0x39e2e3['push'](_[_0x1464('0x10')]({'app':'StopMixMonitor','priority':_0x45e0f9++},_0x402dff,_0x28f0de));}}return _0x39e2e3;};var getUserApplications=function(_0x2fce75,_0x24eea2){var _0x588be9=['wav',_0x1464('0x1c'),_0x1464('0x1d')];var _0xc9184b={'context':_0x2fce75[_0x1464('0x8')]||'from-sip','exten':_0x24eea2,'type':_0x1464('0xa'),'isApp':![],'UserId':_0x2fce75['id']};var _0x3fbf73=[{'app':_0x1464('0xd'),'appdata':_0x1464('0x1e')}];if(_0x2fce75[_0x1464('0x1f')]&&_[_0x1464('0x20')](_0x588be9,_0x2fce75[_0x1464('0x1f')])){_0x3fbf73['push']({'app':_0x1464('0xd'),'appdata':_0x1464('0x21')});_0x3fbf73['push']({'app':_0x1464('0xd'),'appdata':util[_0x1464('0xb')](_0x1464('0x22'),_0x2fce75[_0x1464('0x1f')])});_0x3fbf73['push']({'app':_0x1464('0x23'),'appdata':util[_0x1464('0xb')](_0x1464('0x24'),_0x2fce75['name'])});}else{_0x3fbf73[_0x1464('0xc')]({'app':_0x1464('0x23'),'appdata':util[_0x1464('0xb')](_0x1464('0x25'),_0x2fce75['name'])});}_0x3fbf73[_0x1464('0xc')]({'app':'Hangup'});for(var _0x1ae491=0x0;_0x1ae491<_0x3fbf73['length'];_0x1ae491++){_0x3fbf73[_0x1ae491][_0x1464('0x26')]=_0x1ae491+0x1;_0x3fbf73[_0x1ae491]=_['defaults'](_0x3fbf73[_0x1ae491],_0xc9184b);}return _0x3fbf73;};var getChanSpyPromise=function(_0x5c0fed,_0x517fb6){return new BPromise(function(_0x982c8f,_0x258692){return _0x5c0fed[_0x1464('0x27')]['findAll']()[_0x1464('0x28')](function(_0x27f37e){if(_0x27f37e){var _0x48762d=getChanSpyApplications(_0x517fb6,_0x517fb6[_0x1464('0x29')],_0x27f37e);if(_0x517fb6[_0x1464('0x29')]!=_0x517fb6[_0x1464('0x18')]){_0x48762d=_0x48762d[_0x1464('0x2a')](getChanSpyApplications(_0x517fb6,_0x517fb6[_0x1464('0x18')],_0x27f37e));}return _0x982c8f(_0x48762d);}return _0x982c8f([]);})['catch'](function(_0x27623d){_0x258692(_0x27623d);});});};module[_0x1464('0x2b')]=function(_0x418def,_0x168c12){var _0x48a241=_0x418def[_0x1464('0x2c')];return _0x418def[_0x1464('0x2d')](_0x1464('0x2e'),attributes,{'tableName':_0x1464('0x2f'),'charset':_0x1464('0x30'),'collate':_0x1464('0x31'),'hooks':{'beforeCreate':function(_0x25076a,_0x599195,_0x49b399){var _0x44b529=typeof _0x25076a['userProfileId']===_0x1464('0x32')?BPromise[_0x1464('0x33')](null):_0x48a241[_0x1464('0x34')][_0x1464('0x35')]({'where':{'id':_0x25076a['userProfileId']}});_0x44b529[_0x1464('0x28')](function(_0x4c4cae){if(_0x4c4cae){_0x25076a['privacyEnabled']=_0x4c4cae[_0x1464('0x36')];}})[_0x1464('0x28')](function(){_0x25076a[_0x1464('0x37')]();_0x25076a['updatePassword'](_0x49b399);})[_0x1464('0x38')](function(_0x57a58d){_0x49b399(_0x57a58d);});},'beforeUpdate':function(_0x431a56,_0x3c79a9,_0x5445c5){Promise[_0x1464('0x33')]()[_0x1464('0x28')](function(){if(_0x431a56[_0x1464('0x39')](_0x1464('0x3a'))===![])return;return _0x48a241[_0x1464('0x34')][_0x1464('0x35')]({'where':{'id':_0x431a56[_0x1464('0x3a')]}})['then'](function(_0x1ee89f){if(_0x1ee89f)_0x431a56['privacyEnabled']=_0x1ee89f[_0x1464('0x36')];return;});})['then'](function(){if(_0x431a56[_0x1464('0x39')]('password')){_0x431a56['updateMd5Password']();return _0x431a56[_0x1464('0x3b')](_0x5445c5);}_0x5445c5();})[_0x1464('0x38')](function(_0x17bccc){_0x5445c5(_0x17bccc);});},'afterCreate':function(_0x1dc010,_0x179050,_0x1baeca){var _0x27e1b9=getUserApplications(_0x1dc010,_0x1dc010['internal']);if(_0x1dc010[_0x1464('0x29')]!=_0x1dc010[_0x1464('0x18')]){_0x27e1b9=_0x27e1b9[_0x1464('0x2a')](getUserApplications(_0x1dc010,_0x1dc010[_0x1464('0x18')]));}return _0x48a241[_0x1464('0x3c')][_0x1464('0x3d')](_0x27e1b9)[_0x1464('0x28')](function(){if(_0x1dc010[_0x1464('0xf')]){return getChanSpyPromise(_0x48a241,_0x1dc010);}})['then'](function(_0x3add0f){if(_0x3add0f&&_0x3add0f[_0x1464('0x7')]){return _0x48a241[_0x1464('0x3c')][_0x1464('0x3d')](_0x3add0f);}})['then'](function(){_0x1baeca();})['catch'](function(_0x404423){_0x1baeca(_0x404423);});},'afterUpdate':function(_0x48aac8,_0x4580b8,_0x332be7){return BPromise[_0x1464('0x33')]()[_0x1464('0x28')](function(){if(_0x48aac8[_0x1464('0x39')](_0x1464('0xf'))||_0x48aac8[_0x1464('0x39')]('context')){return _0x48a241[_0x1464('0x3c')][_0x1464('0x3e')]({'where':{'UserId':_0x48aac8['id'],'type':_0x1464('0xa'),'ChanSpyId':{'$ne':null}}})[_0x1464('0x28')](function(){if(_0x48aac8['chanspy']){return getChanSpyPromise(_0x48a241,_0x48aac8)['then'](function(_0x27fd35){if(_0x27fd35&&_0x27fd35[_0x1464('0x7')]){return _0x48a241[_0x1464('0x3c')][_0x1464('0x3d')](_0x27fd35);}});}});}})[_0x1464('0x28')](function(){if(_0x48aac8[_0x1464('0x39')](_0x1464('0x1f'))||_0x48aac8['changed'](_0x1464('0x8'))){return _0x48a241[_0x1464('0x3c')][_0x1464('0x3e')]({'where':{'UserId':_0x48aac8['id'],'type':'system','ChanSpyId':null}})[_0x1464('0x28')](function(){var _0x64826a=getUserApplications(_0x48aac8,_0x48aac8[_0x1464('0x29')]);if(_0x48aac8[_0x1464('0x29')]!=_0x48aac8[_0x1464('0x18')]){_0x64826a=_0x64826a['concat'](getUserApplications(_0x48aac8,_0x48aac8[_0x1464('0x18')]));}return _0x48a241['VoiceExtension'][_0x1464('0x3d')](_0x64826a);});}})[_0x1464('0x28')](function(){_0x332be7();})['catch'](function(_0xe46189){_0x332be7(_0xe46189);});},'afterDestroy':function(_0x19b61b,_0x5a4a3a){return _0x48a241[_0x1464('0x3c')][_0x1464('0x3e')]({'where':{'UserId':_0x19b61b['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x3531a4,_0x56e07f){if(!_0x56e07f){return this[_0x1464('0x16')]===this[_0x1464('0x3f')](_0x3531a4);}var _0x56d754=this;this[_0x1464('0x3f')](_0x3531a4,function(_0x2e05a3,_0x57d130){if(_0x2e05a3){_0x56e07f(_0x2e05a3);}if(_0x56d754[_0x1464('0x16')]===_0x57d130){_0x56e07f(null,!![]);}else{_0x56e07f(null,![]);}});},'makeSalt':function(_0x50825e,_0x196293){var _0x1c1953=0x10;if(typeof arguments[0x0]===_0x1464('0x40')){_0x196293=arguments[0x0];_0x50825e=_0x1c1953;}else if(typeof arguments[0x1]===_0x1464('0x40')){_0x196293=arguments[0x1];}else{throw new Error(_0x1464('0x41'));}if(!_0x50825e){_0x50825e=_0x1c1953;}return crypto['randomBytes'](_0x50825e,function(_0x2caf44,_0x41bb4f){if(_0x2caf44){_0x196293(_0x2caf44);}return _0x196293(null,_0x41bb4f[_0x1464('0x42')](_0x1464('0x43')));});},'encryptPassword':function(_0x597a3e,_0xac4939){if(!_0x597a3e||!this[_0x1464('0x44')]){return _0xac4939?_0xac4939(null):null;}var _0x37fac5=0x2710;var _0x312647=0x40;var _0x548a0a=new Buffer(this[_0x1464('0x44')],_0x1464('0x43'));if(!_0xac4939){return crypto['pbkdf2Sync'](_0x597a3e,_0x548a0a,_0x37fac5,_0x312647,_0x1464('0x45'))['toString'](_0x1464('0x43'));}return crypto[_0x1464('0x46')](_0x597a3e,_0x548a0a,_0x37fac5,_0x312647,_0x1464('0x45'),function(_0x6fbf37,_0x35908c){if(_0x6fbf37){_0xac4939(_0x6fbf37);}return _0xac4939(null,_0x35908c[_0x1464('0x42')](_0x1464('0x43')));});},'updatePassword':function(_0x1107a7){if(!this['password']){return _0x1107a7(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0x1464('0x47')](this[_0x1464('0x48')])===-0x1){_0x1107a7(new Error(_0x1464('0x49')));}var _0x1b5837=this;this['makeSalt'](function(_0x37fbfb,_0x55cbec){if(_0x37fbfb){return _0x1107a7(_0x37fbfb);}_0x1b5837['salt']=_0x55cbec;_0x1b5837[_0x1464('0x3f')](_0x1b5837[_0x1464('0x16')],function(_0x2fd38e,_0x131f82){if(_0x2fd38e){_0x1107a7(_0x2fd38e);}_0x1b5837[_0x1464('0x16')]=_0x131f82;_0x1107a7(null);});});},'updateMd5Password':function(){this[_0x1464('0x4a')]=md5(this[_0x1464('0x18')]+_0x1464('0x4b')+this[_0x1464('0x16')]);return this[_0x1464('0x4a')];}}});};