Built motion from commit 85328c08.|2.5.50
[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 _0x8b95=['name','join','record','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxX','Hangup','priority','VoiceChanSpy','findAll','internal','catch','exports','models','define','User','users','utf8','resolve','UserProfile','find','userProfileId','privacyEnabled','then','updateMd5Password','updatePassword','changed','concat','userSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','makeSalt','md5secret','bluebird','util','md5','lodash','./user.attributes','google','length','context','from-sip','system','%s%s','prefix','push','merge','Set','format','chanspy','${UNIQUEID}.%s,a','recordingFormat','Authenticate','password','ChanSpy','SIP/%s,%s'];(function(_0x305b20,_0x5e57e9){var _0x26d64a=function(_0x2e17f0){while(--_0x2e17f0){_0x305b20['push'](_0x305b20['shift']());}};_0x26d64a(++_0x5e57e9);}(_0x8b95,0x16f));var _0x58b9=function(_0x5dbabd,_0x517077){_0x5dbabd=_0x5dbabd-0x0;var _0x3ef0f3=_0x8b95[_0x5dbabd];return _0x3ef0f3;};'use strict';var BPromise=require(_0x58b9('0x0'));var crypto=require('crypto');var util=require(_0x58b9('0x1'));var md5=require(_0x58b9('0x2'));var _=require(_0x58b9('0x3'));var attributes=require(_0x58b9('0x4'));var authTypes=[_0x58b9('0x5')];var validatePresenceOf=function(_0x42a1e1){return _0x42a1e1&&_0x42a1e1[_0x58b9('0x6')];};var getChanSpyApplications=function(_0x1852eb,_0x5e116c,_0x3a4c36){var _0x65c1db={'context':_0x1852eb[_0x58b9('0x7')]||_0x58b9('0x8'),'type':_0x58b9('0x9'),'isApp':![],'UserId':_0x1852eb['id']};var _0x3a2e93=[];for(var _0x1f1544=0x0,_0x4b23f9=0x1;_0x1f1544<_0x3a4c36['length'];_0x1f1544++,_0x4b23f9=0x1){var _0x139bc0={'exten':util['format'](_0x58b9('0xa'),_0x3a4c36[_0x1f1544][_0x58b9('0xb')],_0x5e116c),'ChanSpyId':_0x3a4c36[_0x1f1544]['id']};_0x3a2e93[_0x58b9('0xc')](_[_0x58b9('0xd')]({'app':_0x58b9('0xe'),'appdata':util[_0x58b9('0xf')]('CDR(type)=%s',_0x58b9('0x10')),'priority':_0x4b23f9++},_0x65c1db,_0x139bc0));if(_0x3a4c36[_0x1f1544]['record']){_0x3a2e93[_0x58b9('0xc')](_[_0x58b9('0xd')]({'app':'MixMonitor','appdata':util[_0x58b9('0xf')](_0x58b9('0x11'),_0x3a4c36[_0x1f1544][_0x58b9('0x12')]),'priority':_0x4b23f9++},_0x65c1db,_0x139bc0));}if(_0x3a4c36[_0x1f1544]['auth']){_0x3a2e93[_0x58b9('0xc')](_['merge']({'app':_0x58b9('0x13'),'appdata':_0x3a4c36[_0x1f1544][_0x58b9('0x14')],'priority':_0x4b23f9++},_0x65c1db,_0x139bc0));}_0x3a2e93[_0x58b9('0xc')](_[_0x58b9('0xd')]({'app':_0x58b9('0x15'),'appdata':util[_0x58b9('0xf')](_0x58b9('0x16'),_0x1852eb[_0x58b9('0x17')],_0x3a4c36[_0x1f1544]['options']?_0x3a4c36[_0x1f1544]['options'][_0x58b9('0x18')](''):''),'priority':_0x4b23f9++},_0x65c1db,_0x139bc0));if(_0x3a4c36[_0x1f1544][_0x58b9('0x19')]){_0x3a2e93[_0x58b9('0xc')](_['merge']({'app':_0x58b9('0x1a'),'priority':_0x4b23f9++},_0x65c1db,_0x139bc0));}}return _0x3a2e93;};var getUserApplications=function(_0x196afc,_0x49b60c){var _0x37c953=[_0x58b9('0x1b'),_0x58b9('0x1c'),_0x58b9('0x1d')];var _0x24cc5a={'context':_0x196afc[_0x58b9('0x7')]||_0x58b9('0x8'),'exten':_0x49b60c,'type':_0x58b9('0x9'),'isApp':![],'UserId':_0x196afc['id']};var _0x7a64e0=[{'app':_0x58b9('0xe'),'appdata':_0x58b9('0x1e')}];if(_0x196afc[_0x58b9('0x1f')]&&_[_0x58b9('0x20')](_0x37c953,_0x196afc['extensionMonitor'])){_0x7a64e0[_0x58b9('0xc')]({'app':'Set','appdata':_0x58b9('0x21')});_0x7a64e0[_0x58b9('0xc')]({'app':'Set','appdata':util['format'](_0x58b9('0x22'),_0x196afc['extensionMonitor'])});_0x7a64e0['push']({'app':_0x58b9('0x23'),'appdata':util[_0x58b9('0xf')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x196afc['name'])});}else{_0x7a64e0[_0x58b9('0xc')]({'app':'Dial','appdata':util[_0x58b9('0xf')](_0x58b9('0x24'),_0x196afc['name'])});}_0x7a64e0['push']({'app':_0x58b9('0x25')});for(var _0x3110ef=0x0;_0x3110ef<_0x7a64e0[_0x58b9('0x6')];_0x3110ef++){_0x7a64e0[_0x3110ef][_0x58b9('0x26')]=_0x3110ef+0x1;_0x7a64e0[_0x3110ef]=_['defaults'](_0x7a64e0[_0x3110ef],_0x24cc5a);}return _0x7a64e0;};var getChanSpyPromise=function(_0x4de425,_0x3cd797){return new BPromise(function(_0x2a69a2,_0x1265eb){return _0x4de425[_0x58b9('0x27')][_0x58b9('0x28')]()['then'](function(_0x30e668){if(_0x30e668){var _0x240d52=getChanSpyApplications(_0x3cd797,_0x3cd797['internal'],_0x30e668);if(_0x3cd797[_0x58b9('0x29')]!=_0x3cd797[_0x58b9('0x17')]){_0x240d52=_0x240d52['concat'](getChanSpyApplications(_0x3cd797,_0x3cd797[_0x58b9('0x17')],_0x30e668));}return _0x2a69a2(_0x240d52);}return _0x2a69a2([]);})[_0x58b9('0x2a')](function(_0x1065e8){_0x1265eb(_0x1065e8);});});};module[_0x58b9('0x2b')]=function(_0x254c6b){var _0x164d1f=_0x254c6b[_0x58b9('0x2c')];return _0x254c6b[_0x58b9('0x2d')](_0x58b9('0x2e'),attributes,{'tableName':_0x58b9('0x2f'),'charset':_0x58b9('0x30'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x218f6b,_0x1b3ee0,_0x2c3178){var _0x3dd270=typeof _0x218f6b['userProfileId']==='undefined'?BPromise[_0x58b9('0x31')](null):_0x164d1f[_0x58b9('0x32')][_0x58b9('0x33')]({'where':{'id':_0x218f6b[_0x58b9('0x34')]}});_0x3dd270['then'](function(_0xc14a2c){if(_0xc14a2c){_0x218f6b[_0x58b9('0x35')]=_0xc14a2c[_0x58b9('0x35')];}})[_0x58b9('0x36')](function(){_0x218f6b[_0x58b9('0x37')]();_0x218f6b[_0x58b9('0x38')](_0x2c3178);})[_0x58b9('0x2a')](function(_0xbb303c){_0x2c3178(_0xbb303c);});},'beforeUpdate':function(_0x184a62,_0x9e1bcb,_0x3c0c63){Promise[_0x58b9('0x31')]()['then'](function(){if(_0x184a62[_0x58b9('0x39')](_0x58b9('0x34'))===![])return;return _0x164d1f[_0x58b9('0x32')]['find']({'where':{'id':_0x184a62[_0x58b9('0x34')]}})[_0x58b9('0x36')](function(_0x57262d){if(_0x57262d)_0x184a62[_0x58b9('0x35')]=_0x57262d['privacyEnabled'];return;});})[_0x58b9('0x36')](function(){if(_0x184a62['changed']('password')){_0x184a62['updateMd5Password']();return _0x184a62[_0x58b9('0x38')](_0x3c0c63);}_0x3c0c63();})['catch'](function(_0x5f3849){_0x3c0c63(_0x5f3849);});},'afterCreate':function(_0x741416,_0x22209a,_0x3da6e8){var _0xf3b001=getUserApplications(_0x741416,_0x741416[_0x58b9('0x29')]);if(_0x741416[_0x58b9('0x29')]!=_0x741416['name']){_0xf3b001=_0xf3b001[_0x58b9('0x3a')](getUserApplications(_0x741416,_0x741416[_0x58b9('0x17')]));}return Promise['resolve']()[_0x58b9('0x36')](function(){if(!_0x741416[_0x58b9('0x3b')]){return _0x741416['createUserSetting']({'clientSideLoggingLevel':_0x58b9('0x3c'),'clientSideLoggingEnabled':![]});}})[_0x58b9('0x36')](function(){return _0x164d1f[_0x58b9('0x3d')][_0x58b9('0x3e')](_0xf3b001);})[_0x58b9('0x36')](function(){if(_0x741416[_0x58b9('0x10')]){return getChanSpyPromise(_0x164d1f,_0x741416);}})[_0x58b9('0x36')](function(_0xe3ac3e){if(_0xe3ac3e&&_0xe3ac3e[_0x58b9('0x6')]){return _0x164d1f[_0x58b9('0x3d')][_0x58b9('0x3e')](_0xe3ac3e);}})[_0x58b9('0x36')](function(){_0x3da6e8();})[_0x58b9('0x2a')](function(_0xcdaeb2){_0x3da6e8(_0xcdaeb2);});},'afterUpdate':function(_0xfc8fb7,_0x2cd168,_0x5b0369){return BPromise['resolve']()[_0x58b9('0x36')](function(){if(_0xfc8fb7['changed'](_0x58b9('0x10'))||_0xfc8fb7[_0x58b9('0x39')]('context')){return _0x164d1f[_0x58b9('0x3d')]['destroy']({'where':{'UserId':_0xfc8fb7['id'],'type':_0x58b9('0x9'),'ChanSpyId':{'$ne':null}}})[_0x58b9('0x36')](function(){if(_0xfc8fb7[_0x58b9('0x10')]){return getChanSpyPromise(_0x164d1f,_0xfc8fb7)['then'](function(_0x3c1437){if(_0x3c1437&&_0x3c1437[_0x58b9('0x6')]){return _0x164d1f[_0x58b9('0x3d')][_0x58b9('0x3e')](_0x3c1437);}});}});}})['then'](function(){if(_0xfc8fb7[_0x58b9('0x39')](_0x58b9('0x1f'))||_0xfc8fb7[_0x58b9('0x39')](_0x58b9('0x7'))){return _0x164d1f['VoiceExtension']['destroy']({'where':{'UserId':_0xfc8fb7['id'],'type':_0x58b9('0x9'),'ChanSpyId':null}})[_0x58b9('0x36')](function(){var _0x4f5001=getUserApplications(_0xfc8fb7,_0xfc8fb7[_0x58b9('0x29')]);if(_0xfc8fb7['internal']!=_0xfc8fb7[_0x58b9('0x17')]){_0x4f5001=_0x4f5001[_0x58b9('0x3a')](getUserApplications(_0xfc8fb7,_0xfc8fb7['name']));}return _0x164d1f[_0x58b9('0x3d')][_0x58b9('0x3e')](_0x4f5001);});}})['then'](function(){_0x5b0369();})[_0x58b9('0x2a')](function(_0x161390){_0x5b0369(_0x161390);});},'afterDestroy':function(_0x314304){return _0x164d1f[_0x58b9('0x3d')][_0x58b9('0x3f')]({'where':{'UserId':_0x314304['id'],'type':_0x58b9('0x9')}});}},'instanceMethods':{'authenticate':function(_0x3c4789,_0x1e0c2a){if(!_0x1e0c2a){return this[_0x58b9('0x14')]===this[_0x58b9('0x40')](_0x3c4789);}var _0x11432c=this;this[_0x58b9('0x40')](_0x3c4789,function(_0x40e157,_0x36add5){if(_0x40e157){_0x1e0c2a(_0x40e157);}if(_0x11432c[_0x58b9('0x14')]===_0x36add5){_0x1e0c2a(null,!![]);}else{_0x1e0c2a(null,![]);}});},'makeSalt':function(_0x4dddc3,_0x514734){var _0x486695=0x10;if(typeof arguments[0x0]===_0x58b9('0x41')){_0x514734=arguments[0x0];_0x4dddc3=_0x486695;}else if(typeof arguments[0x1]===_0x58b9('0x41')){_0x514734=arguments[0x1];}else{throw new Error(_0x58b9('0x42'));}if(!_0x4dddc3){_0x4dddc3=_0x486695;}return crypto[_0x58b9('0x43')](_0x4dddc3,function(_0x118a92,_0x5e08b6){if(_0x118a92){_0x514734(_0x118a92);}return _0x514734(null,_0x5e08b6[_0x58b9('0x44')](_0x58b9('0x45')));});},'encryptPassword':function(_0x38dc67,_0x2deef1){if(!_0x38dc67||!this[_0x58b9('0x46')]){return _0x2deef1?_0x2deef1(null):null;}var _0x300334=0x2710;var _0x15f469=0x40;var _0x410da1=new Buffer(this[_0x58b9('0x46')],_0x58b9('0x45'));if(!_0x2deef1){return crypto[_0x58b9('0x47')](_0x38dc67,_0x410da1,_0x300334,_0x15f469,_0x58b9('0x48'))[_0x58b9('0x44')](_0x58b9('0x45'));}return crypto[_0x58b9('0x49')](_0x38dc67,_0x410da1,_0x300334,_0x15f469,_0x58b9('0x48'),function(_0x5a3115,_0x52abee){if(_0x5a3115){_0x2deef1(_0x5a3115);}return _0x2deef1(null,_0x52abee['toString'](_0x58b9('0x45')));});},'updatePassword':function(_0x5c17f2){if(!this[_0x58b9('0x14')]){return _0x5c17f2(null);}if(!validatePresenceOf(this[_0x58b9('0x14')])&&authTypes[_0x58b9('0x4a')](this[_0x58b9('0x4b')])===-0x1){_0x5c17f2(new Error('Invalid\x20password'));}var _0x60606f=this;this[_0x58b9('0x4c')](function(_0x1724ad,_0x5f4288){if(_0x1724ad){return _0x5c17f2(_0x1724ad);}_0x60606f['salt']=_0x5f4288;_0x60606f[_0x58b9('0x40')](_0x60606f[_0x58b9('0x14')],function(_0x1d80be,_0x385ace){if(_0x1d80be){_0x5c17f2(_0x1d80be);}_0x60606f[_0x58b9('0x14')]=_0x385ace;_0x5c17f2(null);});});},'updateMd5Password':function(){this[_0x58b9('0x4d')]=md5(this[_0x58b9('0x17')]+':asterisk:'+this[_0x58b9('0x14')]);return this[_0x58b9('0x4d')];}}});};