Built motion from commit 25580385.|2.6.2
[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 _0xb6e8=['WAV','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','VoiceChanSpy','then','internal','concat','catch','exports','models','define','users','utf8','utf8_bin','resolve','UserProfile','find','userProfileId','privacyEnabled','updateMd5Password','updatePassword','changed','userSetting','createUserSetting','VoiceExtension','bulkCreate','destroy','encryptPassword','function','randomBytes','toString','base64','pbkdf2Sync','sha1','provider','Invalid\x20password','salt','md5secret',':asterisk:','bluebird','util','md5','lodash','./user.attributes','google','length','context','from-sip','system','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','${UNIQUEID}.%s,a','auth','Authenticate','password','name','options','join','StopMixMonitor','wav'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0xb6e8,0x10c));var _0x8b6e=function(_0x7dd3ab,_0x424025){_0x7dd3ab=_0x7dd3ab-0x0;var _0x104a66=_0xb6e8[_0x7dd3ab];return _0x104a66;};'use strict';var BPromise=require(_0x8b6e('0x0'));var crypto=require('crypto');var util=require(_0x8b6e('0x1'));var md5=require(_0x8b6e('0x2'));var _=require(_0x8b6e('0x3'));var attributes=require(_0x8b6e('0x4'));var authTypes=[_0x8b6e('0x5')];var validatePresenceOf=function(_0x2fc3a8){return _0x2fc3a8&&_0x2fc3a8[_0x8b6e('0x6')];};var getChanSpyApplications=function(_0x748038,_0x5d5cfb,_0x530c4d){var _0x4ccd0b={'context':_0x748038[_0x8b6e('0x7')]||_0x8b6e('0x8'),'type':_0x8b6e('0x9'),'isApp':![],'UserId':_0x748038['id']};var _0x560e8a=[];for(var _0x41bd32=0x0,_0x3836b8=0x1;_0x41bd32<_0x530c4d[_0x8b6e('0x6')];_0x41bd32++,_0x3836b8=0x1){var _0x122aff={'exten':util[_0x8b6e('0xa')](_0x8b6e('0xb'),_0x530c4d[_0x41bd32][_0x8b6e('0xc')],_0x5d5cfb),'ChanSpyId':_0x530c4d[_0x41bd32]['id']};_0x560e8a[_0x8b6e('0xd')](_[_0x8b6e('0xe')]({'app':_0x8b6e('0xf'),'appdata':util[_0x8b6e('0xa')](_0x8b6e('0x10'),_0x8b6e('0x11')),'priority':_0x3836b8++},_0x4ccd0b,_0x122aff));if(_0x530c4d[_0x41bd32][_0x8b6e('0x12')]){_0x560e8a[_0x8b6e('0xd')](_['merge']({'app':'MixMonitor','appdata':util['format'](_0x8b6e('0x13'),_0x530c4d[_0x41bd32]['recordingFormat']),'priority':_0x3836b8++},_0x4ccd0b,_0x122aff));}if(_0x530c4d[_0x41bd32][_0x8b6e('0x14')]){_0x560e8a[_0x8b6e('0xd')](_[_0x8b6e('0xe')]({'app':_0x8b6e('0x15'),'appdata':_0x530c4d[_0x41bd32][_0x8b6e('0x16')],'priority':_0x3836b8++},_0x4ccd0b,_0x122aff));}_0x560e8a[_0x8b6e('0xd')](_[_0x8b6e('0xe')]({'app':'ChanSpy','appdata':util[_0x8b6e('0xa')]('SIP/%s,%s',_0x748038[_0x8b6e('0x17')],_0x530c4d[_0x41bd32][_0x8b6e('0x18')]?_0x530c4d[_0x41bd32][_0x8b6e('0x18')][_0x8b6e('0x19')](''):''),'priority':_0x3836b8++},_0x4ccd0b,_0x122aff));if(_0x530c4d[_0x41bd32][_0x8b6e('0x12')]){_0x560e8a['push'](_[_0x8b6e('0xe')]({'app':_0x8b6e('0x1a'),'priority':_0x3836b8++},_0x4ccd0b,_0x122aff));}}return _0x560e8a;};var getUserApplications=function(_0x5bceeb,_0x13598e){var _0x2c6c05=[_0x8b6e('0x1b'),_0x8b6e('0x1c'),'gsm'];var _0xdceb2a={'context':_0x5bceeb[_0x8b6e('0x7')]||_0x8b6e('0x8'),'exten':_0x13598e,'type':_0x8b6e('0x9'),'isApp':![],'UserId':_0x5bceeb['id']};var _0x57a1af=[{'app':'Set','appdata':_0x8b6e('0x1d')}];if(_0x5bceeb[_0x8b6e('0x1e')]&&_['includes'](_0x2c6c05,_0x5bceeb[_0x8b6e('0x1e')])){_0x57a1af[_0x8b6e('0xd')]({'app':_0x8b6e('0xf'),'appdata':_0x8b6e('0x1f')});_0x57a1af['push']({'app':_0x8b6e('0xf'),'appdata':util[_0x8b6e('0xa')](_0x8b6e('0x20'),_0x5bceeb[_0x8b6e('0x1e')])});_0x57a1af[_0x8b6e('0xd')]({'app':_0x8b6e('0x21'),'appdata':util[_0x8b6e('0xa')](_0x8b6e('0x22'),_0x5bceeb[_0x8b6e('0x17')])});}else{_0x57a1af[_0x8b6e('0xd')]({'app':_0x8b6e('0x21'),'appdata':util[_0x8b6e('0xa')](_0x8b6e('0x23'),_0x5bceeb[_0x8b6e('0x17')])});}_0x57a1af[_0x8b6e('0xd')]({'app':_0x8b6e('0x24')});for(var _0x30ada5=0x0;_0x30ada5<_0x57a1af[_0x8b6e('0x6')];_0x30ada5++){_0x57a1af[_0x30ada5][_0x8b6e('0x25')]=_0x30ada5+0x1;_0x57a1af[_0x30ada5]=_['defaults'](_0x57a1af[_0x30ada5],_0xdceb2a);}return _0x57a1af;};var getChanSpyPromise=function(_0x525a39,_0x16776a){return new BPromise(function(_0x51ce51,_0x437795){return _0x525a39[_0x8b6e('0x26')]['findAll']()[_0x8b6e('0x27')](function(_0x191a24){if(_0x191a24){var _0x132dd3=getChanSpyApplications(_0x16776a,_0x16776a[_0x8b6e('0x28')],_0x191a24);if(_0x16776a[_0x8b6e('0x28')]!=_0x16776a[_0x8b6e('0x17')]){_0x132dd3=_0x132dd3[_0x8b6e('0x29')](getChanSpyApplications(_0x16776a,_0x16776a[_0x8b6e('0x17')],_0x191a24));}return _0x51ce51(_0x132dd3);}return _0x51ce51([]);})[_0x8b6e('0x2a')](function(_0x360496){_0x437795(_0x360496);});});};module[_0x8b6e('0x2b')]=function(_0x273b46){var _0x17124e=_0x273b46[_0x8b6e('0x2c')];return _0x273b46[_0x8b6e('0x2d')]('User',attributes,{'tableName':_0x8b6e('0x2e'),'charset':_0x8b6e('0x2f'),'collate':_0x8b6e('0x30'),'hooks':{'beforeCreate':function(_0x19e4b0,_0x31171d,_0x32eedb){var _0x15aca3=typeof _0x19e4b0['userProfileId']==='undefined'?BPromise[_0x8b6e('0x31')](null):_0x17124e[_0x8b6e('0x32')][_0x8b6e('0x33')]({'where':{'id':_0x19e4b0[_0x8b6e('0x34')]}});_0x15aca3[_0x8b6e('0x27')](function(_0x4338c0){if(_0x4338c0){_0x19e4b0[_0x8b6e('0x35')]=_0x4338c0[_0x8b6e('0x35')];}})['then'](function(){_0x19e4b0[_0x8b6e('0x36')]();_0x19e4b0[_0x8b6e('0x37')](_0x32eedb);})['catch'](function(_0x7e3e35){_0x32eedb(_0x7e3e35);});},'beforeUpdate':function(_0x3d4820,_0xa3a591,_0x52bf66){Promise['resolve']()[_0x8b6e('0x27')](function(){if(_0x3d4820[_0x8b6e('0x38')]('userProfileId')===![])return;return _0x17124e[_0x8b6e('0x32')][_0x8b6e('0x33')]({'where':{'id':_0x3d4820[_0x8b6e('0x34')]}})[_0x8b6e('0x27')](function(_0x343a98){if(_0x343a98)_0x3d4820[_0x8b6e('0x35')]=_0x343a98['privacyEnabled'];return;});})[_0x8b6e('0x27')](function(){if(_0x3d4820['changed'](_0x8b6e('0x16'))){_0x3d4820[_0x8b6e('0x36')]();return _0x3d4820[_0x8b6e('0x37')](_0x52bf66);}_0x52bf66();})[_0x8b6e('0x2a')](function(_0x21e7dc){_0x52bf66(_0x21e7dc);});},'afterCreate':function(_0x5ca5b7,_0x2970ca,_0x97c934){var _0x492010=getUserApplications(_0x5ca5b7,_0x5ca5b7[_0x8b6e('0x28')]);if(_0x5ca5b7[_0x8b6e('0x28')]!=_0x5ca5b7[_0x8b6e('0x17')]){_0x492010=_0x492010['concat'](getUserApplications(_0x5ca5b7,_0x5ca5b7[_0x8b6e('0x17')]));}return Promise[_0x8b6e('0x31')]()[_0x8b6e('0x27')](function(){if(!_0x5ca5b7[_0x8b6e('0x39')]){return _0x5ca5b7[_0x8b6e('0x3a')]({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})[_0x8b6e('0x27')](function(){return _0x17124e[_0x8b6e('0x3b')][_0x8b6e('0x3c')](_0x492010);})[_0x8b6e('0x27')](function(){if(_0x5ca5b7[_0x8b6e('0x11')]){return getChanSpyPromise(_0x17124e,_0x5ca5b7);}})['then'](function(_0x2cad69){if(_0x2cad69&&_0x2cad69[_0x8b6e('0x6')]){return _0x17124e[_0x8b6e('0x3b')][_0x8b6e('0x3c')](_0x2cad69);}})['then'](function(){_0x97c934();})[_0x8b6e('0x2a')](function(_0x4df30b){_0x97c934(_0x4df30b);});},'afterUpdate':function(_0x333189,_0x303747,_0x1b36f9){return BPromise[_0x8b6e('0x31')]()[_0x8b6e('0x27')](function(){if(_0x333189[_0x8b6e('0x38')]('chanspy')||_0x333189[_0x8b6e('0x38')](_0x8b6e('0x7'))){return _0x17124e[_0x8b6e('0x3b')][_0x8b6e('0x3d')]({'where':{'UserId':_0x333189['id'],'type':_0x8b6e('0x9'),'ChanSpyId':{'$ne':null}}})[_0x8b6e('0x27')](function(){if(_0x333189[_0x8b6e('0x11')]){return getChanSpyPromise(_0x17124e,_0x333189)['then'](function(_0x169c2e){if(_0x169c2e&&_0x169c2e[_0x8b6e('0x6')]){return _0x17124e[_0x8b6e('0x3b')][_0x8b6e('0x3c')](_0x169c2e);}});}});}})['then'](function(){if(_0x333189['changed'](_0x8b6e('0x1e'))||_0x333189[_0x8b6e('0x38')](_0x8b6e('0x7'))){return _0x17124e['VoiceExtension'][_0x8b6e('0x3d')]({'where':{'UserId':_0x333189['id'],'type':_0x8b6e('0x9'),'ChanSpyId':null}})[_0x8b6e('0x27')](function(){var _0xff4b06=getUserApplications(_0x333189,_0x333189['internal']);if(_0x333189[_0x8b6e('0x28')]!=_0x333189[_0x8b6e('0x17')]){_0xff4b06=_0xff4b06[_0x8b6e('0x29')](getUserApplications(_0x333189,_0x333189[_0x8b6e('0x17')]));}return _0x17124e[_0x8b6e('0x3b')][_0x8b6e('0x3c')](_0xff4b06);});}})[_0x8b6e('0x27')](function(){_0x1b36f9();})[_0x8b6e('0x2a')](function(_0xe7b1e5){_0x1b36f9(_0xe7b1e5);});},'afterDestroy':function(_0x3f6b97){return _0x17124e[_0x8b6e('0x3b')][_0x8b6e('0x3d')]({'where':{'UserId':_0x3f6b97['id'],'type':_0x8b6e('0x9')}});}},'instanceMethods':{'authenticate':function(_0x58a0a9,_0x91caf8){if(!_0x91caf8){return this[_0x8b6e('0x16')]===this[_0x8b6e('0x3e')](_0x58a0a9);}var _0x1a7558=this;this[_0x8b6e('0x3e')](_0x58a0a9,function(_0xf81c5b,_0xc3c5c2){if(_0xf81c5b){_0x91caf8(_0xf81c5b);}if(_0x1a7558['password']===_0xc3c5c2){_0x91caf8(null,!![]);}else{_0x91caf8(null,![]);}});},'makeSalt':function(_0x31e935,_0x360ecf){var _0x2cc14b=0x10;if(typeof arguments[0x0]===_0x8b6e('0x3f')){_0x360ecf=arguments[0x0];_0x31e935=_0x2cc14b;}else if(typeof arguments[0x1]===_0x8b6e('0x3f')){_0x360ecf=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x31e935){_0x31e935=_0x2cc14b;}return crypto[_0x8b6e('0x40')](_0x31e935,function(_0x246913,_0x56f214){if(_0x246913){_0x360ecf(_0x246913);}return _0x360ecf(null,_0x56f214[_0x8b6e('0x41')](_0x8b6e('0x42')));});},'encryptPassword':function(_0x38635d,_0x5cecb3){if(!_0x38635d||!this['salt']){return _0x5cecb3?_0x5cecb3(null):null;}var _0x3f0788=0x2710;var _0x5e811c=0x40;var _0x3cd22a=new Buffer(this['salt'],_0x8b6e('0x42'));if(!_0x5cecb3){return crypto[_0x8b6e('0x43')](_0x38635d,_0x3cd22a,_0x3f0788,_0x5e811c,_0x8b6e('0x44'))[_0x8b6e('0x41')]('base64');}return crypto['pbkdf2'](_0x38635d,_0x3cd22a,_0x3f0788,_0x5e811c,_0x8b6e('0x44'),function(_0x459b9c,_0x3bdc15){if(_0x459b9c){_0x5cecb3(_0x459b9c);}return _0x5cecb3(null,_0x3bdc15[_0x8b6e('0x41')](_0x8b6e('0x42')));});},'updatePassword':function(_0x2be587){if(!this[_0x8b6e('0x16')]){return _0x2be587(null);}if(!validatePresenceOf(this[_0x8b6e('0x16')])&&authTypes['indexOf'](this[_0x8b6e('0x45')])===-0x1){_0x2be587(new Error(_0x8b6e('0x46')));}var _0x217042=this;this['makeSalt'](function(_0x58ddf7,_0x1af82f){if(_0x58ddf7){return _0x2be587(_0x58ddf7);}_0x217042[_0x8b6e('0x47')]=_0x1af82f;_0x217042[_0x8b6e('0x3e')](_0x217042[_0x8b6e('0x16')],function(_0x5236bd,_0x88dc80){if(_0x5236bd){_0x2be587(_0x5236bd);}_0x217042[_0x8b6e('0x16')]=_0x88dc80;_0x2be587(null);});});},'updateMd5Password':function(){this[_0x8b6e('0x48')]=md5(this[_0x8b6e('0x17')]+_0x8b6e('0x49')+this[_0x8b6e('0x16')]);return this[_0x8b6e('0x48')];}}});};