7d0c5ee3b4b99ecf4be4a9aae85f402dbf65b301
[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 _0x5f5e=['bluebird','util','md5','lodash','./user.attributes','google','system','length','%s%s','push','merge','format','chanspy','record','MixMonitor','recordingFormat','auth','password','ChanSpy','SIP/%s,%s','name','options','wav','gsm','context','from-sip','Set','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','priority','VoiceChanSpy','findAll','then','internal','concat','catch','exports','define','User','utf8','userProfileId','undefined','resolve','UserProfile','find','updateMd5Password','updatePassword','privacyEnabled','VoiceExtension','bulkCreate','changed','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:'];(function(_0x5cced6,_0x19734f){var _0x4d6e7a=function(_0x39f717){while(--_0x39f717){_0x5cced6['push'](_0x5cced6['shift']());}};_0x4d6e7a(++_0x19734f);}(_0x5f5e,0x120));var _0xe5f5=function(_0x216b59,_0xd42aac){_0x216b59=_0x216b59-0x0;var _0x798b81=_0x5f5e[_0x216b59];return _0x798b81;};'use strict';var BPromise=require(_0xe5f5('0x0'));var crypto=require('crypto');var util=require(_0xe5f5('0x1'));var md5=require(_0xe5f5('0x2'));var _=require(_0xe5f5('0x3'));var attributes=require(_0xe5f5('0x4'));var authTypes=[_0xe5f5('0x5')];var validatePresenceOf=function(_0x4760f7){return _0x4760f7&&_0x4760f7['length'];};var getChanSpyApplications=function(_0x17be35,_0x38670b,_0x583d25){var _0x2f9443={'context':_0x17be35['context']||'from-sip','type':_0xe5f5('0x6'),'isApp':![],'UserId':_0x17be35['id']};var _0x358f20=[];for(var _0x2c9ed8=0x0,_0x3fe684=0x1;_0x2c9ed8<_0x583d25[_0xe5f5('0x7')];_0x2c9ed8++,_0x3fe684=0x1){var _0x40aa56={'exten':util['format'](_0xe5f5('0x8'),_0x583d25[_0x2c9ed8]['prefix'],_0x38670b),'ChanSpyId':_0x583d25[_0x2c9ed8]['id']};_0x358f20[_0xe5f5('0x9')](_[_0xe5f5('0xa')]({'app':'Set','appdata':util[_0xe5f5('0xb')]('CDR(type)=%s',_0xe5f5('0xc')),'priority':_0x3fe684++},_0x2f9443,_0x40aa56));if(_0x583d25[_0x2c9ed8][_0xe5f5('0xd')]){_0x358f20[_0xe5f5('0x9')](_[_0xe5f5('0xa')]({'app':_0xe5f5('0xe'),'appdata':util[_0xe5f5('0xb')]('${UNIQUEID}.%s,a',_0x583d25[_0x2c9ed8][_0xe5f5('0xf')]),'priority':_0x3fe684++},_0x2f9443,_0x40aa56));}if(_0x583d25[_0x2c9ed8][_0xe5f5('0x10')]){_0x358f20[_0xe5f5('0x9')](_[_0xe5f5('0xa')]({'app':'Authenticate','appdata':_0x583d25[_0x2c9ed8][_0xe5f5('0x11')],'priority':_0x3fe684++},_0x2f9443,_0x40aa56));}_0x358f20['push'](_[_0xe5f5('0xa')]({'app':_0xe5f5('0x12'),'appdata':util[_0xe5f5('0xb')](_0xe5f5('0x13'),_0x17be35[_0xe5f5('0x14')],_0x583d25[_0x2c9ed8]['options']?_0x583d25[_0x2c9ed8][_0xe5f5('0x15')]['join'](''):''),'priority':_0x3fe684++},_0x2f9443,_0x40aa56));if(_0x583d25[_0x2c9ed8][_0xe5f5('0xd')]){_0x358f20[_0xe5f5('0x9')](_[_0xe5f5('0xa')]({'app':'StopMixMonitor','priority':_0x3fe684++},_0x2f9443,_0x40aa56));}}return _0x358f20;};var getUserApplications=function(_0x5b3104,_0x5874d1){var _0x5d583f=[_0xe5f5('0x16'),'WAV',_0xe5f5('0x17')];var _0x2b7c2b={'context':_0x5b3104[_0xe5f5('0x18')]||_0xe5f5('0x19'),'exten':_0x5874d1,'type':'system','isApp':![],'UserId':_0x5b3104['id']};var _0x24555e=[{'app':_0xe5f5('0x1a'),'appdata':_0xe5f5('0x1b')}];if(_0x5b3104[_0xe5f5('0x1c')]&&_['includes'](_0x5d583f,_0x5b3104[_0xe5f5('0x1c')])){_0x24555e[_0xe5f5('0x9')]({'app':'Set','appdata':_0xe5f5('0x1d')});_0x24555e[_0xe5f5('0x9')]({'app':_0xe5f5('0x1a'),'appdata':util[_0xe5f5('0xb')](_0xe5f5('0x1e'),_0x5b3104['extensionMonitor'])});_0x24555e[_0xe5f5('0x9')]({'app':_0xe5f5('0x1f'),'appdata':util[_0xe5f5('0xb')](_0xe5f5('0x20'),_0x5b3104[_0xe5f5('0x14')])});}else{_0x24555e[_0xe5f5('0x9')]({'app':_0xe5f5('0x1f'),'appdata':util[_0xe5f5('0xb')](_0xe5f5('0x21'),_0x5b3104[_0xe5f5('0x14')])});}_0x24555e[_0xe5f5('0x9')]({'app':'Hangup'});for(var _0x3c9761=0x0;_0x3c9761<_0x24555e['length'];_0x3c9761++){_0x24555e[_0x3c9761][_0xe5f5('0x22')]=_0x3c9761+0x1;_0x24555e[_0x3c9761]=_['defaults'](_0x24555e[_0x3c9761],_0x2b7c2b);}return _0x24555e;};var getChanSpyPromise=function(_0x4c393f,_0x2a4a67){return new BPromise(function(_0x9003c,_0x3e14ae){return _0x4c393f[_0xe5f5('0x23')][_0xe5f5('0x24')]()[_0xe5f5('0x25')](function(_0x1ef797){if(_0x1ef797){var _0x373067=getChanSpyApplications(_0x2a4a67,_0x2a4a67['internal'],_0x1ef797);if(_0x2a4a67[_0xe5f5('0x26')]!=_0x2a4a67[_0xe5f5('0x14')]){_0x373067=_0x373067[_0xe5f5('0x27')](getChanSpyApplications(_0x2a4a67,_0x2a4a67[_0xe5f5('0x14')],_0x1ef797));}return _0x9003c(_0x373067);}return _0x9003c([]);})[_0xe5f5('0x28')](function(_0x2a3c8a){_0x3e14ae(_0x2a3c8a);});});};module[_0xe5f5('0x29')]=function(_0x1bd707,_0x143089){var _0x72b036=_0x1bd707['models'];return _0x1bd707[_0xe5f5('0x2a')](_0xe5f5('0x2b'),attributes,{'tableName':'users','charset':_0xe5f5('0x2c'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x4cef74,_0x32c18c,_0x59da26){var _0x354b2a=typeof _0x4cef74[_0xe5f5('0x2d')]===_0xe5f5('0x2e')?BPromise[_0xe5f5('0x2f')](null):_0x72b036[_0xe5f5('0x30')][_0xe5f5('0x31')]({'where':{'id':_0x4cef74[_0xe5f5('0x2d')]}});_0x354b2a[_0xe5f5('0x25')](function(_0x522b47){if(_0x522b47){_0x4cef74['privacyEnabled']=_0x522b47['privacyEnabled'];}})['then'](function(){_0x4cef74[_0xe5f5('0x32')]();_0x4cef74[_0xe5f5('0x33')](_0x59da26);})['catch'](function(_0x594e8d){_0x59da26(_0x594e8d);});},'beforeUpdate':function(_0x50fc00,_0x5d02b0,_0x17a5d0){Promise[_0xe5f5('0x2f')]()['then'](function(){if(_0x50fc00['changed'](_0xe5f5('0x2d'))===![])return;return _0x72b036[_0xe5f5('0x30')][_0xe5f5('0x31')]({'where':{'id':_0x50fc00['userProfileId']}})[_0xe5f5('0x25')](function(_0x195898){if(_0x195898)_0x50fc00[_0xe5f5('0x34')]=_0x195898[_0xe5f5('0x34')];return;});})['then'](function(){if(_0x50fc00['changed'](_0xe5f5('0x11'))){_0x50fc00[_0xe5f5('0x32')]();return _0x50fc00[_0xe5f5('0x33')](_0x17a5d0);}_0x17a5d0();})[_0xe5f5('0x28')](function(_0x14f99e){_0x17a5d0(_0x14f99e);});},'afterCreate':function(_0x87b229,_0x166778,_0x3e2cf3){var _0x506e9c=getUserApplications(_0x87b229,_0x87b229[_0xe5f5('0x26')]);if(_0x87b229[_0xe5f5('0x26')]!=_0x87b229[_0xe5f5('0x14')]){_0x506e9c=_0x506e9c[_0xe5f5('0x27')](getUserApplications(_0x87b229,_0x87b229['name']));}return _0x72b036[_0xe5f5('0x35')][_0xe5f5('0x36')](_0x506e9c)[_0xe5f5('0x25')](function(){if(_0x87b229[_0xe5f5('0xc')]){return getChanSpyPromise(_0x72b036,_0x87b229);}})[_0xe5f5('0x25')](function(_0x13600e){if(_0x13600e&&_0x13600e[_0xe5f5('0x7')]){return _0x72b036[_0xe5f5('0x35')][_0xe5f5('0x36')](_0x13600e);}})[_0xe5f5('0x25')](function(){_0x3e2cf3();})['catch'](function(_0x433e49){_0x3e2cf3(_0x433e49);});},'afterUpdate':function(_0x203fd6,_0x599bd0,_0x64e62){return BPromise[_0xe5f5('0x2f')]()[_0xe5f5('0x25')](function(){if(_0x203fd6[_0xe5f5('0x37')]('chanspy')||_0x203fd6[_0xe5f5('0x37')](_0xe5f5('0x18'))){return _0x72b036[_0xe5f5('0x35')]['destroy']({'where':{'UserId':_0x203fd6['id'],'type':'system','ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x203fd6[_0xe5f5('0xc')]){return getChanSpyPromise(_0x72b036,_0x203fd6)[_0xe5f5('0x25')](function(_0x437738){if(_0x437738&&_0x437738[_0xe5f5('0x7')]){return _0x72b036[_0xe5f5('0x35')]['bulkCreate'](_0x437738);}});}});}})['then'](function(){if(_0x203fd6[_0xe5f5('0x37')](_0xe5f5('0x1c'))||_0x203fd6[_0xe5f5('0x37')](_0xe5f5('0x18'))){return _0x72b036['VoiceExtension']['destroy']({'where':{'UserId':_0x203fd6['id'],'type':_0xe5f5('0x6'),'ChanSpyId':null}})[_0xe5f5('0x25')](function(){var _0x14b7ad=getUserApplications(_0x203fd6,_0x203fd6['internal']);if(_0x203fd6[_0xe5f5('0x26')]!=_0x203fd6[_0xe5f5('0x14')]){_0x14b7ad=_0x14b7ad['concat'](getUserApplications(_0x203fd6,_0x203fd6[_0xe5f5('0x14')]));}return _0x72b036['VoiceExtension'][_0xe5f5('0x36')](_0x14b7ad);});}})['then'](function(){_0x64e62();})[_0xe5f5('0x28')](function(_0x33bde){_0x64e62(_0x33bde);});},'afterDestroy':function(_0x133741,_0x131d5b){return _0x72b036[_0xe5f5('0x35')]['destroy']({'where':{'UserId':_0x133741['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x443cc7,_0x4cc83b){if(!_0x4cc83b){return this[_0xe5f5('0x11')]===this[_0xe5f5('0x38')](_0x443cc7);}var _0x54dd2b=this;this['encryptPassword'](_0x443cc7,function(_0x11db4a,_0x1d3d2a){if(_0x11db4a){_0x4cc83b(_0x11db4a);}if(_0x54dd2b[_0xe5f5('0x11')]===_0x1d3d2a){_0x4cc83b(null,!![]);}else{_0x4cc83b(null,![]);}});},'makeSalt':function(_0x32c7d7,_0x16fef2){var _0x595f40=0x10;if(typeof arguments[0x0]===_0xe5f5('0x39')){_0x16fef2=arguments[0x0];_0x32c7d7=_0x595f40;}else if(typeof arguments[0x1]==='function'){_0x16fef2=arguments[0x1];}else{throw new Error(_0xe5f5('0x3a'));}if(!_0x32c7d7){_0x32c7d7=_0x595f40;}return crypto[_0xe5f5('0x3b')](_0x32c7d7,function(_0x5ee143,_0x3a2f37){if(_0x5ee143){_0x16fef2(_0x5ee143);}return _0x16fef2(null,_0x3a2f37[_0xe5f5('0x3c')](_0xe5f5('0x3d')));});},'encryptPassword':function(_0x169200,_0xfe21b9){if(!_0x169200||!this[_0xe5f5('0x3e')]){return _0xfe21b9?_0xfe21b9(null):null;}var _0x4ebdbc=0x2710;var _0x4001a3=0x40;var _0x38466f=new Buffer(this[_0xe5f5('0x3e')],_0xe5f5('0x3d'));if(!_0xfe21b9){return crypto[_0xe5f5('0x3f')](_0x169200,_0x38466f,_0x4ebdbc,_0x4001a3,_0xe5f5('0x40'))[_0xe5f5('0x3c')](_0xe5f5('0x3d'));}return crypto[_0xe5f5('0x41')](_0x169200,_0x38466f,_0x4ebdbc,_0x4001a3,_0xe5f5('0x40'),function(_0x54a7c0,_0x42289c){if(_0x54a7c0){_0xfe21b9(_0x54a7c0);}return _0xfe21b9(null,_0x42289c['toString'](_0xe5f5('0x3d')));});},'updatePassword':function(_0x5395e3){if(!this[_0xe5f5('0x11')]){return _0x5395e3(null);}if(!validatePresenceOf(this[_0xe5f5('0x11')])&&authTypes[_0xe5f5('0x42')](this[_0xe5f5('0x43')])===-0x1){_0x5395e3(new Error(_0xe5f5('0x44')));}var _0x4648b9=this;this[_0xe5f5('0x45')](function(_0x34dc6b,_0x30e4fa){if(_0x34dc6b){return _0x5395e3(_0x34dc6b);}_0x4648b9['salt']=_0x30e4fa;_0x4648b9[_0xe5f5('0x38')](_0x4648b9['password'],function(_0x21e37f,_0x3db45a){if(_0x21e37f){_0x5395e3(_0x21e37f);}_0x4648b9['password']=_0x3db45a;_0x5395e3(null);});});},'updateMd5Password':function(){this[_0xe5f5('0x46')]=md5(this['name']+_0xe5f5('0x47')+this[_0xe5f5('0x11')]);return this['md5secret'];}}});};