Built motion from commit 0900f080.|2.5.45
[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 _0xc831=['password','userSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','makeSalt','md5secret','bluebird','crypto','util','md5','google','context','length','format','%s%s','prefix','merge','Set','CDR(type)=%s','chanspy','push','MixMonitor','auth','Authenticate','SIP/%s,%s','name','options','join','record','wav','WAV','gsm','from-sip','system','includes','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxX','Hangup','defaults','VoiceChanSpy','findAll','then','internal','concat','exports','models','define','User','users','utf8','utf8_bin','userProfileId','undefined','resolve','privacyEnabled','updateMd5Password','updatePassword','catch','changed','UserProfile','find'];(function(_0x55c8d7,_0x2a4369){var _0x523dce=function(_0x1879e2){while(--_0x1879e2){_0x55c8d7['push'](_0x55c8d7['shift']());}};_0x523dce(++_0x2a4369);}(_0xc831,0xfe));var _0x1c83=function(_0x28b73a,_0x34a08b){_0x28b73a=_0x28b73a-0x0;var _0x5c0094=_0xc831[_0x28b73a];return _0x5c0094;};'use strict';var BPromise=require(_0x1c83('0x0'));var crypto=require(_0x1c83('0x1'));var util=require(_0x1c83('0x2'));var md5=require(_0x1c83('0x3'));var _=require('lodash');var attributes=require('./user.attributes');var authTypes=[_0x1c83('0x4')];var validatePresenceOf=function(_0x5e87de){return _0x5e87de&&_0x5e87de['length'];};var getChanSpyApplications=function(_0x3ce6e9,_0x38aea0,_0x3da4ad){var _0xd63733={'context':_0x3ce6e9[_0x1c83('0x5')]||'from-sip','type':'system','isApp':![],'UserId':_0x3ce6e9['id']};var _0x3a7921=[];for(var _0x16714a=0x0,_0x8f6c15=0x1;_0x16714a<_0x3da4ad[_0x1c83('0x6')];_0x16714a++,_0x8f6c15=0x1){var _0x2a12c3={'exten':util[_0x1c83('0x7')](_0x1c83('0x8'),_0x3da4ad[_0x16714a][_0x1c83('0x9')],_0x38aea0),'ChanSpyId':_0x3da4ad[_0x16714a]['id']};_0x3a7921['push'](_[_0x1c83('0xa')]({'app':_0x1c83('0xb'),'appdata':util[_0x1c83('0x7')](_0x1c83('0xc'),_0x1c83('0xd')),'priority':_0x8f6c15++},_0xd63733,_0x2a12c3));if(_0x3da4ad[_0x16714a]['record']){_0x3a7921[_0x1c83('0xe')](_['merge']({'app':_0x1c83('0xf'),'appdata':util[_0x1c83('0x7')]('${UNIQUEID}.%s,a',_0x3da4ad[_0x16714a]['recordingFormat']),'priority':_0x8f6c15++},_0xd63733,_0x2a12c3));}if(_0x3da4ad[_0x16714a][_0x1c83('0x10')]){_0x3a7921[_0x1c83('0xe')](_[_0x1c83('0xa')]({'app':_0x1c83('0x11'),'appdata':_0x3da4ad[_0x16714a]['password'],'priority':_0x8f6c15++},_0xd63733,_0x2a12c3));}_0x3a7921[_0x1c83('0xe')](_['merge']({'app':'ChanSpy','appdata':util[_0x1c83('0x7')](_0x1c83('0x12'),_0x3ce6e9[_0x1c83('0x13')],_0x3da4ad[_0x16714a][_0x1c83('0x14')]?_0x3da4ad[_0x16714a][_0x1c83('0x14')][_0x1c83('0x15')](''):''),'priority':_0x8f6c15++},_0xd63733,_0x2a12c3));if(_0x3da4ad[_0x16714a][_0x1c83('0x16')]){_0x3a7921['push'](_[_0x1c83('0xa')]({'app':'StopMixMonitor','priority':_0x8f6c15++},_0xd63733,_0x2a12c3));}}return _0x3a7921;};var getUserApplications=function(_0x509981,_0x1e5e4a){var _0x2f70ab=[_0x1c83('0x17'),_0x1c83('0x18'),_0x1c83('0x19')];var _0x2d068d={'context':_0x509981[_0x1c83('0x5')]||_0x1c83('0x1a'),'exten':_0x1e5e4a,'type':_0x1c83('0x1b'),'isApp':![],'UserId':_0x509981['id']};var _0x5cd81a=[{'app':_0x1c83('0xb'),'appdata':'CDR(type)=internal'}];if(_0x509981['extensionMonitor']&&_[_0x1c83('0x1c')](_0x2f70ab,_0x509981[_0x1c83('0x1d')])){_0x5cd81a[_0x1c83('0xe')]({'app':_0x1c83('0xb'),'appdata':_0x1c83('0x1e')});_0x5cd81a[_0x1c83('0xe')]({'app':_0x1c83('0xb'),'appdata':util[_0x1c83('0x7')](_0x1c83('0x1f'),_0x509981[_0x1c83('0x1d')])});_0x5cd81a[_0x1c83('0xe')]({'app':'Dial','appdata':util['format']('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x509981[_0x1c83('0x13')])});}else{_0x5cd81a[_0x1c83('0xe')]({'app':_0x1c83('0x20'),'appdata':util[_0x1c83('0x7')](_0x1c83('0x21'),_0x509981[_0x1c83('0x13')])});}_0x5cd81a[_0x1c83('0xe')]({'app':_0x1c83('0x22')});for(var _0x1abdf9=0x0;_0x1abdf9<_0x5cd81a[_0x1c83('0x6')];_0x1abdf9++){_0x5cd81a[_0x1abdf9]['priority']=_0x1abdf9+0x1;_0x5cd81a[_0x1abdf9]=_[_0x1c83('0x23')](_0x5cd81a[_0x1abdf9],_0x2d068d);}return _0x5cd81a;};var getChanSpyPromise=function(_0x399eb3,_0x2caaf9){return new BPromise(function(_0xaf981f,_0x23af08){return _0x399eb3[_0x1c83('0x24')][_0x1c83('0x25')]()[_0x1c83('0x26')](function(_0x43cf00){if(_0x43cf00){var _0x5f4e50=getChanSpyApplications(_0x2caaf9,_0x2caaf9['internal'],_0x43cf00);if(_0x2caaf9[_0x1c83('0x27')]!=_0x2caaf9[_0x1c83('0x13')]){_0x5f4e50=_0x5f4e50[_0x1c83('0x28')](getChanSpyApplications(_0x2caaf9,_0x2caaf9[_0x1c83('0x13')],_0x43cf00));}return _0xaf981f(_0x5f4e50);}return _0xaf981f([]);})['catch'](function(_0x4d4668){_0x23af08(_0x4d4668);});});};module[_0x1c83('0x29')]=function(_0x4f8e7e){var _0x4ebc73=_0x4f8e7e[_0x1c83('0x2a')];return _0x4f8e7e[_0x1c83('0x2b')](_0x1c83('0x2c'),attributes,{'tableName':_0x1c83('0x2d'),'charset':_0x1c83('0x2e'),'collate':_0x1c83('0x2f'),'hooks':{'beforeCreate':function(_0x28880c,_0x33ba59,_0x1e5354){var _0x750480=typeof _0x28880c[_0x1c83('0x30')]===_0x1c83('0x31')?BPromise[_0x1c83('0x32')](null):_0x4ebc73['UserProfile']['find']({'where':{'id':_0x28880c[_0x1c83('0x30')]}});_0x750480[_0x1c83('0x26')](function(_0x1c0680){if(_0x1c0680){_0x28880c[_0x1c83('0x33')]=_0x1c0680[_0x1c83('0x33')];}})[_0x1c83('0x26')](function(){_0x28880c[_0x1c83('0x34')]();_0x28880c[_0x1c83('0x35')](_0x1e5354);})[_0x1c83('0x36')](function(_0x161d80){_0x1e5354(_0x161d80);});},'beforeUpdate':function(_0x4d3537,_0x5e90c9,_0x1f1c21){Promise[_0x1c83('0x32')]()[_0x1c83('0x26')](function(){if(_0x4d3537[_0x1c83('0x37')](_0x1c83('0x30'))===![])return;return _0x4ebc73[_0x1c83('0x38')][_0x1c83('0x39')]({'where':{'id':_0x4d3537[_0x1c83('0x30')]}})['then'](function(_0x4ff214){if(_0x4ff214)_0x4d3537['privacyEnabled']=_0x4ff214['privacyEnabled'];return;});})['then'](function(){if(_0x4d3537[_0x1c83('0x37')](_0x1c83('0x3a'))){_0x4d3537['updateMd5Password']();return _0x4d3537[_0x1c83('0x35')](_0x1f1c21);}_0x1f1c21();})[_0x1c83('0x36')](function(_0xab6354){_0x1f1c21(_0xab6354);});},'afterCreate':function(_0x50f53a,_0x19abd0,_0x48be38){var _0x20155d=getUserApplications(_0x50f53a,_0x50f53a['internal']);if(_0x50f53a[_0x1c83('0x27')]!=_0x50f53a[_0x1c83('0x13')]){_0x20155d=_0x20155d[_0x1c83('0x28')](getUserApplications(_0x50f53a,_0x50f53a[_0x1c83('0x13')]));}return Promise[_0x1c83('0x32')]()['then'](function(){if(!_0x50f53a[_0x1c83('0x3b')]){return _0x50f53a['createUserSetting']({'clientSideLoggingLevel':_0x1c83('0x3c'),'clientSideLoggingEnabled':![]});}})[_0x1c83('0x26')](function(){return _0x4ebc73[_0x1c83('0x3d')][_0x1c83('0x3e')](_0x20155d);})[_0x1c83('0x26')](function(){if(_0x50f53a[_0x1c83('0xd')]){return getChanSpyPromise(_0x4ebc73,_0x50f53a);}})[_0x1c83('0x26')](function(_0x1ec215){if(_0x1ec215&&_0x1ec215[_0x1c83('0x6')]){return _0x4ebc73[_0x1c83('0x3d')][_0x1c83('0x3e')](_0x1ec215);}})[_0x1c83('0x26')](function(){_0x48be38();})[_0x1c83('0x36')](function(_0x498833){_0x48be38(_0x498833);});},'afterUpdate':function(_0x47d05d,_0x17cc14,_0x1d5d8c){return BPromise[_0x1c83('0x32')]()[_0x1c83('0x26')](function(){if(_0x47d05d[_0x1c83('0x37')]('chanspy')||_0x47d05d['changed'](_0x1c83('0x5'))){return _0x4ebc73[_0x1c83('0x3d')]['destroy']({'where':{'UserId':_0x47d05d['id'],'type':_0x1c83('0x1b'),'ChanSpyId':{'$ne':null}}})[_0x1c83('0x26')](function(){if(_0x47d05d['chanspy']){return getChanSpyPromise(_0x4ebc73,_0x47d05d)[_0x1c83('0x26')](function(_0x37857d){if(_0x37857d&&_0x37857d[_0x1c83('0x6')]){return _0x4ebc73[_0x1c83('0x3d')][_0x1c83('0x3e')](_0x37857d);}});}});}})[_0x1c83('0x26')](function(){if(_0x47d05d[_0x1c83('0x37')](_0x1c83('0x1d'))||_0x47d05d[_0x1c83('0x37')](_0x1c83('0x5'))){return _0x4ebc73[_0x1c83('0x3d')][_0x1c83('0x3f')]({'where':{'UserId':_0x47d05d['id'],'type':_0x1c83('0x1b'),'ChanSpyId':null}})[_0x1c83('0x26')](function(){var _0x311bc1=getUserApplications(_0x47d05d,_0x47d05d[_0x1c83('0x27')]);if(_0x47d05d['internal']!=_0x47d05d['name']){_0x311bc1=_0x311bc1[_0x1c83('0x28')](getUserApplications(_0x47d05d,_0x47d05d[_0x1c83('0x13')]));}return _0x4ebc73['VoiceExtension'][_0x1c83('0x3e')](_0x311bc1);});}})[_0x1c83('0x26')](function(){_0x1d5d8c();})[_0x1c83('0x36')](function(_0x4d9ccd){_0x1d5d8c(_0x4d9ccd);});},'afterDestroy':function(_0x34f443){return _0x4ebc73[_0x1c83('0x3d')][_0x1c83('0x3f')]({'where':{'UserId':_0x34f443['id'],'type':_0x1c83('0x1b')}});}},'instanceMethods':{'authenticate':function(_0x2e1bdc,_0x17bdbb){if(!_0x17bdbb){return this[_0x1c83('0x3a')]===this[_0x1c83('0x40')](_0x2e1bdc);}var _0x9b9c6a=this;this[_0x1c83('0x40')](_0x2e1bdc,function(_0x476a4d,_0x17e4e1){if(_0x476a4d){_0x17bdbb(_0x476a4d);}if(_0x9b9c6a[_0x1c83('0x3a')]===_0x17e4e1){_0x17bdbb(null,!![]);}else{_0x17bdbb(null,![]);}});},'makeSalt':function(_0x15e3a3,_0x229203){var _0x4b0595=0x10;if(typeof arguments[0x0]===_0x1c83('0x41')){_0x229203=arguments[0x0];_0x15e3a3=_0x4b0595;}else if(typeof arguments[0x1]===_0x1c83('0x41')){_0x229203=arguments[0x1];}else{throw new Error(_0x1c83('0x42'));}if(!_0x15e3a3){_0x15e3a3=_0x4b0595;}return crypto[_0x1c83('0x43')](_0x15e3a3,function(_0x4888e9,_0x307bd1){if(_0x4888e9){_0x229203(_0x4888e9);}return _0x229203(null,_0x307bd1[_0x1c83('0x44')](_0x1c83('0x45')));});},'encryptPassword':function(_0x260735,_0x97254a){if(!_0x260735||!this[_0x1c83('0x46')]){return _0x97254a?_0x97254a(null):null;}var _0x4af65f=0x2710;var _0x27201e=0x40;var _0x4f31f7=new Buffer(this['salt'],_0x1c83('0x45'));if(!_0x97254a){return crypto[_0x1c83('0x47')](_0x260735,_0x4f31f7,_0x4af65f,_0x27201e,_0x1c83('0x48'))[_0x1c83('0x44')]('base64');}return crypto[_0x1c83('0x49')](_0x260735,_0x4f31f7,_0x4af65f,_0x27201e,'sha1',function(_0x52b50f,_0x77c743){if(_0x52b50f){_0x97254a(_0x52b50f);}return _0x97254a(null,_0x77c743[_0x1c83('0x44')]('base64'));});},'updatePassword':function(_0x50362e){if(!this[_0x1c83('0x3a')]){return _0x50362e(null);}if(!validatePresenceOf(this[_0x1c83('0x3a')])&&authTypes[_0x1c83('0x4a')](this[_0x1c83('0x4b')])===-0x1){_0x50362e(new Error('Invalid\x20password'));}var _0x3efc65=this;this[_0x1c83('0x4c')](function(_0x5dfa0b,_0x2d0d3a){if(_0x5dfa0b){return _0x50362e(_0x5dfa0b);}_0x3efc65[_0x1c83('0x46')]=_0x2d0d3a;_0x3efc65['encryptPassword'](_0x3efc65[_0x1c83('0x3a')],function(_0x1fbcee,_0x131639){if(_0x1fbcee){_0x50362e(_0x1fbcee);}_0x3efc65[_0x1c83('0x3a')]=_0x131639;_0x50362e(null);});});},'updateMd5Password':function(){this[_0x1c83('0x4d')]=md5(this['name']+':asterisk:'+this[_0x1c83('0x3a')]);return this[_0x1c83('0x4d')];}}});};