Built motion from commit (unavailable).|2.5.27
[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 _0xa396=['then','internal','concat','catch','exports','User','users','utf8_bin','undefined','resolve','UserProfile','find','userProfileId','privacyEnabled','updateMd5Password','updatePassword','changed','password','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','salt','base64','pbkdf2Sync','toString','pbkdf2','indexOf','provider','md5secret','bluebird','crypto','md5','lodash','google','length','context','from-sip','system','format','prefix','push','merge','Set','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','auth','Authenticate','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','WAV','gsm','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxX','Hangup','priority','defaults','findAll'];(function(_0x188155,_0x3af079){var _0x422942=function(_0x4aaedb){while(--_0x4aaedb){_0x188155['push'](_0x188155['shift']());}};_0x422942(++_0x3af079);}(_0xa396,0xaa));var _0x6a39=function(_0x2a0413,_0xf312a5){_0x2a0413=_0x2a0413-0x0;var _0x504245=_0xa396[_0x2a0413];return _0x504245;};'use strict';var BPromise=require(_0x6a39('0x0'));var crypto=require(_0x6a39('0x1'));var util=require('util');var md5=require(_0x6a39('0x2'));var _=require(_0x6a39('0x3'));var attributes=require('./user.attributes');var authTypes=[_0x6a39('0x4')];var validatePresenceOf=function(_0x2903ef){return _0x2903ef&&_0x2903ef[_0x6a39('0x5')];};var getChanSpyApplications=function(_0x444afd,_0x277e3f,_0x32fc9d){var _0x1cd04b={'context':_0x444afd[_0x6a39('0x6')]||_0x6a39('0x7'),'type':_0x6a39('0x8'),'isApp':![],'UserId':_0x444afd['id']};var _0x4c9f8b=[];for(var _0x4dad0c=0x0,_0x5e8343=0x1;_0x4dad0c<_0x32fc9d[_0x6a39('0x5')];_0x4dad0c++,_0x5e8343=0x1){var _0x576861={'exten':util[_0x6a39('0x9')]('%s%s',_0x32fc9d[_0x4dad0c][_0x6a39('0xa')],_0x277e3f),'ChanSpyId':_0x32fc9d[_0x4dad0c]['id']};_0x4c9f8b[_0x6a39('0xb')](_[_0x6a39('0xc')]({'app':_0x6a39('0xd'),'appdata':util[_0x6a39('0x9')]('CDR(type)=%s',_0x6a39('0xe')),'priority':_0x5e8343++},_0x1cd04b,_0x576861));if(_0x32fc9d[_0x4dad0c][_0x6a39('0xf')]){_0x4c9f8b[_0x6a39('0xb')](_['merge']({'app':_0x6a39('0x10'),'appdata':util[_0x6a39('0x9')](_0x6a39('0x11'),_0x32fc9d[_0x4dad0c]['recordingFormat']),'priority':_0x5e8343++},_0x1cd04b,_0x576861));}if(_0x32fc9d[_0x4dad0c][_0x6a39('0x12')]){_0x4c9f8b[_0x6a39('0xb')](_[_0x6a39('0xc')]({'app':_0x6a39('0x13'),'appdata':_0x32fc9d[_0x4dad0c]['password'],'priority':_0x5e8343++},_0x1cd04b,_0x576861));}_0x4c9f8b['push'](_[_0x6a39('0xc')]({'app':_0x6a39('0x14'),'appdata':util[_0x6a39('0x9')](_0x6a39('0x15'),_0x444afd[_0x6a39('0x16')],_0x32fc9d[_0x4dad0c]['options']?_0x32fc9d[_0x4dad0c][_0x6a39('0x17')][_0x6a39('0x18')](''):''),'priority':_0x5e8343++},_0x1cd04b,_0x576861));if(_0x32fc9d[_0x4dad0c][_0x6a39('0xf')]){_0x4c9f8b['push'](_[_0x6a39('0xc')]({'app':_0x6a39('0x19'),'priority':_0x5e8343++},_0x1cd04b,_0x576861));}}return _0x4c9f8b;};var getUserApplications=function(_0x1d8bd0,_0xbb9964){var _0x323ba5=['wav',_0x6a39('0x1a'),_0x6a39('0x1b')];var _0x97729c={'context':_0x1d8bd0['context']||_0x6a39('0x7'),'exten':_0xbb9964,'type':_0x6a39('0x8'),'isApp':![],'UserId':_0x1d8bd0['id']};var _0x331515=[{'app':_0x6a39('0xd'),'appdata':'CDR(type)=internal'}];if(_0x1d8bd0[_0x6a39('0x1c')]&&_[_0x6a39('0x1d')](_0x323ba5,_0x1d8bd0[_0x6a39('0x1c')])){_0x331515[_0x6a39('0xb')]({'app':_0x6a39('0xd'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x331515[_0x6a39('0xb')]({'app':_0x6a39('0xd'),'appdata':util[_0x6a39('0x9')](_0x6a39('0x1e'),_0x1d8bd0['extensionMonitor'])});_0x331515[_0x6a39('0xb')]({'app':_0x6a39('0x1f'),'appdata':util[_0x6a39('0x9')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x1d8bd0[_0x6a39('0x16')])});}else{_0x331515['push']({'app':_0x6a39('0x1f'),'appdata':util[_0x6a39('0x9')](_0x6a39('0x20'),_0x1d8bd0[_0x6a39('0x16')])});}_0x331515['push']({'app':_0x6a39('0x21')});for(var _0x4f0361=0x0;_0x4f0361<_0x331515['length'];_0x4f0361++){_0x331515[_0x4f0361][_0x6a39('0x22')]=_0x4f0361+0x1;_0x331515[_0x4f0361]=_[_0x6a39('0x23')](_0x331515[_0x4f0361],_0x97729c);}return _0x331515;};var getChanSpyPromise=function(_0x21c536,_0x88f576){return new BPromise(function(_0x368c31,_0x558922){return _0x21c536['VoiceChanSpy'][_0x6a39('0x24')]()[_0x6a39('0x25')](function(_0xced3f5){if(_0xced3f5){var _0x25f962=getChanSpyApplications(_0x88f576,_0x88f576[_0x6a39('0x26')],_0xced3f5);if(_0x88f576[_0x6a39('0x26')]!=_0x88f576[_0x6a39('0x16')]){_0x25f962=_0x25f962[_0x6a39('0x27')](getChanSpyApplications(_0x88f576,_0x88f576[_0x6a39('0x16')],_0xced3f5));}return _0x368c31(_0x25f962);}return _0x368c31([]);})[_0x6a39('0x28')](function(_0x1155b5){_0x558922(_0x1155b5);});});};module[_0x6a39('0x29')]=function(_0x3ea51c,_0x4e3a8a){var _0x3bfd7e=_0x3ea51c['models'];return _0x3ea51c['define'](_0x6a39('0x2a'),attributes,{'tableName':_0x6a39('0x2b'),'charset':'utf8','collate':_0x6a39('0x2c'),'hooks':{'beforeCreate':function(_0x5cadca,_0x3d6664,_0x1d926b){var _0x1be3e3=typeof _0x5cadca['userProfileId']===_0x6a39('0x2d')?BPromise[_0x6a39('0x2e')](null):_0x3bfd7e[_0x6a39('0x2f')][_0x6a39('0x30')]({'where':{'id':_0x5cadca[_0x6a39('0x31')]}});_0x1be3e3[_0x6a39('0x25')](function(_0x3de2bb){if(_0x3de2bb){_0x5cadca[_0x6a39('0x32')]=_0x3de2bb[_0x6a39('0x32')];}})[_0x6a39('0x25')](function(){_0x5cadca[_0x6a39('0x33')]();_0x5cadca[_0x6a39('0x34')](_0x1d926b);})[_0x6a39('0x28')](function(_0x28eed6){_0x1d926b(_0x28eed6);});},'beforeUpdate':function(_0x37e29d,_0x5835b6,_0x23a457){Promise[_0x6a39('0x2e')]()[_0x6a39('0x25')](function(){if(_0x37e29d[_0x6a39('0x35')](_0x6a39('0x31'))===![])return;return _0x3bfd7e[_0x6a39('0x2f')]['find']({'where':{'id':_0x37e29d['userProfileId']}})['then'](function(_0x273fe9){if(_0x273fe9)_0x37e29d['privacyEnabled']=_0x273fe9[_0x6a39('0x32')];return;});})[_0x6a39('0x25')](function(){if(_0x37e29d['changed'](_0x6a39('0x36'))){_0x37e29d[_0x6a39('0x33')]();return _0x37e29d[_0x6a39('0x34')](_0x23a457);}_0x23a457();})['catch'](function(_0x180d7f){_0x23a457(_0x180d7f);});},'afterCreate':function(_0x447675,_0x5e75da,_0x30a1a0){var _0x541707=getUserApplications(_0x447675,_0x447675[_0x6a39('0x26')]);if(_0x447675[_0x6a39('0x26')]!=_0x447675[_0x6a39('0x16')]){_0x541707=_0x541707['concat'](getUserApplications(_0x447675,_0x447675['name']));}return _0x3bfd7e[_0x6a39('0x37')][_0x6a39('0x38')](_0x541707)[_0x6a39('0x25')](function(){if(_0x447675['chanspy']){return getChanSpyPromise(_0x3bfd7e,_0x447675);}})[_0x6a39('0x25')](function(_0x43fc38){if(_0x43fc38&&_0x43fc38['length']){return _0x3bfd7e[_0x6a39('0x37')][_0x6a39('0x38')](_0x43fc38);}})[_0x6a39('0x25')](function(){_0x30a1a0();})[_0x6a39('0x28')](function(_0x405bb8){_0x30a1a0(_0x405bb8);});},'afterUpdate':function(_0x3c0514,_0x10d809,_0x42f253){return BPromise[_0x6a39('0x2e')]()[_0x6a39('0x25')](function(){if(_0x3c0514[_0x6a39('0x35')]('chanspy')||_0x3c0514[_0x6a39('0x35')]('context')){return _0x3bfd7e[_0x6a39('0x37')][_0x6a39('0x39')]({'where':{'UserId':_0x3c0514['id'],'type':_0x6a39('0x8'),'ChanSpyId':{'$ne':null}}})[_0x6a39('0x25')](function(){if(_0x3c0514['chanspy']){return getChanSpyPromise(_0x3bfd7e,_0x3c0514)[_0x6a39('0x25')](function(_0x4d56be){if(_0x4d56be&&_0x4d56be['length']){return _0x3bfd7e['VoiceExtension'][_0x6a39('0x38')](_0x4d56be);}});}});}})[_0x6a39('0x25')](function(){if(_0x3c0514[_0x6a39('0x35')](_0x6a39('0x1c'))||_0x3c0514[_0x6a39('0x35')]('context')){return _0x3bfd7e['VoiceExtension'][_0x6a39('0x39')]({'where':{'UserId':_0x3c0514['id'],'type':_0x6a39('0x8'),'ChanSpyId':null}})[_0x6a39('0x25')](function(){var _0x50dbc9=getUserApplications(_0x3c0514,_0x3c0514['internal']);if(_0x3c0514[_0x6a39('0x26')]!=_0x3c0514[_0x6a39('0x16')]){_0x50dbc9=_0x50dbc9['concat'](getUserApplications(_0x3c0514,_0x3c0514[_0x6a39('0x16')]));}return _0x3bfd7e[_0x6a39('0x37')][_0x6a39('0x38')](_0x50dbc9);});}})[_0x6a39('0x25')](function(){_0x42f253();})[_0x6a39('0x28')](function(_0x3ec595){_0x42f253(_0x3ec595);});},'afterDestroy':function(_0x55809b,_0x253afd){return _0x3bfd7e[_0x6a39('0x37')][_0x6a39('0x39')]({'where':{'UserId':_0x55809b['id'],'type':_0x6a39('0x8')}});}},'instanceMethods':{'authenticate':function(_0x4e3d20,_0x289fd8){if(!_0x289fd8){return this['password']===this['encryptPassword'](_0x4e3d20);}var _0x52b452=this;this[_0x6a39('0x3a')](_0x4e3d20,function(_0x38b26e,_0xe0d241){if(_0x38b26e){_0x289fd8(_0x38b26e);}if(_0x52b452[_0x6a39('0x36')]===_0xe0d241){_0x289fd8(null,!![]);}else{_0x289fd8(null,![]);}});},'makeSalt':function(_0x4ea7b3,_0x55e60a){var _0x58d4fa=0x10;if(typeof arguments[0x0]===_0x6a39('0x3b')){_0x55e60a=arguments[0x0];_0x4ea7b3=_0x58d4fa;}else if(typeof arguments[0x1]===_0x6a39('0x3b')){_0x55e60a=arguments[0x1];}else{throw new Error(_0x6a39('0x3c'));}if(!_0x4ea7b3){_0x4ea7b3=_0x58d4fa;}return crypto['randomBytes'](_0x4ea7b3,function(_0x486ea8,_0x41ff57){if(_0x486ea8){_0x55e60a(_0x486ea8);}return _0x55e60a(null,_0x41ff57['toString']('base64'));});},'encryptPassword':function(_0x140c70,_0x57da13){if(!_0x140c70||!this[_0x6a39('0x3d')]){return _0x57da13?_0x57da13(null):null;}var _0x289cb0=0x2710;var _0x5c2f11=0x40;var _0x3b02a3=new Buffer(this[_0x6a39('0x3d')],_0x6a39('0x3e'));if(!_0x57da13){return crypto[_0x6a39('0x3f')](_0x140c70,_0x3b02a3,_0x289cb0,_0x5c2f11,'sha1')[_0x6a39('0x40')](_0x6a39('0x3e'));}return crypto[_0x6a39('0x41')](_0x140c70,_0x3b02a3,_0x289cb0,_0x5c2f11,'sha1',function(_0x98198f,_0x19572c){if(_0x98198f){_0x57da13(_0x98198f);}return _0x57da13(null,_0x19572c[_0x6a39('0x40')](_0x6a39('0x3e')));});},'updatePassword':function(_0x3f3f31){if(!this[_0x6a39('0x36')]){return _0x3f3f31(null);}if(!validatePresenceOf(this[_0x6a39('0x36')])&&authTypes[_0x6a39('0x42')](this[_0x6a39('0x43')])===-0x1){_0x3f3f31(new Error('Invalid\x20password'));}var _0x45c536=this;this['makeSalt'](function(_0xbf8789,_0x4e9715){if(_0xbf8789){return _0x3f3f31(_0xbf8789);}_0x45c536['salt']=_0x4e9715;_0x45c536[_0x6a39('0x3a')](_0x45c536['password'],function(_0x1cca68,_0x690bb9){if(_0x1cca68){_0x3f3f31(_0x1cca68);}_0x45c536[_0x6a39('0x36')]=_0x690bb9;_0x3f3f31(null);});});},'updateMd5Password':function(){this[_0x6a39('0x44')]=md5(this['name']+':asterisk:'+this[_0x6a39('0x36')]);return this[_0x6a39('0x44')];}}});};