a5b3c3b0ce8f4fd087719d840b005ef66d948908
[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 _0xf021=['record','MixMonitor','format','Authenticate','password','ChanSpy','name','StopMixMonitor','wav','WAV','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','length','then','internal','concat','catch','models','define','User','users','utf8','utf8_bin','undefined','UserProfile','userProfileId','privacyEnabled','updateMd5Password','resolve','changed','updatePassword','userSetting','createUserSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','from','sha1','pbkdf2','md5secret',':asterisk:','client','http','request','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','voice','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','UserVoiceQueueRt','update','findAll','PAUSE','channel','MemberReport','isArray','map','voicePause','faxPause','smsPause','whatsappPause','openchannelPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','Status','bluebird','crypto','util','md5','moment','jayson/promise','google','context','from-sip','system','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy'];(function(_0x4101ab,_0x1777e6){var _0x4eaf40=function(_0x494db7){while(--_0x494db7){_0x4101ab['push'](_0x4101ab['shift']());}};_0x4eaf40(++_0x1777e6);}(_0xf021,0x18f));var _0x1f02=function(_0x14f458,_0x5dd219){_0x14f458=_0x14f458-0x0;var _0x4ff2da=_0xf021[_0x14f458];return _0x4ff2da;};'use strict';var BPromise=require(_0x1f02('0x0'));var crypto=require(_0x1f02('0x1'));var util=require(_0x1f02('0x2'));var md5=require(_0x1f02('0x3'));var moment=require(_0x1f02('0x4'));var _=require('lodash');var jayson=require(_0x1f02('0x5'));var attributes=require('./user.attributes');var authTypes=[_0x1f02('0x6')];var validatePresenceOf=function(_0x3164f0){return _0x3164f0&&_0x3164f0['length'];};var getChanSpyApplications=function(_0x532e6d,_0x84a8f0,_0x56b275){var _0x383d0b={'context':_0x532e6d[_0x1f02('0x7')]||_0x1f02('0x8'),'type':_0x1f02('0x9'),'isApp':![],'UserId':_0x532e6d['id']};var _0x1f1cec=[];for(var _0x4ec071=0x0,_0x154f8a=0x1;_0x4ec071<_0x56b275['length'];_0x4ec071++,_0x154f8a=0x1){var _0x569083={'exten':util['format'](_0x1f02('0xa'),_0x56b275[_0x4ec071][_0x1f02('0xb')],_0x84a8f0),'ChanSpyId':_0x56b275[_0x4ec071]['id']};_0x1f1cec[_0x1f02('0xc')](_[_0x1f02('0xd')]({'app':_0x1f02('0xe'),'appdata':util['format'](_0x1f02('0xf'),_0x1f02('0x10')),'priority':_0x154f8a++},_0x383d0b,_0x569083));if(_0x56b275[_0x4ec071][_0x1f02('0x11')]){_0x1f1cec['push'](_[_0x1f02('0xd')]({'app':_0x1f02('0x12'),'appdata':util[_0x1f02('0x13')]('${UNIQUEID}.%s,a',_0x56b275[_0x4ec071]['recordingFormat']),'priority':_0x154f8a++},_0x383d0b,_0x569083));}if(_0x56b275[_0x4ec071]['auth']){_0x1f1cec[_0x1f02('0xc')](_[_0x1f02('0xd')]({'app':_0x1f02('0x14'),'appdata':_0x56b275[_0x4ec071][_0x1f02('0x15')],'priority':_0x154f8a++},_0x383d0b,_0x569083));}_0x1f1cec[_0x1f02('0xc')](_[_0x1f02('0xd')]({'app':_0x1f02('0x16'),'appdata':util[_0x1f02('0x13')]('SIP/%s,%s',_0x532e6d[_0x1f02('0x17')],_0x56b275[_0x4ec071]['options']?_0x56b275[_0x4ec071]['options']['join'](''):''),'priority':_0x154f8a++},_0x383d0b,_0x569083));if(_0x56b275[_0x4ec071]['record']){_0x1f1cec[_0x1f02('0xc')](_[_0x1f02('0xd')]({'app':_0x1f02('0x18'),'priority':_0x154f8a++},_0x383d0b,_0x569083));}}return _0x1f1cec;};var getUserApplications=function(_0x5f1f30,_0x2215f8){var _0x2c5474=[_0x1f02('0x19'),_0x1f02('0x1a'),'gsm'];var _0x5d1906={'context':_0x5f1f30[_0x1f02('0x7')]||_0x1f02('0x8'),'exten':_0x2215f8,'type':'system','isApp':![],'UserId':_0x5f1f30['id']};var _0x5b399a=[{'app':_0x1f02('0xe'),'appdata':_0x1f02('0x1b')}];if(_0x5f1f30[_0x1f02('0x1c')]&&_[_0x1f02('0x1d')](_0x2c5474,_0x5f1f30['extensionMonitor'])){_0x5b399a[_0x1f02('0xc')]({'app':_0x1f02('0xe'),'appdata':_0x1f02('0x1e')});_0x5b399a[_0x1f02('0xc')]({'app':_0x1f02('0xe'),'appdata':util[_0x1f02('0x13')](_0x1f02('0x1f'),_0x5f1f30['extensionMonitor'])});_0x5b399a[_0x1f02('0xc')]({'app':_0x1f02('0x20'),'appdata':util['format'](_0x1f02('0x21'),_0x5f1f30[_0x1f02('0x17')])});}else{_0x5b399a['push']({'app':'Dial','appdata':util[_0x1f02('0x13')](_0x1f02('0x22'),_0x5f1f30[_0x1f02('0x17')])});}_0x5b399a[_0x1f02('0xc')]({'app':_0x1f02('0x23')});for(var _0x3f5577=0x0;_0x3f5577<_0x5b399a[_0x1f02('0x24')];_0x3f5577++){_0x5b399a[_0x3f5577]['priority']=_0x3f5577+0x1;_0x5b399a[_0x3f5577]=_['defaults'](_0x5b399a[_0x3f5577],_0x5d1906);}return _0x5b399a;};var getChanSpyPromise=function(_0x4e04f2,_0x3ef4bf){return new BPromise(function(_0x1d380a,_0x23059a){return _0x4e04f2['VoiceChanSpy']['findAll']()[_0x1f02('0x25')](function(_0x6e88d5){if(_0x6e88d5){var _0x1605cf=getChanSpyApplications(_0x3ef4bf,_0x3ef4bf[_0x1f02('0x26')],_0x6e88d5);if(_0x3ef4bf[_0x1f02('0x26')]!=_0x3ef4bf[_0x1f02('0x17')]){_0x1605cf=_0x1605cf[_0x1f02('0x27')](getChanSpyApplications(_0x3ef4bf,_0x3ef4bf[_0x1f02('0x17')],_0x6e88d5));}return _0x1d380a(_0x1605cf);}return _0x1d380a([]);})[_0x1f02('0x28')](function(_0x2869b0){_0x23059a(_0x2869b0);});});};module['exports']=function(_0x137e06){var _0x5ab7a2=_0x137e06[_0x1f02('0x29')];return _0x137e06[_0x1f02('0x2a')](_0x1f02('0x2b'),attributes,{'tableName':_0x1f02('0x2c'),'charset':_0x1f02('0x2d'),'collate':_0x1f02('0x2e'),'hooks':{'beforeCreate':function(_0x58f332,_0x48ae22,_0xc5a032){var _0x15e655=typeof _0x58f332['userProfileId']===_0x1f02('0x2f')?BPromise['resolve'](null):_0x5ab7a2[_0x1f02('0x30')]['find']({'where':{'id':_0x58f332[_0x1f02('0x31')]}});_0x15e655['then'](function(_0x596fcc){if(_0x596fcc){_0x58f332[_0x1f02('0x32')]=_0x596fcc[_0x1f02('0x32')];}})[_0x1f02('0x25')](function(){_0x58f332[_0x1f02('0x33')]();_0x58f332['updatePassword'](_0xc5a032);})[_0x1f02('0x28')](function(_0x2f0079){_0xc5a032(_0x2f0079);});},'beforeUpdate':function(_0x23e825,_0x507866,_0x68a2cb){Promise[_0x1f02('0x34')]()[_0x1f02('0x25')](function(){if(_0x23e825[_0x1f02('0x35')](_0x1f02('0x31'))===![])return;return _0x5ab7a2[_0x1f02('0x30')]['find']({'where':{'id':_0x23e825[_0x1f02('0x31')]}})[_0x1f02('0x25')](function(_0x1ad162){if(_0x1ad162)_0x23e825['privacyEnabled']=_0x1ad162[_0x1f02('0x32')];return;});})['then'](function(){if(_0x23e825[_0x1f02('0x35')]('password')){_0x23e825['updateMd5Password']();return _0x23e825[_0x1f02('0x36')](_0x68a2cb);}_0x68a2cb();})['catch'](function(_0x591a1c){_0x68a2cb(_0x591a1c);});},'afterCreate':function(_0x3ec5bd,_0x3b5002,_0x30c0e4){var _0x9b0e0=getUserApplications(_0x3ec5bd,_0x3ec5bd['internal']);if(_0x3ec5bd[_0x1f02('0x26')]!=_0x3ec5bd['name']){_0x9b0e0=_0x9b0e0[_0x1f02('0x27')](getUserApplications(_0x3ec5bd,_0x3ec5bd[_0x1f02('0x17')]));}return Promise[_0x1f02('0x34')]()[_0x1f02('0x25')](function(){if(!_0x3ec5bd[_0x1f02('0x37')]){return _0x3ec5bd[_0x1f02('0x38')]({'clientSideLoggingLevel':_0x1f02('0x39'),'clientSideLoggingEnabled':![]});}})[_0x1f02('0x25')](function(){return _0x5ab7a2[_0x1f02('0x3a')]['bulkCreate'](_0x9b0e0);})[_0x1f02('0x25')](function(){if(_0x3ec5bd['chanspy']){return getChanSpyPromise(_0x5ab7a2,_0x3ec5bd);}})[_0x1f02('0x25')](function(_0x544301){if(_0x544301&&_0x544301[_0x1f02('0x24')]){return _0x5ab7a2[_0x1f02('0x3a')][_0x1f02('0x3b')](_0x544301);}})['then'](function(){_0x30c0e4();})['catch'](function(_0x1c3f09){_0x30c0e4(_0x1c3f09);});},'afterUpdate':function(_0x1dc9cc,_0x37d6b5,_0x469440){return BPromise[_0x1f02('0x34')]()[_0x1f02('0x25')](function(){if(_0x1dc9cc[_0x1f02('0x35')](_0x1f02('0x10'))||_0x1dc9cc[_0x1f02('0x35')]('context')){return _0x5ab7a2[_0x1f02('0x3a')]['destroy']({'where':{'UserId':_0x1dc9cc['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x1f02('0x25')](function(){if(_0x1dc9cc['chanspy']){return getChanSpyPromise(_0x5ab7a2,_0x1dc9cc)['then'](function(_0xe61000){if(_0xe61000&&_0xe61000['length']){return _0x5ab7a2['VoiceExtension'][_0x1f02('0x3b')](_0xe61000);}});}});}})[_0x1f02('0x25')](function(){if(_0x1dc9cc['changed'](_0x1f02('0x1c'))||_0x1dc9cc[_0x1f02('0x35')](_0x1f02('0x7'))){return _0x5ab7a2[_0x1f02('0x3a')]['destroy']({'where':{'UserId':_0x1dc9cc['id'],'type':_0x1f02('0x9'),'ChanSpyId':null}})[_0x1f02('0x25')](function(){var _0x20338e=getUserApplications(_0x1dc9cc,_0x1dc9cc[_0x1f02('0x26')]);if(_0x1dc9cc[_0x1f02('0x26')]!=_0x1dc9cc[_0x1f02('0x17')]){_0x20338e=_0x20338e[_0x1f02('0x27')](getUserApplications(_0x1dc9cc,_0x1dc9cc[_0x1f02('0x17')]));}return _0x5ab7a2[_0x1f02('0x3a')][_0x1f02('0x3b')](_0x20338e);});}})[_0x1f02('0x25')](function(){_0x469440();})[_0x1f02('0x28')](function(_0x1abfaa){_0x469440(_0x1abfaa);});},'afterDestroy':function(_0x52df93){return _0x5ab7a2['VoiceExtension'][_0x1f02('0x3c')]({'where':{'UserId':_0x52df93['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x37759d,_0x59f65b){if(!_0x59f65b){return this[_0x1f02('0x15')]===this[_0x1f02('0x3d')](_0x37759d);}var _0x2915ea=this;this[_0x1f02('0x3d')](_0x37759d,function(_0x40bf99,_0x1b8b61){if(_0x40bf99){_0x59f65b(_0x40bf99);}if(_0x2915ea[_0x1f02('0x15')]===_0x1b8b61){_0x59f65b(null,!![]);}else{_0x59f65b(null,![]);}});},'makeSalt':function(_0x2178b2,_0x8eae3){var _0x446ee2=0x10;if(typeof arguments[0x0]===_0x1f02('0x3e')){_0x8eae3=arguments[0x0];_0x2178b2=_0x446ee2;}else if(typeof arguments[0x1]==='function'){_0x8eae3=arguments[0x1];}else{throw new Error(_0x1f02('0x3f'));}if(!_0x2178b2){_0x2178b2=_0x446ee2;}return crypto[_0x1f02('0x40')](_0x2178b2,function(_0x3f3e7c,_0x102551){if(_0x3f3e7c){_0x8eae3(_0x3f3e7c);}return _0x8eae3(null,_0x102551[_0x1f02('0x41')](_0x1f02('0x42')));});},'encryptPassword':function(_0x2201b4,_0x5f2409){if(!_0x2201b4||!this[_0x1f02('0x43')]){return _0x5f2409?_0x5f2409(null):null;}var _0x587d60=0x2710;var _0xa0b579=0x40;var _0x3842ef=Buffer[_0x1f02('0x44')](this[_0x1f02('0x43')],_0x1f02('0x42'));if(!_0x5f2409){return crypto['pbkdf2Sync'](_0x2201b4,_0x3842ef,_0x587d60,_0xa0b579,_0x1f02('0x45'))['toString'](_0x1f02('0x42'));}return crypto[_0x1f02('0x46')](_0x2201b4,_0x3842ef,_0x587d60,_0xa0b579,_0x1f02('0x45'),function(_0x18d80d,_0x2eb2f4){if(_0x18d80d){_0x5f2409(_0x18d80d);}return _0x5f2409(null,_0x2eb2f4[_0x1f02('0x41')](_0x1f02('0x42')));});},'updatePassword':function(_0xd92748){if(!this[_0x1f02('0x15')]){return _0xd92748(null);}if(!validatePresenceOf(this[_0x1f02('0x15')])&&authTypes['indexOf'](this['provider'])===-0x1){_0xd92748(new Error('Invalid\x20password'));}var _0x39dbee=this;this['makeSalt'](function(_0x238911,_0x449d58){if(_0x238911){return _0xd92748(_0x238911);}_0x39dbee['salt']=_0x449d58;_0x39dbee[_0x1f02('0x3d')](_0x39dbee['password'],function(_0x52e236,_0x4929be){if(_0x52e236){_0xd92748(_0x52e236);}_0x39dbee[_0x1f02('0x15')]=_0x4929be;_0xd92748(null);});});},'updateMd5Password':function(){this[_0x1f02('0x47')]=md5(this[_0x1f02('0x17')]+_0x1f02('0x48')+this[_0x1f02('0x15')]);return this[_0x1f02('0x47')];},'getRealtimeData':function(){var _0x5ea9a3={'id':this['id']};var _0x3986e6=jayson[_0x1f02('0x49')]['http']({'port':0x232a});var _0x5c2745=jayson[_0x1f02('0x49')][_0x1f02('0x4a')]({'port':0x232c});var _0x270bab={};var _0x47efdf={};return _0x3986e6[_0x1f02('0x4b')]('Agents',_0x5ea9a3)[_0x1f02('0x25')](function(_0x55151c){if(_0x55151c[_0x1f02('0x39')]){throw new Error(_0x1f02('0x4c'));}_0x270bab=_0x55151c[_0x1f02('0x4d')];return _0x5c2745[_0x1f02('0x4b')](_0x1f02('0x4e'),_0x5ea9a3);})[_0x1f02('0x25')](function(_0xc3bcdb){if(_0xc3bcdb[_0x1f02('0x39')]){throw new Error(_0x1f02('0x4f'));}_0x47efdf=_0xc3bcdb[_0x1f02('0x4d')];var _0x3d4c6f=_[_0x1f02('0xd')]({},_0x270bab,_0x47efdf);return _0x3d4c6f;})[_0x1f02('0x28')](function(_0x2e9881){throw _0x2e9881;});},'unpause':function(_0x34e2af,_0x14038a=_0x1f02('0x50')){var _0x3a465f=this;var _0x245413={};return Promise[_0x1f02('0x34')]()['then'](function(){if(!_0x34e2af||_0x34e2af===_0x1f02('0x51')&&_0x14038a===_0x1f02('0x50')){var _0x570770=jayson[_0x1f02('0x49')][_0x1f02('0x4a')]({'port':0x232a});return _0x570770['request'](_0x1f02('0x52'),{'id':_0x3a465f['id'],'name':_0x3a465f[_0x1f02('0x17')],'pause':![]})[_0x1f02('0x25')](function(_0x4b3b3e){if(_0x4b3b3e['error']){throw new Error(util[_0x1f02('0x13')](_0x1f02('0x53'),_0x3a465f['id'],_0x3a465f[_0x1f02('0x17')]));}return _0x4b3b3e[_0x1f02('0x4d')][_0x1f02('0x54')];});}})[_0x1f02('0x25')](function(){if(!_0x34e2af||_0x34e2af===_0x1f02('0x51')){return _0x5ab7a2[_0x1f02('0x55')][_0x1f02('0x56')]({'paused':0x0},{'where':{'UserId':_0x3a465f['id']},'individualHooks':!![]});}})[_0x1f02('0x25')](function(){var _0x494aae=!_0x34e2af?_0x1f02('0x57'):'findOne';var _0x5f56b4={'membername':_0x3a465f[_0x1f02('0x17')],'type':_0x1f02('0x58'),'exitAt':null};if(_0x34e2af){_0x5f56b4[_0x1f02('0x59')]=_0x34e2af;}return _0x5ab7a2[_0x1f02('0x5a')][_0x494aae]({'where':_0x5f56b4});})[_0x1f02('0x25')](function(_0x6b73f5){if(_0x6b73f5){var _0x2fb8bb=Array[_0x1f02('0x5b')](_0x6b73f5)?_0x6b73f5:[_0x6b73f5];var _0x31161e=_0x2fb8bb[_0x1f02('0x5c')](function(_0x16722d){return _0x16722d[_0x1f02('0x56')]({'exitAt':moment()[_0x1f02('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x14038a});});return Promise['all'](_0x31161e);}})[_0x1f02('0x25')](function(){if(!_0x34e2af){_0x245413[_0x1f02('0x5d')]=![];_0x245413['mailPause']=![];_0x245413['chatPause']=![];_0x245413[_0x1f02('0x5e')]=![];_0x245413[_0x1f02('0x5f')]=![];_0x245413[_0x1f02('0x60')]=![];_0x245413[_0x1f02('0x61')]=![];}else{_0x245413[_0x34e2af+_0x1f02('0x62')]=![];}return _0x3a465f[_0x1f02('0x63')]();})['then'](function(_0x2e7c1b){var _0x5ee858=require(_0x1f02('0x64'));var _0x4562c1=_0x5ee858[_0x1f02('0x65')]();_0x4562c1[_0x1f02('0x66')](function(_0x165860){var _0x452ca2=_0x165860+_0x1f02('0x67');_0x3a465f['setDataValue']([_0x452ca2],_0x2e7c1b[_0x452ca2]);});return _0x3a465f[_0x1f02('0x56')](_0x245413);})[_0x1f02('0x28')](function(_0x2f0811){throw _0x2f0811;});}}});};