2ab6ea004a76ca3af1bd6b2c87dd9092f7af876d
[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 _0xbdc4=['toString','salt','base64','pbkdf2Sync','sha1','pbkdf2','indexOf','Invalid\x20password','md5secret','bluebird','crypto','util','md5','lodash','./user.attributes','google','context','from-sip','system','length','format','%s%s','prefix','push','merge','CDR(type)=%s','chanspy','MixMonitor','recordingFormat','auth','Authenticate','options','wav','WAV','gsm','Set','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','name','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','catch','exports','models','define','utf8','updatePassword','changed','password','updateMd5Password','concat','VoiceExtension','resolve','destroy','bulkCreate','encryptPassword','function','Missing\x20Callback','randomBytes'];(function(_0x35d2ef,_0x1f0505){var _0x2accaf=function(_0x3d4986){while(--_0x3d4986){_0x35d2ef['push'](_0x35d2ef['shift']());}};_0x2accaf(++_0x1f0505);}(_0xbdc4,0x1a7));var _0x4bdc=function(_0x15c421,_0x6366f7){_0x15c421=_0x15c421-0x0;var _0x5e5ed5=_0xbdc4[_0x15c421];return _0x5e5ed5;};'use strict';var BPromise=require(_0x4bdc('0x0'));var crypto=require(_0x4bdc('0x1'));var util=require(_0x4bdc('0x2'));var md5=require(_0x4bdc('0x3'));var _=require(_0x4bdc('0x4'));var attributes=require(_0x4bdc('0x5'));var authTypes=[_0x4bdc('0x6')];var validatePresenceOf=function(_0x43a50e){return _0x43a50e&&_0x43a50e['length'];};var getChanSpyApplications=function(_0x4147b4,_0x100f30,_0x45632d){var _0x9379dd={'context':_0x4147b4[_0x4bdc('0x7')]||_0x4bdc('0x8'),'type':_0x4bdc('0x9'),'isApp':![],'UserId':_0x4147b4['id']};var _0x48fd3c=[];for(var _0x543354=0x0,_0x57ff91=0x1;_0x543354<_0x45632d[_0x4bdc('0xa')];_0x543354++,_0x57ff91=0x1){var _0x43f400={'exten':util[_0x4bdc('0xb')](_0x4bdc('0xc'),_0x45632d[_0x543354][_0x4bdc('0xd')],_0x100f30),'ChanSpyId':_0x45632d[_0x543354]['id']};_0x48fd3c[_0x4bdc('0xe')](_[_0x4bdc('0xf')]({'app':'Set','appdata':util[_0x4bdc('0xb')](_0x4bdc('0x10'),_0x4bdc('0x11')),'priority':_0x57ff91++},_0x9379dd,_0x43f400));if(_0x45632d[_0x543354]['record']){_0x48fd3c[_0x4bdc('0xe')](_[_0x4bdc('0xf')]({'app':_0x4bdc('0x12'),'appdata':util[_0x4bdc('0xb')]('${UNIQUEID}.%s,a',_0x45632d[_0x543354][_0x4bdc('0x13')]),'priority':_0x57ff91++},_0x9379dd,_0x43f400));}if(_0x45632d[_0x543354][_0x4bdc('0x14')]){_0x48fd3c[_0x4bdc('0xe')](_['merge']({'app':_0x4bdc('0x15'),'appdata':_0x45632d[_0x543354]['password'],'priority':_0x57ff91++},_0x9379dd,_0x43f400));}_0x48fd3c[_0x4bdc('0xe')](_[_0x4bdc('0xf')]({'app':'ChanSpy','appdata':util[_0x4bdc('0xb')]('SIP/%s,%s',_0x4147b4['name'],_0x45632d[_0x543354][_0x4bdc('0x16')]?_0x45632d[_0x543354][_0x4bdc('0x16')]['join'](''):''),'priority':_0x57ff91++},_0x9379dd,_0x43f400));if(_0x45632d[_0x543354]['record']){_0x48fd3c[_0x4bdc('0xe')](_[_0x4bdc('0xf')]({'app':'StopMixMonitor','priority':_0x57ff91++},_0x9379dd,_0x43f400));}}return _0x48fd3c;};var getUserApplications=function(_0x442a0b,_0x457276){var _0x1d6f2b=[_0x4bdc('0x17'),_0x4bdc('0x18'),_0x4bdc('0x19')];var _0x722a42={'context':_0x442a0b[_0x4bdc('0x7')]||_0x4bdc('0x8'),'exten':_0x457276,'type':_0x4bdc('0x9'),'isApp':![],'UserId':_0x442a0b['id']};var _0x133060=[{'app':_0x4bdc('0x1a'),'appdata':_0x4bdc('0x1b')}];if(_0x442a0b[_0x4bdc('0x1c')]&&_[_0x4bdc('0x1d')](_0x1d6f2b,_0x442a0b[_0x4bdc('0x1c')])){_0x133060['push']({'app':_0x4bdc('0x1a'),'appdata':_0x4bdc('0x1e')});_0x133060[_0x4bdc('0xe')]({'app':'Set','appdata':util[_0x4bdc('0xb')](_0x4bdc('0x1f'),_0x442a0b[_0x4bdc('0x1c')])});_0x133060['push']({'app':_0x4bdc('0x20'),'appdata':util[_0x4bdc('0xb')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x442a0b[_0x4bdc('0x21')])});}else{_0x133060[_0x4bdc('0xe')]({'app':'Dial','appdata':util[_0x4bdc('0xb')](_0x4bdc('0x22'),_0x442a0b[_0x4bdc('0x21')])});}_0x133060[_0x4bdc('0xe')]({'app':_0x4bdc('0x23')});for(var _0x504c26=0x0;_0x504c26<_0x133060['length'];_0x504c26++){_0x133060[_0x504c26][_0x4bdc('0x24')]=_0x504c26+0x1;_0x133060[_0x504c26]=_[_0x4bdc('0x25')](_0x133060[_0x504c26],_0x722a42);}return _0x133060;};var getChanSpyPromise=function(_0x376ed6,_0x381bfc){return new BPromise(function(_0xec810,_0xc0b9a4){return _0x376ed6[_0x4bdc('0x26')][_0x4bdc('0x27')]()[_0x4bdc('0x28')](function(_0xb93a00){if(_0xb93a00){var _0x41160b=getChanSpyApplications(_0x381bfc,_0x381bfc['internal'],_0xb93a00);if(_0x381bfc[_0x4bdc('0x29')]!=_0x381bfc[_0x4bdc('0x21')]){_0x41160b=_0x41160b['concat'](getChanSpyApplications(_0x381bfc,_0x381bfc[_0x4bdc('0x21')],_0xb93a00));}return _0xec810(_0x41160b);}return _0xec810([]);})[_0x4bdc('0x2a')](function(_0x468169){_0xc0b9a4(_0x468169);});});};module[_0x4bdc('0x2b')]=function(_0xcb5418,_0x501f31){var _0x2103e1=_0xcb5418[_0x4bdc('0x2c')];return _0xcb5418[_0x4bdc('0x2d')]('User',attributes,{'tableName':'users','charset':_0x4bdc('0x2e'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x36ed89,_0x2bfbd7,_0x879248){_0x36ed89['updateMd5Password']();_0x36ed89[_0x4bdc('0x2f')](_0x879248);},'beforeUpdate':function(_0x1e1242,_0x44219c,_0x2cd5ae){if(_0x1e1242[_0x4bdc('0x30')](_0x4bdc('0x31'))){_0x1e1242[_0x4bdc('0x32')]();return _0x1e1242[_0x4bdc('0x2f')](_0x2cd5ae);}_0x2cd5ae();},'afterCreate':function(_0xbbdf3b,_0x51065c,_0xbfc308){var _0x1f46bb=getUserApplications(_0xbbdf3b,_0xbbdf3b[_0x4bdc('0x29')]);if(_0xbbdf3b[_0x4bdc('0x29')]!=_0xbbdf3b['name']){_0x1f46bb=_0x1f46bb[_0x4bdc('0x33')](getUserApplications(_0xbbdf3b,_0xbbdf3b[_0x4bdc('0x21')]));}return _0x2103e1[_0x4bdc('0x34')]['bulkCreate'](_0x1f46bb)[_0x4bdc('0x28')](function(){if(_0xbbdf3b[_0x4bdc('0x11')]){return getChanSpyPromise(_0x2103e1,_0xbbdf3b);}})['then'](function(_0x159c67){if(_0x159c67&&_0x159c67['length']){return _0x2103e1['VoiceExtension']['bulkCreate'](_0x159c67);}})[_0x4bdc('0x28')](function(){_0xbfc308();})[_0x4bdc('0x2a')](function(_0x51ca28){_0xbfc308(_0x51ca28);});},'afterUpdate':function(_0x1f6a6b,_0x2c5222,_0x354928){return BPromise[_0x4bdc('0x35')]()[_0x4bdc('0x28')](function(){if(_0x1f6a6b[_0x4bdc('0x30')](_0x4bdc('0x11'))||_0x1f6a6b[_0x4bdc('0x30')](_0x4bdc('0x7'))){return _0x2103e1[_0x4bdc('0x34')][_0x4bdc('0x36')]({'where':{'UserId':_0x1f6a6b['id'],'type':_0x4bdc('0x9'),'ChanSpyId':{'$ne':null}}})[_0x4bdc('0x28')](function(){if(_0x1f6a6b[_0x4bdc('0x11')]){return getChanSpyPromise(_0x2103e1,_0x1f6a6b)[_0x4bdc('0x28')](function(_0x2a78b5){if(_0x2a78b5&&_0x2a78b5[_0x4bdc('0xa')]){return _0x2103e1[_0x4bdc('0x34')][_0x4bdc('0x37')](_0x2a78b5);}});}});}})[_0x4bdc('0x28')](function(){if(_0x1f6a6b['changed'](_0x4bdc('0x1c'))||_0x1f6a6b[_0x4bdc('0x30')](_0x4bdc('0x7'))){return _0x2103e1[_0x4bdc('0x34')][_0x4bdc('0x36')]({'where':{'UserId':_0x1f6a6b['id'],'type':_0x4bdc('0x9'),'ChanSpyId':null}})[_0x4bdc('0x28')](function(){var _0x117e50=getUserApplications(_0x1f6a6b,_0x1f6a6b[_0x4bdc('0x29')]);if(_0x1f6a6b[_0x4bdc('0x29')]!=_0x1f6a6b[_0x4bdc('0x21')]){_0x117e50=_0x117e50[_0x4bdc('0x33')](getUserApplications(_0x1f6a6b,_0x1f6a6b[_0x4bdc('0x21')]));}return _0x2103e1['VoiceExtension'][_0x4bdc('0x37')](_0x117e50);});}})[_0x4bdc('0x28')](function(){_0x354928();})[_0x4bdc('0x2a')](function(_0xa315b){_0x354928(_0xa315b);});},'afterDestroy':function(_0x4c1fab,_0x866ba6){return _0x2103e1[_0x4bdc('0x34')][_0x4bdc('0x36')]({'where':{'UserId':_0x4c1fab['id'],'type':_0x4bdc('0x9')}});}},'instanceMethods':{'authenticate':function(_0xf476b4,_0x37db0a){if(!_0x37db0a){return this[_0x4bdc('0x31')]===this[_0x4bdc('0x38')](_0xf476b4);}var _0x21f71b=this;this[_0x4bdc('0x38')](_0xf476b4,function(_0xbed4d9,_0x10cf78){if(_0xbed4d9){_0x37db0a(_0xbed4d9);}if(_0x21f71b[_0x4bdc('0x31')]===_0x10cf78){_0x37db0a(null,!![]);}else{_0x37db0a(null,![]);}});},'makeSalt':function(_0x3bc41a,_0x2822e8){var _0x5ea0f7=0x10;if(typeof arguments[0x0]===_0x4bdc('0x39')){_0x2822e8=arguments[0x0];_0x3bc41a=_0x5ea0f7;}else if(typeof arguments[0x1]==='function'){_0x2822e8=arguments[0x1];}else{throw new Error(_0x4bdc('0x3a'));}if(!_0x3bc41a){_0x3bc41a=_0x5ea0f7;}return crypto[_0x4bdc('0x3b')](_0x3bc41a,function(_0x52a154,_0x16b106){if(_0x52a154){_0x2822e8(_0x52a154);}return _0x2822e8(null,_0x16b106[_0x4bdc('0x3c')]('base64'));});},'encryptPassword':function(_0xc21ab9,_0x24adbd){if(!_0xc21ab9||!this[_0x4bdc('0x3d')]){return _0x24adbd?_0x24adbd(null):null;}var _0x5bc51c=0x2710;var _0x4e358d=0x40;var _0x298059=new Buffer(this[_0x4bdc('0x3d')],_0x4bdc('0x3e'));if(!_0x24adbd){return crypto[_0x4bdc('0x3f')](_0xc21ab9,_0x298059,_0x5bc51c,_0x4e358d,_0x4bdc('0x40'))['toString'](_0x4bdc('0x3e'));}return crypto[_0x4bdc('0x41')](_0xc21ab9,_0x298059,_0x5bc51c,_0x4e358d,_0x4bdc('0x40'),function(_0x5a4729,_0x1e72e0){if(_0x5a4729){_0x24adbd(_0x5a4729);}return _0x24adbd(null,_0x1e72e0[_0x4bdc('0x3c')](_0x4bdc('0x3e')));});},'updatePassword':function(_0x3d75b5){if(!this[_0x4bdc('0x31')]){return _0x3d75b5(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0x4bdc('0x42')](this['provider'])===-0x1){_0x3d75b5(new Error(_0x4bdc('0x43')));}var _0x5732f8=this;this['makeSalt'](function(_0x2105cf,_0x483827){if(_0x2105cf){return _0x3d75b5(_0x2105cf);}_0x5732f8['salt']=_0x483827;_0x5732f8['encryptPassword'](_0x5732f8['password'],function(_0x4a0d44,_0x50c89d){if(_0x4a0d44){_0x3d75b5(_0x4a0d44);}_0x5732f8[_0x4bdc('0x31')]=_0x50c89d;_0x3d75b5(null);});});},'updateMd5Password':function(){this[_0x4bdc('0x44')]=md5(this[_0x4bdc('0x21')]+':asterisk:'+this[_0x4bdc('0x31')]);return this['md5secret'];}}});};