a3cd1a2530c45ac3e52fd33ecc4b7b38c508e056
[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 _0xef0a=['updatePassword','catch','changed','concat','bulkCreate','VoiceExtension','destroy','length','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','pbkdf2Sync','sha1','pbkdf2','toString','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','crypto','util','md5','lodash','./user.attributes','system','format','%s%s','prefix','merge','Set','CDR(type)=%s','chanspy','push','MixMonitor','${UNIQUEID}.%s,a','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','record','StopMixMonitor','wav','WAV','gsm','context','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','defaults','then','internal','models','define','User','users','utf8','utf8_bin','undefined','resolve','UserProfile','find','userProfileId','privacyEnabled','updateMd5Password'];(function(_0x40a957,_0x24e97c){var _0x44f1db=function(_0x3de778){while(--_0x3de778){_0x40a957['push'](_0x40a957['shift']());}};_0x44f1db(++_0x24e97c);}(_0xef0a,0xf9));var _0xaef0=function(_0x878ca9,_0x3c2f47){_0x878ca9=_0x878ca9-0x0;var _0x236a73=_0xef0a[_0x878ca9];return _0x236a73;};'use strict';var BPromise=require(_0xaef0('0x0'));var crypto=require(_0xaef0('0x1'));var util=require(_0xaef0('0x2'));var md5=require(_0xaef0('0x3'));var _=require(_0xaef0('0x4'));var attributes=require(_0xaef0('0x5'));var authTypes=['google'];var validatePresenceOf=function(_0x165e48){return _0x165e48&&_0x165e48['length'];};var getChanSpyApplications=function(_0x68dcad,_0x885451,_0x142bac){var _0x505134={'context':_0x68dcad['context']||'from-sip','type':_0xaef0('0x6'),'isApp':![],'UserId':_0x68dcad['id']};var _0x48748c=[];for(var _0x13fbd=0x0,_0x1a8a4d=0x1;_0x13fbd<_0x142bac['length'];_0x13fbd++,_0x1a8a4d=0x1){var _0xd087fb={'exten':util[_0xaef0('0x7')](_0xaef0('0x8'),_0x142bac[_0x13fbd][_0xaef0('0x9')],_0x885451),'ChanSpyId':_0x142bac[_0x13fbd]['id']};_0x48748c['push'](_[_0xaef0('0xa')]({'app':_0xaef0('0xb'),'appdata':util['format'](_0xaef0('0xc'),_0xaef0('0xd')),'priority':_0x1a8a4d++},_0x505134,_0xd087fb));if(_0x142bac[_0x13fbd]['record']){_0x48748c[_0xaef0('0xe')](_['merge']({'app':_0xaef0('0xf'),'appdata':util[_0xaef0('0x7')](_0xaef0('0x10'),_0x142bac[_0x13fbd]['recordingFormat']),'priority':_0x1a8a4d++},_0x505134,_0xd087fb));}if(_0x142bac[_0x13fbd][_0xaef0('0x11')]){_0x48748c[_0xaef0('0xe')](_['merge']({'app':_0xaef0('0x12'),'appdata':_0x142bac[_0x13fbd][_0xaef0('0x13')],'priority':_0x1a8a4d++},_0x505134,_0xd087fb));}_0x48748c['push'](_['merge']({'app':_0xaef0('0x14'),'appdata':util['format'](_0xaef0('0x15'),_0x68dcad[_0xaef0('0x16')],_0x142bac[_0x13fbd][_0xaef0('0x17')]?_0x142bac[_0x13fbd][_0xaef0('0x17')]['join'](''):''),'priority':_0x1a8a4d++},_0x505134,_0xd087fb));if(_0x142bac[_0x13fbd][_0xaef0('0x18')]){_0x48748c[_0xaef0('0xe')](_[_0xaef0('0xa')]({'app':_0xaef0('0x19'),'priority':_0x1a8a4d++},_0x505134,_0xd087fb));}}return _0x48748c;};var getUserApplications=function(_0x3696ad,_0x5bfc1b){var _0x174982=[_0xaef0('0x1a'),_0xaef0('0x1b'),_0xaef0('0x1c')];var _0x28c7b2={'context':_0x3696ad[_0xaef0('0x1d')]||'from-sip','exten':_0x5bfc1b,'type':'system','isApp':![],'UserId':_0x3696ad['id']};var _0xc9bfc1=[{'app':'Set','appdata':'CDR(type)=internal'}];if(_0x3696ad[_0xaef0('0x1e')]&&_[_0xaef0('0x1f')](_0x174982,_0x3696ad['extensionMonitor'])){_0xc9bfc1[_0xaef0('0xe')]({'app':_0xaef0('0xb'),'appdata':_0xaef0('0x20')});_0xc9bfc1[_0xaef0('0xe')]({'app':_0xaef0('0xb'),'appdata':util['format']('_XCALLY_MIXMONITOR_FORMAT=%s',_0x3696ad[_0xaef0('0x1e')])});_0xc9bfc1[_0xaef0('0xe')]({'app':_0xaef0('0x21'),'appdata':util['format'](_0xaef0('0x22'),_0x3696ad['name'])});}else{_0xc9bfc1[_0xaef0('0xe')]({'app':'Dial','appdata':util[_0xaef0('0x7')]('SIP/%s,,tTxX',_0x3696ad[_0xaef0('0x16')])});}_0xc9bfc1[_0xaef0('0xe')]({'app':'Hangup'});for(var _0x321600=0x0;_0x321600<_0xc9bfc1['length'];_0x321600++){_0xc9bfc1[_0x321600]['priority']=_0x321600+0x1;_0xc9bfc1[_0x321600]=_[_0xaef0('0x23')](_0xc9bfc1[_0x321600],_0x28c7b2);}return _0xc9bfc1;};var getChanSpyPromise=function(_0x4fa1f4,_0x2d07af){return new BPromise(function(_0x29f9eb,_0x5e055a){return _0x4fa1f4['VoiceChanSpy']['findAll']()[_0xaef0('0x24')](function(_0x386359){if(_0x386359){var _0x4a6ce7=getChanSpyApplications(_0x2d07af,_0x2d07af[_0xaef0('0x25')],_0x386359);if(_0x2d07af[_0xaef0('0x25')]!=_0x2d07af[_0xaef0('0x16')]){_0x4a6ce7=_0x4a6ce7['concat'](getChanSpyApplications(_0x2d07af,_0x2d07af[_0xaef0('0x16')],_0x386359));}return _0x29f9eb(_0x4a6ce7);}return _0x29f9eb([]);})['catch'](function(_0x5cbdff){_0x5e055a(_0x5cbdff);});});};module['exports']=function(_0x4e7f86,_0xbcaab5){var _0x28b02f=_0x4e7f86[_0xaef0('0x26')];return _0x4e7f86[_0xaef0('0x27')](_0xaef0('0x28'),attributes,{'tableName':_0xaef0('0x29'),'charset':_0xaef0('0x2a'),'collate':_0xaef0('0x2b'),'hooks':{'beforeCreate':function(_0xe4fb20,_0x59d7df,_0x260dfa){var _0x42ef8f=typeof _0xe4fb20['userProfileId']===_0xaef0('0x2c')?BPromise[_0xaef0('0x2d')](null):_0x28b02f[_0xaef0('0x2e')][_0xaef0('0x2f')]({'where':{'id':_0xe4fb20[_0xaef0('0x30')]}});_0x42ef8f[_0xaef0('0x24')](function(_0x549814){if(_0x549814){_0xe4fb20[_0xaef0('0x31')]=_0x549814[_0xaef0('0x31')];}})[_0xaef0('0x24')](function(){_0xe4fb20[_0xaef0('0x32')]();_0xe4fb20[_0xaef0('0x33')](_0x260dfa);})[_0xaef0('0x34')](function(_0xad91df){_0x260dfa(_0xad91df);});},'beforeUpdate':function(_0xf5b13d,_0x42eb86,_0x578741){Promise[_0xaef0('0x2d')]()[_0xaef0('0x24')](function(){if(_0xf5b13d[_0xaef0('0x35')](_0xaef0('0x30'))===![])return;return _0x28b02f[_0xaef0('0x2e')]['find']({'where':{'id':_0xf5b13d[_0xaef0('0x30')]}})['then'](function(_0x25ac14){if(_0x25ac14)_0xf5b13d[_0xaef0('0x31')]=_0x25ac14['privacyEnabled'];return;});})[_0xaef0('0x24')](function(){if(_0xf5b13d['changed'](_0xaef0('0x13'))){_0xf5b13d[_0xaef0('0x32')]();return _0xf5b13d[_0xaef0('0x33')](_0x578741);}_0x578741();})['catch'](function(_0x34cc8a){_0x578741(_0x34cc8a);});},'afterCreate':function(_0x3f8428,_0x378359,_0x3a8817){var _0x52e097=getUserApplications(_0x3f8428,_0x3f8428[_0xaef0('0x25')]);if(_0x3f8428[_0xaef0('0x25')]!=_0x3f8428[_0xaef0('0x16')]){_0x52e097=_0x52e097[_0xaef0('0x36')](getUserApplications(_0x3f8428,_0x3f8428[_0xaef0('0x16')]));}return _0x28b02f['VoiceExtension'][_0xaef0('0x37')](_0x52e097)[_0xaef0('0x24')](function(){if(_0x3f8428[_0xaef0('0xd')]){return getChanSpyPromise(_0x28b02f,_0x3f8428);}})[_0xaef0('0x24')](function(_0xb0139){if(_0xb0139&&_0xb0139['length']){return _0x28b02f[_0xaef0('0x38')][_0xaef0('0x37')](_0xb0139);}})[_0xaef0('0x24')](function(){_0x3a8817();})[_0xaef0('0x34')](function(_0x3c7a12){_0x3a8817(_0x3c7a12);});},'afterUpdate':function(_0x5873ea,_0x5137da,_0x216616){return BPromise[_0xaef0('0x2d')]()['then'](function(){if(_0x5873ea[_0xaef0('0x35')]('chanspy')||_0x5873ea[_0xaef0('0x35')]('context')){return _0x28b02f[_0xaef0('0x38')][_0xaef0('0x39')]({'where':{'UserId':_0x5873ea['id'],'type':_0xaef0('0x6'),'ChanSpyId':{'$ne':null}}})[_0xaef0('0x24')](function(){if(_0x5873ea[_0xaef0('0xd')]){return getChanSpyPromise(_0x28b02f,_0x5873ea)[_0xaef0('0x24')](function(_0x56f335){if(_0x56f335&&_0x56f335[_0xaef0('0x3a')]){return _0x28b02f[_0xaef0('0x38')][_0xaef0('0x37')](_0x56f335);}});}});}})[_0xaef0('0x24')](function(){if(_0x5873ea[_0xaef0('0x35')](_0xaef0('0x1e'))||_0x5873ea[_0xaef0('0x35')]('context')){return _0x28b02f[_0xaef0('0x38')][_0xaef0('0x39')]({'where':{'UserId':_0x5873ea['id'],'type':'system','ChanSpyId':null}})[_0xaef0('0x24')](function(){var _0x3b0984=getUserApplications(_0x5873ea,_0x5873ea['internal']);if(_0x5873ea[_0xaef0('0x25')]!=_0x5873ea['name']){_0x3b0984=_0x3b0984[_0xaef0('0x36')](getUserApplications(_0x5873ea,_0x5873ea[_0xaef0('0x16')]));}return _0x28b02f[_0xaef0('0x38')]['bulkCreate'](_0x3b0984);});}})[_0xaef0('0x24')](function(){_0x216616();})[_0xaef0('0x34')](function(_0x4f354d){_0x216616(_0x4f354d);});},'afterDestroy':function(_0x99c9d8,_0x588ab3){return _0x28b02f[_0xaef0('0x38')][_0xaef0('0x39')]({'where':{'UserId':_0x99c9d8['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0xa132b2,_0x457dcb){if(!_0x457dcb){return this['password']===this['encryptPassword'](_0xa132b2);}var _0x4c994b=this;this[_0xaef0('0x3b')](_0xa132b2,function(_0x183e0a,_0x1bf581){if(_0x183e0a){_0x457dcb(_0x183e0a);}if(_0x4c994b[_0xaef0('0x13')]===_0x1bf581){_0x457dcb(null,!![]);}else{_0x457dcb(null,![]);}});},'makeSalt':function(_0x5708aa,_0x5a6b4e){var _0x456219=0x10;if(typeof arguments[0x0]==='function'){_0x5a6b4e=arguments[0x0];_0x5708aa=_0x456219;}else if(typeof arguments[0x1]===_0xaef0('0x3c')){_0x5a6b4e=arguments[0x1];}else{throw new Error(_0xaef0('0x3d'));}if(!_0x5708aa){_0x5708aa=_0x456219;}return crypto[_0xaef0('0x3e')](_0x5708aa,function(_0x2a3fe4,_0x38058a){if(_0x2a3fe4){_0x5a6b4e(_0x2a3fe4);}return _0x5a6b4e(null,_0x38058a['toString'](_0xaef0('0x3f')));});},'encryptPassword':function(_0x53c9ab,_0x105a4f){if(!_0x53c9ab||!this[_0xaef0('0x40')]){return _0x105a4f?_0x105a4f(null):null;}var _0x40f267=0x2710;var _0xcc8c84=0x40;var _0x205b34=new Buffer(this[_0xaef0('0x40')],_0xaef0('0x3f'));if(!_0x105a4f){return crypto[_0xaef0('0x41')](_0x53c9ab,_0x205b34,_0x40f267,_0xcc8c84,_0xaef0('0x42'))['toString'](_0xaef0('0x3f'));}return crypto[_0xaef0('0x43')](_0x53c9ab,_0x205b34,_0x40f267,_0xcc8c84,_0xaef0('0x42'),function(_0x754969,_0x565d60){if(_0x754969){_0x105a4f(_0x754969);}return _0x105a4f(null,_0x565d60[_0xaef0('0x44')](_0xaef0('0x3f')));});},'updatePassword':function(_0x5c653f){if(!this[_0xaef0('0x13')]){return _0x5c653f(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0xaef0('0x45')](this[_0xaef0('0x46')])===-0x1){_0x5c653f(new Error(_0xaef0('0x47')));}var _0x5bc6fc=this;this[_0xaef0('0x48')](function(_0x33446c,_0xc1788f){if(_0x33446c){return _0x5c653f(_0x33446c);}_0x5bc6fc[_0xaef0('0x40')]=_0xc1788f;_0x5bc6fc[_0xaef0('0x3b')](_0x5bc6fc[_0xaef0('0x13')],function(_0x66218a,_0x39e456){if(_0x66218a){_0x5c653f(_0x66218a);}_0x5bc6fc[_0xaef0('0x13')]=_0x39e456;_0x5c653f(null);});});},'updateMd5Password':function(){this[_0xaef0('0x49')]=md5(this[_0xaef0('0x16')]+_0xaef0('0x4a')+this[_0xaef0('0x13')]);return this[_0xaef0('0x49')];}}});};