Built motion from commit (unavailable).|2.5.7
[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 _0x169f=['Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','exports','models','define','utf8','utf8_bin','updateMd5Password','changed','updatePassword','VoiceExtension','bulkCreate','resolve','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','sha1','pbkdf2','indexOf','provider','md5secret','bluebird','crypto','util','md5','lodash','./user.attributes','google','length','context','from-sip','system','format','merge','Set','CDR(type)=%s','chanspy','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','push','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','gsm','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x169f,0x135));var _0xf169=function(_0x1f42ee,_0x540599){_0x1f42ee=_0x1f42ee-0x0;var _0x241645=_0x169f[_0x1f42ee];return _0x241645;};'use strict';var BPromise=require(_0xf169('0x0'));var crypto=require(_0xf169('0x1'));var util=require(_0xf169('0x2'));var md5=require(_0xf169('0x3'));var _=require(_0xf169('0x4'));var attributes=require(_0xf169('0x5'));var authTypes=[_0xf169('0x6')];var validatePresenceOf=function(_0x77656a){return _0x77656a&&_0x77656a[_0xf169('0x7')];};var getChanSpyApplications=function(_0x243bca,_0x55111f,_0x197ba6){var _0x123e7b={'context':_0x243bca[_0xf169('0x8')]||_0xf169('0x9'),'type':_0xf169('0xa'),'isApp':![],'UserId':_0x243bca['id']};var _0x17b07c=[];for(var _0x214e6e=0x0,_0x5ab2ef=0x1;_0x214e6e<_0x197ba6[_0xf169('0x7')];_0x214e6e++,_0x5ab2ef=0x1){var _0x531bfb={'exten':util[_0xf169('0xb')]('%s%s',_0x197ba6[_0x214e6e]['prefix'],_0x55111f),'ChanSpyId':_0x197ba6[_0x214e6e]['id']};_0x17b07c['push'](_[_0xf169('0xc')]({'app':_0xf169('0xd'),'appdata':util[_0xf169('0xb')](_0xf169('0xe'),_0xf169('0xf')),'priority':_0x5ab2ef++},_0x123e7b,_0x531bfb));if(_0x197ba6[_0x214e6e]['record']){_0x17b07c['push'](_[_0xf169('0xc')]({'app':_0xf169('0x10'),'appdata':util[_0xf169('0xb')](_0xf169('0x11'),_0x197ba6[_0x214e6e][_0xf169('0x12')]),'priority':_0x5ab2ef++},_0x123e7b,_0x531bfb));}if(_0x197ba6[_0x214e6e][_0xf169('0x13')]){_0x17b07c[_0xf169('0x14')](_['merge']({'app':_0xf169('0x15'),'appdata':_0x197ba6[_0x214e6e][_0xf169('0x16')],'priority':_0x5ab2ef++},_0x123e7b,_0x531bfb));}_0x17b07c[_0xf169('0x14')](_['merge']({'app':_0xf169('0x17'),'appdata':util['format'](_0xf169('0x18'),_0x243bca[_0xf169('0x19')],_0x197ba6[_0x214e6e][_0xf169('0x1a')]?_0x197ba6[_0x214e6e][_0xf169('0x1a')][_0xf169('0x1b')](''):''),'priority':_0x5ab2ef++},_0x123e7b,_0x531bfb));if(_0x197ba6[_0x214e6e]['record']){_0x17b07c[_0xf169('0x14')](_[_0xf169('0xc')]({'app':_0xf169('0x1c'),'priority':_0x5ab2ef++},_0x123e7b,_0x531bfb));}}return _0x17b07c;};var getUserApplications=function(_0xdeeab,_0x2dcebf){var _0x3ef4fd=['wav','WAV',_0xf169('0x1d')];var _0x2d3162={'context':_0xdeeab[_0xf169('0x8')]||'from-sip','exten':_0x2dcebf,'type':_0xf169('0xa'),'isApp':![],'UserId':_0xdeeab['id']};var _0x5474bf=[{'app':_0xf169('0xd'),'appdata':'CDR(type)=internal'}];if(_0xdeeab[_0xf169('0x1e')]&&_['includes'](_0x3ef4fd,_0xdeeab[_0xf169('0x1e')])){_0x5474bf[_0xf169('0x14')]({'app':_0xf169('0xd'),'appdata':_0xf169('0x1f')});_0x5474bf['push']({'app':_0xf169('0xd'),'appdata':util[_0xf169('0xb')](_0xf169('0x20'),_0xdeeab[_0xf169('0x1e')])});_0x5474bf[_0xf169('0x14')]({'app':_0xf169('0x21'),'appdata':util[_0xf169('0xb')](_0xf169('0x22'),_0xdeeab[_0xf169('0x19')])});}else{_0x5474bf[_0xf169('0x14')]({'app':_0xf169('0x21'),'appdata':util[_0xf169('0xb')](_0xf169('0x23'),_0xdeeab[_0xf169('0x19')])});}_0x5474bf[_0xf169('0x14')]({'app':_0xf169('0x24')});for(var _0x153001=0x0;_0x153001<_0x5474bf[_0xf169('0x7')];_0x153001++){_0x5474bf[_0x153001][_0xf169('0x25')]=_0x153001+0x1;_0x5474bf[_0x153001]=_[_0xf169('0x26')](_0x5474bf[_0x153001],_0x2d3162);}return _0x5474bf;};var getChanSpyPromise=function(_0x21b520,_0x32391f){return new BPromise(function(_0x2d7508,_0x419a74){return _0x21b520[_0xf169('0x27')][_0xf169('0x28')]()[_0xf169('0x29')](function(_0x272072){if(_0x272072){var _0x5dda34=getChanSpyApplications(_0x32391f,_0x32391f[_0xf169('0x2a')],_0x272072);if(_0x32391f[_0xf169('0x2a')]!=_0x32391f[_0xf169('0x19')]){_0x5dda34=_0x5dda34[_0xf169('0x2b')](getChanSpyApplications(_0x32391f,_0x32391f['name'],_0x272072));}return _0x2d7508(_0x5dda34);}return _0x2d7508([]);})[_0xf169('0x2c')](function(_0x1db482){_0x419a74(_0x1db482);});});};module[_0xf169('0x2d')]=function(_0x567925,_0xb2283){var _0x3a254a=_0x567925[_0xf169('0x2e')];return _0x567925[_0xf169('0x2f')]('User',attributes,{'tableName':'users','charset':_0xf169('0x30'),'collate':_0xf169('0x31'),'hooks':{'beforeCreate':function(_0x1312b7,_0x15c94c,_0x41767a){_0x1312b7[_0xf169('0x32')]();_0x1312b7['updatePassword'](_0x41767a);},'beforeUpdate':function(_0xe2dc2f,_0xab51ac,_0x2a6c6d){if(_0xe2dc2f[_0xf169('0x33')]('password')){_0xe2dc2f[_0xf169('0x32')]();return _0xe2dc2f[_0xf169('0x34')](_0x2a6c6d);}_0x2a6c6d();},'afterCreate':function(_0x15fc6a,_0x3155b8,_0x51fe04){var _0x515b0b=getUserApplications(_0x15fc6a,_0x15fc6a['internal']);if(_0x15fc6a[_0xf169('0x2a')]!=_0x15fc6a['name']){_0x515b0b=_0x515b0b[_0xf169('0x2b')](getUserApplications(_0x15fc6a,_0x15fc6a[_0xf169('0x19')]));}return _0x3a254a[_0xf169('0x35')][_0xf169('0x36')](_0x515b0b)['then'](function(){if(_0x15fc6a[_0xf169('0xf')]){return getChanSpyPromise(_0x3a254a,_0x15fc6a);}})['then'](function(_0x7bada9){if(_0x7bada9&&_0x7bada9[_0xf169('0x7')]){return _0x3a254a[_0xf169('0x35')][_0xf169('0x36')](_0x7bada9);}})['then'](function(){_0x51fe04();})[_0xf169('0x2c')](function(_0x4ad8da){_0x51fe04(_0x4ad8da);});},'afterUpdate':function(_0x111b81,_0x3f8379,_0x8888c4){return BPromise[_0xf169('0x37')]()[_0xf169('0x29')](function(){if(_0x111b81['changed'](_0xf169('0xf'))||_0x111b81[_0xf169('0x33')](_0xf169('0x8'))){return _0x3a254a[_0xf169('0x35')][_0xf169('0x38')]({'where':{'UserId':_0x111b81['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xf169('0x29')](function(){if(_0x111b81['chanspy']){return getChanSpyPromise(_0x3a254a,_0x111b81)[_0xf169('0x29')](function(_0x523d67){if(_0x523d67&&_0x523d67['length']){return _0x3a254a['VoiceExtension'][_0xf169('0x36')](_0x523d67);}});}});}})[_0xf169('0x29')](function(){if(_0x111b81[_0xf169('0x33')](_0xf169('0x1e'))||_0x111b81[_0xf169('0x33')](_0xf169('0x8'))){return _0x3a254a[_0xf169('0x35')]['destroy']({'where':{'UserId':_0x111b81['id'],'type':'system','ChanSpyId':null}})[_0xf169('0x29')](function(){var _0x5b825d=getUserApplications(_0x111b81,_0x111b81[_0xf169('0x2a')]);if(_0x111b81['internal']!=_0x111b81[_0xf169('0x19')]){_0x5b825d=_0x5b825d[_0xf169('0x2b')](getUserApplications(_0x111b81,_0x111b81[_0xf169('0x19')]));}return _0x3a254a['VoiceExtension'][_0xf169('0x36')](_0x5b825d);});}})['then'](function(){_0x8888c4();})['catch'](function(_0x321799){_0x8888c4(_0x321799);});},'afterDestroy':function(_0x1a7575,_0x3f795f){return _0x3a254a[_0xf169('0x35')][_0xf169('0x38')]({'where':{'UserId':_0x1a7575['id'],'type':_0xf169('0xa')}});}},'instanceMethods':{'authenticate':function(_0x2071dc,_0x1cc5a5){if(!_0x1cc5a5){return this[_0xf169('0x16')]===this['encryptPassword'](_0x2071dc);}var _0x1a8051=this;this[_0xf169('0x39')](_0x2071dc,function(_0x56c0e5,_0x43f64e){if(_0x56c0e5){_0x1cc5a5(_0x56c0e5);}if(_0x1a8051[_0xf169('0x16')]===_0x43f64e){_0x1cc5a5(null,!![]);}else{_0x1cc5a5(null,![]);}});},'makeSalt':function(_0x2beb8f,_0x4d880e){var _0x100fb3=0x10;if(typeof arguments[0x0]===_0xf169('0x3a')){_0x4d880e=arguments[0x0];_0x2beb8f=_0x100fb3;}else if(typeof arguments[0x1]===_0xf169('0x3a')){_0x4d880e=arguments[0x1];}else{throw new Error(_0xf169('0x3b'));}if(!_0x2beb8f){_0x2beb8f=_0x100fb3;}return crypto[_0xf169('0x3c')](_0x2beb8f,function(_0x4dfc18,_0x176c73){if(_0x4dfc18){_0x4d880e(_0x4dfc18);}return _0x4d880e(null,_0x176c73[_0xf169('0x3d')](_0xf169('0x3e')));});},'encryptPassword':function(_0x49044a,_0x29b766){if(!_0x49044a||!this[_0xf169('0x3f')]){return _0x29b766?_0x29b766(null):null;}var _0x24bad6=0x2710;var _0x5e44cd=0x40;var _0x193c05=new Buffer(this[_0xf169('0x3f')],'base64');if(!_0x29b766){return crypto['pbkdf2Sync'](_0x49044a,_0x193c05,_0x24bad6,_0x5e44cd,_0xf169('0x40'))['toString'](_0xf169('0x3e'));}return crypto[_0xf169('0x41')](_0x49044a,_0x193c05,_0x24bad6,_0x5e44cd,_0xf169('0x40'),function(_0x594808,_0x56e613){if(_0x594808){_0x29b766(_0x594808);}return _0x29b766(null,_0x56e613[_0xf169('0x3d')](_0xf169('0x3e')));});},'updatePassword':function(_0x64e2f7){if(!this[_0xf169('0x16')]){return _0x64e2f7(null);}if(!validatePresenceOf(this[_0xf169('0x16')])&&authTypes[_0xf169('0x42')](this[_0xf169('0x43')])===-0x1){_0x64e2f7(new Error('Invalid\x20password'));}var _0x5495b4=this;this['makeSalt'](function(_0x62e39e,_0x5ec3a9){if(_0x62e39e){return _0x64e2f7(_0x62e39e);}_0x5495b4[_0xf169('0x3f')]=_0x5ec3a9;_0x5495b4['encryptPassword'](_0x5495b4['password'],function(_0x545e66,_0x7d129a){if(_0x545e66){_0x64e2f7(_0x545e66);}_0x5495b4[_0xf169('0x16')]=_0x7d129a;_0x64e2f7(null);});});},'updateMd5Password':function(){this[_0xf169('0x44')]=md5(this[_0xf169('0x19')]+':asterisk:'+this[_0xf169('0x16')]);return this[_0xf169('0x44')];}}});};