Built motion from commit d5e4af8c.|2.6.23
[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 _0x0be3=['utf8_bin','undefined','resolve','UserProfile','userProfileId','privacyEnabled','updateMd5Password','find','changed','password','catch','error','VoiceExtension','bulkCreate','destroy','function','Missing\x20Callback','randomBytes','base64','from','pbkdf2Sync','sha1','pbkdf2','toString','provider','Invalid\x20password','makeSalt','salt','encryptPassword','md5secret',':asterisk:','client','http','request','Agents','result','manual','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','findOne','PAUSE','channel','MemberReport','isArray','update','YYYY-MM-DD\x20HH:mm:ss','voicePause','faxPause','whatsappPause','openchannelPause','Pause','getRealtimeData','getChannels','forEach','setDataValue','util','md5','moment','jayson/promise','google','length','from-sip','system','format','merge','CDR(type)=%s','chanspy','record','push','MixMonitor','${UNIQUEID}.%s,a','auth','Authenticate','SIP/%s,%s','name','options','join','StopMixMonitor','wav','WAV','gsm','context','Set','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','priority','defaults','findAll','then','internal','concat','exports','models','users'];(function(_0x1fafa5,_0x1aa281){var _0xcf08c9=function(_0x3af1b4){while(--_0x3af1b4){_0x1fafa5['push'](_0x1fafa5['shift']());}};_0xcf08c9(++_0x1aa281);}(_0x0be3,0x9a));var _0x30be=function(_0x4829ae,_0x7fe03){_0x4829ae=_0x4829ae-0x0;var _0x1485da=_0x0be3[_0x4829ae];return _0x1485da;};'use strict';var BPromise=require('bluebird');var crypto=require('crypto');var util=require(_0x30be('0x0'));var md5=require(_0x30be('0x1'));var moment=require(_0x30be('0x2'));var _=require('lodash');var jayson=require(_0x30be('0x3'));var attributes=require('./user.attributes');var authTypes=[_0x30be('0x4')];var validatePresenceOf=function(_0x2dda13){return _0x2dda13&&_0x2dda13[_0x30be('0x5')];};var getChanSpyApplications=function(_0x5af524,_0x47ef09,_0x429488){var _0xdc3ff5={'context':_0x5af524['context']||_0x30be('0x6'),'type':_0x30be('0x7'),'isApp':![],'UserId':_0x5af524['id']};var _0x403e5c=[];for(var _0x55f087=0x0,_0x433894=0x1;_0x55f087<_0x429488[_0x30be('0x5')];_0x55f087++,_0x433894=0x1){var _0xfe90cc={'exten':util[_0x30be('0x8')]('%s%s',_0x429488[_0x55f087]['prefix'],_0x47ef09),'ChanSpyId':_0x429488[_0x55f087]['id']};_0x403e5c['push'](_[_0x30be('0x9')]({'app':'Set','appdata':util[_0x30be('0x8')](_0x30be('0xa'),_0x30be('0xb')),'priority':_0x433894++},_0xdc3ff5,_0xfe90cc));if(_0x429488[_0x55f087][_0x30be('0xc')]){_0x403e5c[_0x30be('0xd')](_[_0x30be('0x9')]({'app':_0x30be('0xe'),'appdata':util[_0x30be('0x8')](_0x30be('0xf'),_0x429488[_0x55f087]['recordingFormat']),'priority':_0x433894++},_0xdc3ff5,_0xfe90cc));}if(_0x429488[_0x55f087][_0x30be('0x10')]){_0x403e5c['push'](_[_0x30be('0x9')]({'app':_0x30be('0x11'),'appdata':_0x429488[_0x55f087]['password'],'priority':_0x433894++},_0xdc3ff5,_0xfe90cc));}_0x403e5c[_0x30be('0xd')](_[_0x30be('0x9')]({'app':'ChanSpy','appdata':util[_0x30be('0x8')](_0x30be('0x12'),_0x5af524[_0x30be('0x13')],_0x429488[_0x55f087][_0x30be('0x14')]?_0x429488[_0x55f087][_0x30be('0x14')][_0x30be('0x15')](''):''),'priority':_0x433894++},_0xdc3ff5,_0xfe90cc));if(_0x429488[_0x55f087][_0x30be('0xc')]){_0x403e5c[_0x30be('0xd')](_[_0x30be('0x9')]({'app':_0x30be('0x16'),'priority':_0x433894++},_0xdc3ff5,_0xfe90cc));}}return _0x403e5c;};var getUserApplications=function(_0x562648,_0x3bb542){var _0x25984a=[_0x30be('0x17'),_0x30be('0x18'),_0x30be('0x19')];var _0x38639f={'context':_0x562648[_0x30be('0x1a')]||_0x30be('0x6'),'exten':_0x3bb542,'type':_0x30be('0x7'),'isApp':![],'UserId':_0x562648['id']};var _0x1c78fa=[{'app':_0x30be('0x1b'),'appdata':_0x30be('0x1c')}];if(_0x562648[_0x30be('0x1d')]&&_[_0x30be('0x1e')](_0x25984a,_0x562648['extensionMonitor'])){_0x1c78fa['push']({'app':_0x30be('0x1b'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x1c78fa[_0x30be('0xd')]({'app':'Set','appdata':util[_0x30be('0x8')](_0x30be('0x1f'),_0x562648[_0x30be('0x1d')])});_0x1c78fa[_0x30be('0xd')]({'app':_0x30be('0x20'),'appdata':util[_0x30be('0x8')](_0x30be('0x21'),_0x562648[_0x30be('0x13')])});}else{_0x1c78fa[_0x30be('0xd')]({'app':_0x30be('0x20'),'appdata':util[_0x30be('0x8')](_0x30be('0x22'),_0x562648['name'])});}_0x1c78fa[_0x30be('0xd')]({'app':'Hangup'});for(var _0x230ab3=0x0;_0x230ab3<_0x1c78fa[_0x30be('0x5')];_0x230ab3++){_0x1c78fa[_0x230ab3][_0x30be('0x23')]=_0x230ab3+0x1;_0x1c78fa[_0x230ab3]=_[_0x30be('0x24')](_0x1c78fa[_0x230ab3],_0x38639f);}return _0x1c78fa;};var getChanSpyPromise=function(_0x55d213,_0x2fbb13){return new BPromise(function(_0x289dd2,_0x5d2aad){return _0x55d213['VoiceChanSpy'][_0x30be('0x25')]()[_0x30be('0x26')](function(_0x149c6d){if(_0x149c6d){var _0x260f13=getChanSpyApplications(_0x2fbb13,_0x2fbb13[_0x30be('0x27')],_0x149c6d);if(_0x2fbb13[_0x30be('0x27')]!=_0x2fbb13[_0x30be('0x13')]){_0x260f13=_0x260f13[_0x30be('0x28')](getChanSpyApplications(_0x2fbb13,_0x2fbb13[_0x30be('0x13')],_0x149c6d));}return _0x289dd2(_0x260f13);}return _0x289dd2([]);})['catch'](function(_0x5c61ef){_0x5d2aad(_0x5c61ef);});});};module[_0x30be('0x29')]=function(_0x5d0e90){var _0x59ff9e=_0x5d0e90[_0x30be('0x2a')];return _0x5d0e90['define']('User',attributes,{'tableName':_0x30be('0x2b'),'charset':'utf8','collate':_0x30be('0x2c'),'hooks':{'beforeCreate':function(_0x23003b,_0xf42817,_0xd92501){var _0x1480cb=typeof _0x23003b['userProfileId']===_0x30be('0x2d')?BPromise[_0x30be('0x2e')](null):_0x59ff9e[_0x30be('0x2f')]['find']({'where':{'id':_0x23003b[_0x30be('0x30')]}});_0x1480cb[_0x30be('0x26')](function(_0x538ca3){if(_0x538ca3){_0x23003b[_0x30be('0x31')]=_0x538ca3[_0x30be('0x31')];}})['then'](function(){_0x23003b[_0x30be('0x32')]();_0x23003b['updatePassword'](_0xd92501);})['catch'](function(_0x4afdc2){_0xd92501(_0x4afdc2);});},'beforeUpdate':function(_0x110e9f,_0x357355,_0x150e79){Promise['resolve']()[_0x30be('0x26')](function(){if(_0x110e9f['changed'](_0x30be('0x30'))===![])return;return _0x59ff9e[_0x30be('0x2f')][_0x30be('0x33')]({'where':{'id':_0x110e9f[_0x30be('0x30')]}})['then'](function(_0x55139b){if(_0x55139b)_0x110e9f[_0x30be('0x31')]=_0x55139b['privacyEnabled'];return;});})[_0x30be('0x26')](function(){if(_0x110e9f[_0x30be('0x34')](_0x30be('0x35'))){_0x110e9f[_0x30be('0x32')]();return _0x110e9f['updatePassword'](_0x150e79);}_0x150e79();})[_0x30be('0x36')](function(_0x58c801){_0x150e79(_0x58c801);});},'afterCreate':function(_0x1c23a9,_0x26923d,_0x1852e1){var _0x1c2950=getUserApplications(_0x1c23a9,_0x1c23a9['internal']);if(_0x1c23a9[_0x30be('0x27')]!=_0x1c23a9[_0x30be('0x13')]){_0x1c2950=_0x1c2950[_0x30be('0x28')](getUserApplications(_0x1c23a9,_0x1c23a9['name']));}return Promise[_0x30be('0x2e')]()[_0x30be('0x26')](function(){if(!_0x1c23a9['userSetting']){return _0x1c23a9['createUserSetting']({'clientSideLoggingLevel':_0x30be('0x37'),'clientSideLoggingEnabled':![]});}})['then'](function(){return _0x59ff9e[_0x30be('0x38')][_0x30be('0x39')](_0x1c2950);})[_0x30be('0x26')](function(){if(_0x1c23a9[_0x30be('0xb')]){return getChanSpyPromise(_0x59ff9e,_0x1c23a9);}})['then'](function(_0x5f1320){if(_0x5f1320&&_0x5f1320['length']){return _0x59ff9e[_0x30be('0x38')][_0x30be('0x39')](_0x5f1320);}})[_0x30be('0x26')](function(){_0x1852e1();})[_0x30be('0x36')](function(_0x4eab2e){_0x1852e1(_0x4eab2e);});},'afterUpdate':function(_0x86bfda,_0x19de05,_0x5958bd){return BPromise[_0x30be('0x2e')]()[_0x30be('0x26')](function(){if(_0x86bfda[_0x30be('0x34')]('chanspy')||_0x86bfda[_0x30be('0x34')]('context')){return _0x59ff9e[_0x30be('0x38')][_0x30be('0x3a')]({'where':{'UserId':_0x86bfda['id'],'type':'system','ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x86bfda[_0x30be('0xb')]){return getChanSpyPromise(_0x59ff9e,_0x86bfda)[_0x30be('0x26')](function(_0x23e917){if(_0x23e917&&_0x23e917['length']){return _0x59ff9e['VoiceExtension'][_0x30be('0x39')](_0x23e917);}});}});}})[_0x30be('0x26')](function(){if(_0x86bfda[_0x30be('0x34')]('extensionMonitor')||_0x86bfda[_0x30be('0x34')]('context')){return _0x59ff9e['VoiceExtension'][_0x30be('0x3a')]({'where':{'UserId':_0x86bfda['id'],'type':'system','ChanSpyId':null}})[_0x30be('0x26')](function(){var _0x31c284=getUserApplications(_0x86bfda,_0x86bfda[_0x30be('0x27')]);if(_0x86bfda[_0x30be('0x27')]!=_0x86bfda[_0x30be('0x13')]){_0x31c284=_0x31c284[_0x30be('0x28')](getUserApplications(_0x86bfda,_0x86bfda[_0x30be('0x13')]));}return _0x59ff9e[_0x30be('0x38')][_0x30be('0x39')](_0x31c284);});}})['then'](function(){_0x5958bd();})[_0x30be('0x36')](function(_0x419419){_0x5958bd(_0x419419);});},'afterDestroy':function(_0x24c020){return _0x59ff9e[_0x30be('0x38')][_0x30be('0x3a')]({'where':{'UserId':_0x24c020['id'],'type':_0x30be('0x7')}});}},'instanceMethods':{'authenticate':function(_0x2aabd3,_0x1c4107){if(!_0x1c4107){return this[_0x30be('0x35')]===this['encryptPassword'](_0x2aabd3);}var _0x29ccef=this;this['encryptPassword'](_0x2aabd3,function(_0x22c622,_0x46f121){if(_0x22c622){_0x1c4107(_0x22c622);}if(_0x29ccef['password']===_0x46f121){_0x1c4107(null,!![]);}else{_0x1c4107(null,![]);}});},'makeSalt':function(_0x3521e7,_0x36d81d){var _0x21fd32=0x10;if(typeof arguments[0x0]===_0x30be('0x3b')){_0x36d81d=arguments[0x0];_0x3521e7=_0x21fd32;}else if(typeof arguments[0x1]==='function'){_0x36d81d=arguments[0x1];}else{throw new Error(_0x30be('0x3c'));}if(!_0x3521e7){_0x3521e7=_0x21fd32;}return crypto[_0x30be('0x3d')](_0x3521e7,function(_0x3d361e,_0x57656b){if(_0x3d361e){_0x36d81d(_0x3d361e);}return _0x36d81d(null,_0x57656b['toString'](_0x30be('0x3e')));});},'encryptPassword':function(_0x3cbe4f,_0x376013){if(!_0x3cbe4f||!this['salt']){return _0x376013?_0x376013(null):null;}var _0x4f8eb6=0x2710;var _0x5c2db4=0x40;var _0x9bdea0=Buffer[_0x30be('0x3f')](this['salt'],_0x30be('0x3e'));if(!_0x376013){return crypto[_0x30be('0x40')](_0x3cbe4f,_0x9bdea0,_0x4f8eb6,_0x5c2db4,_0x30be('0x41'))['toString'](_0x30be('0x3e'));}return crypto[_0x30be('0x42')](_0x3cbe4f,_0x9bdea0,_0x4f8eb6,_0x5c2db4,_0x30be('0x41'),function(_0x2237a2,_0x162a33){if(_0x2237a2){_0x376013(_0x2237a2);}return _0x376013(null,_0x162a33[_0x30be('0x43')](_0x30be('0x3e')));});},'updatePassword':function(_0xb04289){if(!this[_0x30be('0x35')]){return _0xb04289(null);}if(!validatePresenceOf(this['password'])&&authTypes['indexOf'](this[_0x30be('0x44')])===-0x1){_0xb04289(new Error(_0x30be('0x45')));}var _0xcc81c=this;this[_0x30be('0x46')](function(_0x25592e,_0x3c4894){if(_0x25592e){return _0xb04289(_0x25592e);}_0xcc81c[_0x30be('0x47')]=_0x3c4894;_0xcc81c[_0x30be('0x48')](_0xcc81c['password'],function(_0x26eefe,_0x1755cf){if(_0x26eefe){_0xb04289(_0x26eefe);}_0xcc81c[_0x30be('0x35')]=_0x1755cf;_0xb04289(null);});});},'updateMd5Password':function(){this[_0x30be('0x49')]=md5(this[_0x30be('0x13')]+_0x30be('0x4a')+this[_0x30be('0x35')]);return this[_0x30be('0x49')];},'getRealtimeData':function(){var _0x85224a={'id':this['id']};var _0x1415eb=jayson[_0x30be('0x4b')][_0x30be('0x4c')]({'port':0x232a});var _0x340b8e=jayson[_0x30be('0x4b')]['http']({'port':0x232c});var _0x5a9bba={};var _0x4f64b7={};return _0x1415eb[_0x30be('0x4d')](_0x30be('0x4e'),_0x85224a)['then'](function(_0x5da182){if(_0x5da182[_0x30be('0x37')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)');}_0x5a9bba=_0x5da182[_0x30be('0x4f')];return _0x340b8e[_0x30be('0x4d')](_0x30be('0x4e'),_0x85224a);})[_0x30be('0x26')](function(_0x5c3e25){if(_0x5c3e25[_0x30be('0x37')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)');}_0x4f64b7=_0x5c3e25[_0x30be('0x4f')];var _0x3f0288=_[_0x30be('0x9')]({},_0x5a9bba,_0x4f64b7);return _0x3f0288;})[_0x30be('0x36')](function(_0x4e68ef){throw _0x4e68ef;});},'unpause':function(_0x567cf3,_0x4ddbbe=_0x30be('0x50')){var _0x3a14dd=this;var _0x79c30d={};return Promise['resolve']()[_0x30be('0x26')](function(){if(!_0x567cf3||_0x567cf3==='voice'&&_0x4ddbbe===_0x30be('0x50')){var _0x58449e=jayson[_0x30be('0x4b')][_0x30be('0x4c')]({'port':0x232a});return _0x58449e[_0x30be('0x4d')](_0x30be('0x51'),{'id':_0x3a14dd['id'],'name':_0x3a14dd[_0x30be('0x13')],'pause':![]})[_0x30be('0x26')](function(_0x131901){if(_0x131901[_0x30be('0x37')]){throw new Error(util[_0x30be('0x8')](_0x30be('0x52'),_0x3a14dd['id'],_0x3a14dd[_0x30be('0x13')]));}return _0x131901[_0x30be('0x4f')]['message'];});}})[_0x30be('0x26')](function(){if(!_0x567cf3||_0x567cf3==='voice'){return _0x59ff9e['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x3a14dd['id']},'individualHooks':!![]});}})[_0x30be('0x26')](function(){var _0x26404b=!_0x567cf3?_0x30be('0x25'):_0x30be('0x53');var _0x265891={'membername':_0x3a14dd[_0x30be('0x13')],'type':_0x30be('0x54'),'exitAt':null};if(_0x567cf3){_0x265891[_0x30be('0x55')]=_0x567cf3;}return _0x59ff9e[_0x30be('0x56')][_0x26404b]({'where':_0x265891});})['then'](function(_0x278b2d){if(_0x278b2d){var _0x2dc197=Array[_0x30be('0x57')](_0x278b2d)?_0x278b2d:[_0x278b2d];var _0xa2307a=_0x2dc197['map'](function(_0x57b321){return _0x57b321[_0x30be('0x58')]({'exitAt':moment()[_0x30be('0x8')](_0x30be('0x59')),'data2':_0x4ddbbe});});return Promise['all'](_0xa2307a);}})[_0x30be('0x26')](function(){if(!_0x567cf3){_0x79c30d[_0x30be('0x5a')]=![];_0x79c30d['mailPause']=![];_0x79c30d['chatPause']=![];_0x79c30d[_0x30be('0x5b')]=![];_0x79c30d['smsPause']=![];_0x79c30d[_0x30be('0x5c')]=![];_0x79c30d[_0x30be('0x5d')]=![];}else{_0x79c30d[_0x567cf3+_0x30be('0x5e')]=![];}return _0x3a14dd[_0x30be('0x5f')]();})[_0x30be('0x26')](function(_0x59e60a){var _0x54fe24=require('../../config/utils');var _0x212c7f=_0x54fe24[_0x30be('0x60')]();_0x212c7f[_0x30be('0x61')](function(_0x19f17e){var _0x49f20f=_0x19f17e+'Status';_0x3a14dd[_0x30be('0x62')]([_0x49f20f],_0x59e60a[_0x49f20f]);});return _0x3a14dd[_0x30be('0x58')](_0x79c30d);})['catch'](function(_0x17ee21){throw _0x17ee21;});}}});};