432f98955a04d00bf1eae20081b4b532a0efe25d
[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 _0x13c9=['context','system','length','format','%s%s','prefix','push','Set','chanspy','record','merge','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','SIP/%s,%s','name','options','join','WAV','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','exports','models','define','users','utf8','utf8_bin','updateMd5Password','updatePassword','concat','VoiceExtension','bulkCreate','catch','resolve','destroy','changed','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','pbkdf2Sync','pbkdf2','toString','indexOf','Invalid\x20password','md5secret',':asterisk:','bluebird','crypto','util','md5','lodash','./user.attributes','google'];(function(_0x3ef2b3,_0x1ca524){var _0xe7016d=function(_0x2c7f00){while(--_0x2c7f00){_0x3ef2b3['push'](_0x3ef2b3['shift']());}};_0xe7016d(++_0x1ca524);}(_0x13c9,0x83));var _0x913c=function(_0xbc94a6,_0x26c7d1){_0xbc94a6=_0xbc94a6-0x0;var _0x92f187=_0x13c9[_0xbc94a6];return _0x92f187;};'use strict';var BPromise=require(_0x913c('0x0'));var crypto=require(_0x913c('0x1'));var util=require(_0x913c('0x2'));var md5=require(_0x913c('0x3'));var _=require(_0x913c('0x4'));var attributes=require(_0x913c('0x5'));var authTypes=[_0x913c('0x6')];var validatePresenceOf=function(_0x886cb3){return _0x886cb3&&_0x886cb3['length'];};var getChanSpyApplications=function(_0x2612a1,_0x290bdc,_0x3e4d0c){var _0x1e4aa0={'context':_0x2612a1[_0x913c('0x7')]||'from-sip','type':_0x913c('0x8'),'isApp':![],'UserId':_0x2612a1['id']};var _0x4d4bdf=[];for(var _0x295f04=0x0,_0x25e18f=0x1;_0x295f04<_0x3e4d0c[_0x913c('0x9')];_0x295f04++,_0x25e18f=0x1){var _0x4cf8c4={'exten':util[_0x913c('0xa')](_0x913c('0xb'),_0x3e4d0c[_0x295f04][_0x913c('0xc')],_0x290bdc),'ChanSpyId':_0x3e4d0c[_0x295f04]['id']};_0x4d4bdf[_0x913c('0xd')](_['merge']({'app':_0x913c('0xe'),'appdata':util[_0x913c('0xa')]('CDR(type)=%s',_0x913c('0xf')),'priority':_0x25e18f++},_0x1e4aa0,_0x4cf8c4));if(_0x3e4d0c[_0x295f04][_0x913c('0x10')]){_0x4d4bdf['push'](_[_0x913c('0x11')]({'app':'MixMonitor','appdata':util[_0x913c('0xa')](_0x913c('0x12'),_0x3e4d0c[_0x295f04][_0x913c('0x13')]),'priority':_0x25e18f++},_0x1e4aa0,_0x4cf8c4));}if(_0x3e4d0c[_0x295f04][_0x913c('0x14')]){_0x4d4bdf['push'](_['merge']({'app':_0x913c('0x15'),'appdata':_0x3e4d0c[_0x295f04][_0x913c('0x16')],'priority':_0x25e18f++},_0x1e4aa0,_0x4cf8c4));}_0x4d4bdf[_0x913c('0xd')](_[_0x913c('0x11')]({'app':'ChanSpy','appdata':util[_0x913c('0xa')](_0x913c('0x17'),_0x2612a1[_0x913c('0x18')],_0x3e4d0c[_0x295f04]['options']?_0x3e4d0c[_0x295f04][_0x913c('0x19')][_0x913c('0x1a')](''):''),'priority':_0x25e18f++},_0x1e4aa0,_0x4cf8c4));if(_0x3e4d0c[_0x295f04][_0x913c('0x10')]){_0x4d4bdf[_0x913c('0xd')](_[_0x913c('0x11')]({'app':'StopMixMonitor','priority':_0x25e18f++},_0x1e4aa0,_0x4cf8c4));}}return _0x4d4bdf;};var getUserApplications=function(_0xd0bb9a,_0x643add){var _0x5f1abd=['wav',_0x913c('0x1b'),'gsm'];var _0x9588fd={'context':_0xd0bb9a['context']||'from-sip','exten':_0x643add,'type':_0x913c('0x8'),'isApp':![],'UserId':_0xd0bb9a['id']};var _0x4c5063=[{'app':_0x913c('0xe'),'appdata':_0x913c('0x1c')}];if(_0xd0bb9a[_0x913c('0x1d')]&&_[_0x913c('0x1e')](_0x5f1abd,_0xd0bb9a[_0x913c('0x1d')])){_0x4c5063[_0x913c('0xd')]({'app':_0x913c('0xe'),'appdata':_0x913c('0x1f')});_0x4c5063[_0x913c('0xd')]({'app':_0x913c('0xe'),'appdata':util['format'](_0x913c('0x20'),_0xd0bb9a['extensionMonitor'])});_0x4c5063[_0x913c('0xd')]({'app':_0x913c('0x21'),'appdata':util['format']('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0xd0bb9a[_0x913c('0x18')])});}else{_0x4c5063[_0x913c('0xd')]({'app':_0x913c('0x21'),'appdata':util[_0x913c('0xa')]('SIP/%s,,tTxX',_0xd0bb9a[_0x913c('0x18')])});}_0x4c5063[_0x913c('0xd')]({'app':_0x913c('0x22')});for(var _0x3d21dd=0x0;_0x3d21dd<_0x4c5063[_0x913c('0x9')];_0x3d21dd++){_0x4c5063[_0x3d21dd][_0x913c('0x23')]=_0x3d21dd+0x1;_0x4c5063[_0x3d21dd]=_[_0x913c('0x24')](_0x4c5063[_0x3d21dd],_0x9588fd);}return _0x4c5063;};var getChanSpyPromise=function(_0x2e8def,_0x1dcead){return new BPromise(function(_0x521ca2,_0x37bcc2){return _0x2e8def[_0x913c('0x25')][_0x913c('0x26')]()[_0x913c('0x27')](function(_0x937df5){if(_0x937df5){var _0xf976=getChanSpyApplications(_0x1dcead,_0x1dcead[_0x913c('0x28')],_0x937df5);if(_0x1dcead[_0x913c('0x28')]!=_0x1dcead[_0x913c('0x18')]){_0xf976=_0xf976['concat'](getChanSpyApplications(_0x1dcead,_0x1dcead[_0x913c('0x18')],_0x937df5));}return _0x521ca2(_0xf976);}return _0x521ca2([]);})['catch'](function(_0x2f60fa){_0x37bcc2(_0x2f60fa);});});};module[_0x913c('0x29')]=function(_0x2dad82,_0x193d12){var _0xf05bba=_0x2dad82[_0x913c('0x2a')];return _0x2dad82[_0x913c('0x2b')]('User',attributes,{'tableName':_0x913c('0x2c'),'charset':_0x913c('0x2d'),'collate':_0x913c('0x2e'),'hooks':{'beforeCreate':function(_0x1dc77c,_0x5145ce,_0x491eb7){_0x1dc77c[_0x913c('0x2f')]();_0x1dc77c[_0x913c('0x30')](_0x491eb7);},'beforeUpdate':function(_0xbe2b95,_0x186562,_0x3bc004){if(_0xbe2b95['changed'](_0x913c('0x16'))){_0xbe2b95[_0x913c('0x2f')]();return _0xbe2b95['updatePassword'](_0x3bc004);}_0x3bc004();},'afterCreate':function(_0x148fec,_0x146b29,_0x1427a9){var _0x31ec6c=getUserApplications(_0x148fec,_0x148fec[_0x913c('0x28')]);if(_0x148fec[_0x913c('0x28')]!=_0x148fec['name']){_0x31ec6c=_0x31ec6c[_0x913c('0x31')](getUserApplications(_0x148fec,_0x148fec[_0x913c('0x18')]));}return _0xf05bba[_0x913c('0x32')]['bulkCreate'](_0x31ec6c)['then'](function(){if(_0x148fec[_0x913c('0xf')]){return getChanSpyPromise(_0xf05bba,_0x148fec);}})[_0x913c('0x27')](function(_0x1f8706){if(_0x1f8706&&_0x1f8706[_0x913c('0x9')]){return _0xf05bba[_0x913c('0x32')][_0x913c('0x33')](_0x1f8706);}})[_0x913c('0x27')](function(){_0x1427a9();})[_0x913c('0x34')](function(_0x1bfa09){_0x1427a9(_0x1bfa09);});},'afterUpdate':function(_0x4e32be,_0x1a5c42,_0x5b8129){return BPromise[_0x913c('0x35')]()[_0x913c('0x27')](function(){if(_0x4e32be['changed'](_0x913c('0xf'))||_0x4e32be['changed'](_0x913c('0x7'))){return _0xf05bba['VoiceExtension'][_0x913c('0x36')]({'where':{'UserId':_0x4e32be['id'],'type':_0x913c('0x8'),'ChanSpyId':{'$ne':null}}})[_0x913c('0x27')](function(){if(_0x4e32be[_0x913c('0xf')]){return getChanSpyPromise(_0xf05bba,_0x4e32be)[_0x913c('0x27')](function(_0x118242){if(_0x118242&&_0x118242[_0x913c('0x9')]){return _0xf05bba[_0x913c('0x32')][_0x913c('0x33')](_0x118242);}});}});}})[_0x913c('0x27')](function(){if(_0x4e32be[_0x913c('0x37')]('extensionMonitor')||_0x4e32be[_0x913c('0x37')](_0x913c('0x7'))){return _0xf05bba[_0x913c('0x32')][_0x913c('0x36')]({'where':{'UserId':_0x4e32be['id'],'type':_0x913c('0x8'),'ChanSpyId':null}})['then'](function(){var _0x565b46=getUserApplications(_0x4e32be,_0x4e32be[_0x913c('0x28')]);if(_0x4e32be['internal']!=_0x4e32be[_0x913c('0x18')]){_0x565b46=_0x565b46[_0x913c('0x31')](getUserApplications(_0x4e32be,_0x4e32be[_0x913c('0x18')]));}return _0xf05bba[_0x913c('0x32')][_0x913c('0x33')](_0x565b46);});}})[_0x913c('0x27')](function(){_0x5b8129();})[_0x913c('0x34')](function(_0xe9b447){_0x5b8129(_0xe9b447);});},'afterDestroy':function(_0x3ba0e3,_0x37cedc){return _0xf05bba[_0x913c('0x32')]['destroy']({'where':{'UserId':_0x3ba0e3['id'],'type':_0x913c('0x8')}});}},'instanceMethods':{'authenticate':function(_0x97b473,_0x16a6ff){if(!_0x16a6ff){return this[_0x913c('0x16')]===this[_0x913c('0x38')](_0x97b473);}var _0x359426=this;this['encryptPassword'](_0x97b473,function(_0x3a34b5,_0x4eb9c2){if(_0x3a34b5){_0x16a6ff(_0x3a34b5);}if(_0x359426[_0x913c('0x16')]===_0x4eb9c2){_0x16a6ff(null,!![]);}else{_0x16a6ff(null,![]);}});},'makeSalt':function(_0x3e7cca,_0x235c1b){var _0x52faa1=0x10;if(typeof arguments[0x0]===_0x913c('0x39')){_0x235c1b=arguments[0x0];_0x3e7cca=_0x52faa1;}else if(typeof arguments[0x1]===_0x913c('0x39')){_0x235c1b=arguments[0x1];}else{throw new Error(_0x913c('0x3a'));}if(!_0x3e7cca){_0x3e7cca=_0x52faa1;}return crypto[_0x913c('0x3b')](_0x3e7cca,function(_0x1a377b,_0x45d78f){if(_0x1a377b){_0x235c1b(_0x1a377b);}return _0x235c1b(null,_0x45d78f['toString'](_0x913c('0x3c')));});},'encryptPassword':function(_0x57e236,_0x1dc56b){if(!_0x57e236||!this[_0x913c('0x3d')]){return _0x1dc56b?_0x1dc56b(null):null;}var _0x4d105b=0x2710;var _0x339692=0x40;var _0x125249=new Buffer(this[_0x913c('0x3d')],_0x913c('0x3c'));if(!_0x1dc56b){return crypto[_0x913c('0x3e')](_0x57e236,_0x125249,_0x4d105b,_0x339692,'sha1')['toString'](_0x913c('0x3c'));}return crypto[_0x913c('0x3f')](_0x57e236,_0x125249,_0x4d105b,_0x339692,'sha1',function(_0x4fe65f,_0x1027bb){if(_0x4fe65f){_0x1dc56b(_0x4fe65f);}return _0x1dc56b(null,_0x1027bb[_0x913c('0x40')](_0x913c('0x3c')));});},'updatePassword':function(_0x491a34){if(!this['password']){return _0x491a34(null);}if(!validatePresenceOf(this[_0x913c('0x16')])&&authTypes[_0x913c('0x41')](this['provider'])===-0x1){_0x491a34(new Error(_0x913c('0x42')));}var _0x3268a8=this;this['makeSalt'](function(_0x1e556c,_0x499977){if(_0x1e556c){return _0x491a34(_0x1e556c);}_0x3268a8['salt']=_0x499977;_0x3268a8[_0x913c('0x38')](_0x3268a8['password'],function(_0x423452,_0x1c0668){if(_0x423452){_0x491a34(_0x423452);}_0x3268a8[_0x913c('0x16')]=_0x1c0668;_0x491a34(null);});});},'updateMd5Password':function(){this[_0x913c('0x43')]=md5(this[_0x913c('0x18')]+_0x913c('0x44')+this[_0x913c('0x16')]);return this[_0x913c('0x43')];}}});};