Built motion from commit (unavailable).|2.5.28
[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 _0xe58a=['userProfileId','resolve','UserProfile','then','privacyEnabled','updatePassword','changed','find','updateMd5Password','concat','VoiceExtension','bulkCreate','destroy','password','encryptPassword','function','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','provider','Invalid\x20password','md5secret','bluebird','crypto','util','lodash','context','from-sip','system','length','format','prefix','push','merge','Set','chanspy','record','${UNIQUEID}.%s,a','recordingFormat','auth','ChanSpy','name','options','join','StopMixMonitor','WAV','gsm','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Hangup','priority','defaults','VoiceChanSpy','internal','catch','exports','models','define','User','users','utf8'];(function(_0x1246f7,_0x466923){var _0x92fa07=function(_0x2d9783){while(--_0x2d9783){_0x1246f7['push'](_0x1246f7['shift']());}};_0x92fa07(++_0x466923);}(_0xe58a,0x9f));var _0xae58=function(_0x160608,_0x39376b){_0x160608=_0x160608-0x0;var _0x11cdf1=_0xe58a[_0x160608];return _0x11cdf1;};'use strict';var BPromise=require(_0xae58('0x0'));var crypto=require(_0xae58('0x1'));var util=require(_0xae58('0x2'));var md5=require('md5');var _=require(_0xae58('0x3'));var attributes=require('./user.attributes');var authTypes=['google'];var validatePresenceOf=function(_0x32a020){return _0x32a020&&_0x32a020['length'];};var getChanSpyApplications=function(_0x4df1a3,_0xa7f80a,_0x5f3a87){var _0x198e0c={'context':_0x4df1a3[_0xae58('0x4')]||_0xae58('0x5'),'type':_0xae58('0x6'),'isApp':![],'UserId':_0x4df1a3['id']};var _0x703a03=[];for(var _0x7cb067=0x0,_0x20b26a=0x1;_0x7cb067<_0x5f3a87[_0xae58('0x7')];_0x7cb067++,_0x20b26a=0x1){var _0x315ea9={'exten':util[_0xae58('0x8')]('%s%s',_0x5f3a87[_0x7cb067][_0xae58('0x9')],_0xa7f80a),'ChanSpyId':_0x5f3a87[_0x7cb067]['id']};_0x703a03[_0xae58('0xa')](_[_0xae58('0xb')]({'app':_0xae58('0xc'),'appdata':util[_0xae58('0x8')]('CDR(type)=%s',_0xae58('0xd')),'priority':_0x20b26a++},_0x198e0c,_0x315ea9));if(_0x5f3a87[_0x7cb067][_0xae58('0xe')]){_0x703a03['push'](_[_0xae58('0xb')]({'app':'MixMonitor','appdata':util[_0xae58('0x8')](_0xae58('0xf'),_0x5f3a87[_0x7cb067][_0xae58('0x10')]),'priority':_0x20b26a++},_0x198e0c,_0x315ea9));}if(_0x5f3a87[_0x7cb067][_0xae58('0x11')]){_0x703a03['push'](_[_0xae58('0xb')]({'app':'Authenticate','appdata':_0x5f3a87[_0x7cb067]['password'],'priority':_0x20b26a++},_0x198e0c,_0x315ea9));}_0x703a03[_0xae58('0xa')](_[_0xae58('0xb')]({'app':_0xae58('0x12'),'appdata':util[_0xae58('0x8')]('SIP/%s,%s',_0x4df1a3[_0xae58('0x13')],_0x5f3a87[_0x7cb067][_0xae58('0x14')]?_0x5f3a87[_0x7cb067][_0xae58('0x14')][_0xae58('0x15')](''):''),'priority':_0x20b26a++},_0x198e0c,_0x315ea9));if(_0x5f3a87[_0x7cb067]['record']){_0x703a03['push'](_[_0xae58('0xb')]({'app':_0xae58('0x16'),'priority':_0x20b26a++},_0x198e0c,_0x315ea9));}}return _0x703a03;};var getUserApplications=function(_0x45a26b,_0x252488){var _0x2e051c=['wav',_0xae58('0x17'),_0xae58('0x18')];var _0x28dc1c={'context':_0x45a26b[_0xae58('0x4')]||_0xae58('0x5'),'exten':_0x252488,'type':_0xae58('0x6'),'isApp':![],'UserId':_0x45a26b['id']};var _0x3b7fc4=[{'app':_0xae58('0xc'),'appdata':_0xae58('0x19')}];if(_0x45a26b['extensionMonitor']&&_['includes'](_0x2e051c,_0x45a26b[_0xae58('0x1a')])){_0x3b7fc4['push']({'app':_0xae58('0xc'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x3b7fc4[_0xae58('0xa')]({'app':_0xae58('0xc'),'appdata':util[_0xae58('0x8')](_0xae58('0x1b'),_0x45a26b[_0xae58('0x1a')])});_0x3b7fc4['push']({'app':_0xae58('0x1c'),'appdata':util[_0xae58('0x8')](_0xae58('0x1d'),_0x45a26b[_0xae58('0x13')])});}else{_0x3b7fc4['push']({'app':_0xae58('0x1c'),'appdata':util['format']('SIP/%s,,tTxX',_0x45a26b[_0xae58('0x13')])});}_0x3b7fc4['push']({'app':_0xae58('0x1e')});for(var _0x51ceba=0x0;_0x51ceba<_0x3b7fc4[_0xae58('0x7')];_0x51ceba++){_0x3b7fc4[_0x51ceba][_0xae58('0x1f')]=_0x51ceba+0x1;_0x3b7fc4[_0x51ceba]=_[_0xae58('0x20')](_0x3b7fc4[_0x51ceba],_0x28dc1c);}return _0x3b7fc4;};var getChanSpyPromise=function(_0x54c4ed,_0x55dcb8){return new BPromise(function(_0x4c5340,_0x5049de){return _0x54c4ed[_0xae58('0x21')]['findAll']()['then'](function(_0xbefe7c){if(_0xbefe7c){var _0x16dc96=getChanSpyApplications(_0x55dcb8,_0x55dcb8[_0xae58('0x22')],_0xbefe7c);if(_0x55dcb8[_0xae58('0x22')]!=_0x55dcb8[_0xae58('0x13')]){_0x16dc96=_0x16dc96['concat'](getChanSpyApplications(_0x55dcb8,_0x55dcb8[_0xae58('0x13')],_0xbefe7c));}return _0x4c5340(_0x16dc96);}return _0x4c5340([]);})[_0xae58('0x23')](function(_0x2d1c86){_0x5049de(_0x2d1c86);});});};module[_0xae58('0x24')]=function(_0x2ba351,_0x400a7a){var _0x2f5e39=_0x2ba351[_0xae58('0x25')];return _0x2ba351[_0xae58('0x26')](_0xae58('0x27'),attributes,{'tableName':_0xae58('0x28'),'charset':_0xae58('0x29'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x382483,_0xa50a12,_0xdc554e){var _0x21ab4d=typeof _0x382483[_0xae58('0x2a')]==='undefined'?BPromise[_0xae58('0x2b')](null):_0x2f5e39[_0xae58('0x2c')]['find']({'where':{'id':_0x382483[_0xae58('0x2a')]}});_0x21ab4d[_0xae58('0x2d')](function(_0x279081){if(_0x279081){_0x382483[_0xae58('0x2e')]=_0x279081['privacyEnabled'];}})[_0xae58('0x2d')](function(){_0x382483['updateMd5Password']();_0x382483[_0xae58('0x2f')](_0xdc554e);})[_0xae58('0x23')](function(_0x9b1f83){_0xdc554e(_0x9b1f83);});},'beforeUpdate':function(_0x324158,_0x487308,_0x13c558){Promise['resolve']()[_0xae58('0x2d')](function(){if(_0x324158[_0xae58('0x30')]('userProfileId')===![])return;return _0x2f5e39['UserProfile'][_0xae58('0x31')]({'where':{'id':_0x324158[_0xae58('0x2a')]}})['then'](function(_0xa1edab){if(_0xa1edab)_0x324158[_0xae58('0x2e')]=_0xa1edab[_0xae58('0x2e')];return;});})[_0xae58('0x2d')](function(){if(_0x324158[_0xae58('0x30')]('password')){_0x324158[_0xae58('0x32')]();return _0x324158['updatePassword'](_0x13c558);}_0x13c558();})[_0xae58('0x23')](function(_0x1f683b){_0x13c558(_0x1f683b);});},'afterCreate':function(_0x140f2d,_0xc8de8e,_0x38d088){var _0x20f3b9=getUserApplications(_0x140f2d,_0x140f2d[_0xae58('0x22')]);if(_0x140f2d[_0xae58('0x22')]!=_0x140f2d[_0xae58('0x13')]){_0x20f3b9=_0x20f3b9[_0xae58('0x33')](getUserApplications(_0x140f2d,_0x140f2d[_0xae58('0x13')]));}return _0x2f5e39[_0xae58('0x34')][_0xae58('0x35')](_0x20f3b9)[_0xae58('0x2d')](function(){if(_0x140f2d[_0xae58('0xd')]){return getChanSpyPromise(_0x2f5e39,_0x140f2d);}})[_0xae58('0x2d')](function(_0x2ba135){if(_0x2ba135&&_0x2ba135[_0xae58('0x7')]){return _0x2f5e39['VoiceExtension'][_0xae58('0x35')](_0x2ba135);}})['then'](function(){_0x38d088();})[_0xae58('0x23')](function(_0x2ce757){_0x38d088(_0x2ce757);});},'afterUpdate':function(_0x4a66a1,_0x10a788,_0x374e63){return BPromise[_0xae58('0x2b')]()[_0xae58('0x2d')](function(){if(_0x4a66a1['changed']('chanspy')||_0x4a66a1['changed']('context')){return _0x2f5e39[_0xae58('0x34')][_0xae58('0x36')]({'where':{'UserId':_0x4a66a1['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xae58('0x2d')](function(){if(_0x4a66a1['chanspy']){return getChanSpyPromise(_0x2f5e39,_0x4a66a1)[_0xae58('0x2d')](function(_0x95ffa7){if(_0x95ffa7&&_0x95ffa7[_0xae58('0x7')]){return _0x2f5e39[_0xae58('0x34')]['bulkCreate'](_0x95ffa7);}});}});}})['then'](function(){if(_0x4a66a1[_0xae58('0x30')]('extensionMonitor')||_0x4a66a1[_0xae58('0x30')](_0xae58('0x4'))){return _0x2f5e39['VoiceExtension'][_0xae58('0x36')]({'where':{'UserId':_0x4a66a1['id'],'type':_0xae58('0x6'),'ChanSpyId':null}})[_0xae58('0x2d')](function(){var _0x3046c3=getUserApplications(_0x4a66a1,_0x4a66a1[_0xae58('0x22')]);if(_0x4a66a1[_0xae58('0x22')]!=_0x4a66a1[_0xae58('0x13')]){_0x3046c3=_0x3046c3[_0xae58('0x33')](getUserApplications(_0x4a66a1,_0x4a66a1['name']));}return _0x2f5e39[_0xae58('0x34')][_0xae58('0x35')](_0x3046c3);});}})[_0xae58('0x2d')](function(){_0x374e63();})[_0xae58('0x23')](function(_0x45629d){_0x374e63(_0x45629d);});},'afterDestroy':function(_0x19768a,_0x473d59){return _0x2f5e39[_0xae58('0x34')][_0xae58('0x36')]({'where':{'UserId':_0x19768a['id'],'type':_0xae58('0x6')}});}},'instanceMethods':{'authenticate':function(_0x467dcf,_0x20b030){if(!_0x20b030){return this[_0xae58('0x37')]===this[_0xae58('0x38')](_0x467dcf);}var _0x2148b9=this;this['encryptPassword'](_0x467dcf,function(_0x384d93,_0x4d18e2){if(_0x384d93){_0x20b030(_0x384d93);}if(_0x2148b9[_0xae58('0x37')]===_0x4d18e2){_0x20b030(null,!![]);}else{_0x20b030(null,![]);}});},'makeSalt':function(_0x50b4e2,_0x52b418){var _0x5b81e6=0x10;if(typeof arguments[0x0]===_0xae58('0x39')){_0x52b418=arguments[0x0];_0x50b4e2=_0x5b81e6;}else if(typeof arguments[0x1]===_0xae58('0x39')){_0x52b418=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x50b4e2){_0x50b4e2=_0x5b81e6;}return crypto['randomBytes'](_0x50b4e2,function(_0x4e4821,_0x36915b){if(_0x4e4821){_0x52b418(_0x4e4821);}return _0x52b418(null,_0x36915b[_0xae58('0x3a')](_0xae58('0x3b')));});},'encryptPassword':function(_0x40cbd5,_0x4b27b9){if(!_0x40cbd5||!this[_0xae58('0x3c')]){return _0x4b27b9?_0x4b27b9(null):null;}var _0x13e3b0=0x2710;var _0x8d96e5=0x40;var _0x2935f4=new Buffer(this[_0xae58('0x3c')],_0xae58('0x3b'));if(!_0x4b27b9){return crypto[_0xae58('0x3d')](_0x40cbd5,_0x2935f4,_0x13e3b0,_0x8d96e5,_0xae58('0x3e'))[_0xae58('0x3a')](_0xae58('0x3b'));}return crypto[_0xae58('0x3f')](_0x40cbd5,_0x2935f4,_0x13e3b0,_0x8d96e5,'sha1',function(_0x26bf20,_0x1aaeb6){if(_0x26bf20){_0x4b27b9(_0x26bf20);}return _0x4b27b9(null,_0x1aaeb6[_0xae58('0x3a')](_0xae58('0x3b')));});},'updatePassword':function(_0x3fb585){if(!this[_0xae58('0x37')]){return _0x3fb585(null);}if(!validatePresenceOf(this['password'])&&authTypes['indexOf'](this[_0xae58('0x40')])===-0x1){_0x3fb585(new Error(_0xae58('0x41')));}var _0x48e51a=this;this['makeSalt'](function(_0x2f15b0,_0x55b2b9){if(_0x2f15b0){return _0x3fb585(_0x2f15b0);}_0x48e51a[_0xae58('0x3c')]=_0x55b2b9;_0x48e51a[_0xae58('0x38')](_0x48e51a['password'],function(_0x152133,_0x59edce){if(_0x152133){_0x3fb585(_0x152133);}_0x48e51a[_0xae58('0x37')]=_0x59edce;_0x3fb585(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xae58('0x13')]+':asterisk:'+this[_0xae58('0x37')]);return this[_0xae58('0x42')];}}});};