5f4ebdddf90afceebfcf17e88cb762a710a6d7f2
[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 _0xd305=['toString','base64','salt','pbkdf2Sync','sha1','indexOf','Invalid\x20password','makeSalt',':asterisk:','md5secret','crypto','util','./user.attributes','google','context','system','%s%s','Set','format','CDR(type)=%s','chanspy','record','push','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','merge','Authenticate','password','ChanSpy','SIP/%s,%s','options','join','StopMixMonitor','wav','WAV','gsm','from-sip','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','SIP/%s,,tTxX','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','exports','define','User','utf8_bin','changed','updateMd5Password','updatePassword','VoiceExtension','bulkCreate','catch','destroy','length','encryptPassword','function','randomBytes'];(function(_0x3cf070,_0x4c430e){var _0x3d835c=function(_0x45116d){while(--_0x45116d){_0x3cf070['push'](_0x3cf070['shift']());}};_0x3d835c(++_0x4c430e);}(_0xd305,0x163));var _0x5d30=function(_0x11447e,_0x33dab2){_0x11447e=_0x11447e-0x0;var _0x45a214=_0xd305[_0x11447e];return _0x45a214;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x5d30('0x0'));var util=require(_0x5d30('0x1'));var md5=require('md5');var _=require('lodash');var attributes=require(_0x5d30('0x2'));var authTypes=[_0x5d30('0x3')];var validatePresenceOf=function(_0x44cd13){return _0x44cd13&&_0x44cd13['length'];};var getChanSpyApplications=function(_0x6f6dfb,_0x572c28,_0x119e0f){var _0x1a64c3={'context':_0x6f6dfb[_0x5d30('0x4')]||'from-sip','type':_0x5d30('0x5'),'isApp':![],'UserId':_0x6f6dfb['id']};var _0x4ada1b=[];for(var _0x552da5=0x0,_0x160411=0x1;_0x552da5<_0x119e0f['length'];_0x552da5++,_0x160411=0x1){var _0x1df506={'exten':util['format'](_0x5d30('0x6'),_0x119e0f[_0x552da5]['prefix'],_0x572c28),'ChanSpyId':_0x119e0f[_0x552da5]['id']};_0x4ada1b['push'](_['merge']({'app':_0x5d30('0x7'),'appdata':util[_0x5d30('0x8')](_0x5d30('0x9'),_0x5d30('0xa')),'priority':_0x160411++},_0x1a64c3,_0x1df506));if(_0x119e0f[_0x552da5][_0x5d30('0xb')]){_0x4ada1b[_0x5d30('0xc')](_['merge']({'app':_0x5d30('0xd'),'appdata':util['format'](_0x5d30('0xe'),_0x119e0f[_0x552da5][_0x5d30('0xf')]),'priority':_0x160411++},_0x1a64c3,_0x1df506));}if(_0x119e0f[_0x552da5][_0x5d30('0x10')]){_0x4ada1b[_0x5d30('0xc')](_[_0x5d30('0x11')]({'app':_0x5d30('0x12'),'appdata':_0x119e0f[_0x552da5][_0x5d30('0x13')],'priority':_0x160411++},_0x1a64c3,_0x1df506));}_0x4ada1b['push'](_[_0x5d30('0x11')]({'app':_0x5d30('0x14'),'appdata':util[_0x5d30('0x8')](_0x5d30('0x15'),_0x6f6dfb['name'],_0x119e0f[_0x552da5][_0x5d30('0x16')]?_0x119e0f[_0x552da5]['options'][_0x5d30('0x17')](''):''),'priority':_0x160411++},_0x1a64c3,_0x1df506));if(_0x119e0f[_0x552da5][_0x5d30('0xb')]){_0x4ada1b['push'](_[_0x5d30('0x11')]({'app':_0x5d30('0x18'),'priority':_0x160411++},_0x1a64c3,_0x1df506));}}return _0x4ada1b;};var getUserApplications=function(_0x2cc822,_0x102f1a){var _0x434603=[_0x5d30('0x19'),_0x5d30('0x1a'),_0x5d30('0x1b')];var _0x1af609={'context':_0x2cc822['context']||_0x5d30('0x1c'),'exten':_0x102f1a,'type':_0x5d30('0x5'),'isApp':![],'UserId':_0x2cc822['id']};var _0x3682a6=[{'app':_0x5d30('0x7'),'appdata':_0x5d30('0x1d')}];if(_0x2cc822[_0x5d30('0x1e')]&&_['includes'](_0x434603,_0x2cc822[_0x5d30('0x1e')])){_0x3682a6['push']({'app':_0x5d30('0x7'),'appdata':_0x5d30('0x1f')});_0x3682a6[_0x5d30('0xc')]({'app':'Set','appdata':util[_0x5d30('0x8')](_0x5d30('0x20'),_0x2cc822['extensionMonitor'])});_0x3682a6[_0x5d30('0xc')]({'app':_0x5d30('0x21'),'appdata':util[_0x5d30('0x8')](_0x5d30('0x22'),_0x2cc822[_0x5d30('0x23')])});}else{_0x3682a6[_0x5d30('0xc')]({'app':_0x5d30('0x21'),'appdata':util['format'](_0x5d30('0x24'),_0x2cc822['name'])});}_0x3682a6[_0x5d30('0xc')]({'app':'Hangup'});for(var _0xce367a=0x0;_0xce367a<_0x3682a6['length'];_0xce367a++){_0x3682a6[_0xce367a][_0x5d30('0x25')]=_0xce367a+0x1;_0x3682a6[_0xce367a]=_[_0x5d30('0x26')](_0x3682a6[_0xce367a],_0x1af609);}return _0x3682a6;};var getChanSpyPromise=function(_0x57b235,_0xe6038f){return new BPromise(function(_0x3152e2,_0x8b60af){return _0x57b235[_0x5d30('0x27')][_0x5d30('0x28')]()[_0x5d30('0x29')](function(_0x4e85a8){if(_0x4e85a8){var _0x36aaca=getChanSpyApplications(_0xe6038f,_0xe6038f[_0x5d30('0x2a')],_0x4e85a8);if(_0xe6038f[_0x5d30('0x2a')]!=_0xe6038f[_0x5d30('0x23')]){_0x36aaca=_0x36aaca[_0x5d30('0x2b')](getChanSpyApplications(_0xe6038f,_0xe6038f[_0x5d30('0x23')],_0x4e85a8));}return _0x3152e2(_0x36aaca);}return _0x3152e2([]);})['catch'](function(_0x45f670){_0x8b60af(_0x45f670);});});};module[_0x5d30('0x2c')]=function(_0x5aa314,_0x1eb399){var _0x3ed7bd=_0x5aa314['models'];return _0x5aa314[_0x5d30('0x2d')](_0x5d30('0x2e'),attributes,{'tableName':'users','charset':'utf8','collate':_0x5d30('0x2f'),'hooks':{'beforeCreate':function(_0x394070,_0x19805a,_0x224b14){_0x394070['updateMd5Password']();_0x394070['updatePassword'](_0x224b14);},'beforeUpdate':function(_0xf26e1b,_0x594771,_0x5d11c7){if(_0xf26e1b[_0x5d30('0x30')](_0x5d30('0x13'))){_0xf26e1b[_0x5d30('0x31')]();return _0xf26e1b[_0x5d30('0x32')](_0x5d11c7);}_0x5d11c7();},'afterCreate':function(_0x360c51,_0x4561d3,_0x258787){var _0x4c52b6=getUserApplications(_0x360c51,_0x360c51[_0x5d30('0x2a')]);if(_0x360c51['internal']!=_0x360c51[_0x5d30('0x23')]){_0x4c52b6=_0x4c52b6[_0x5d30('0x2b')](getUserApplications(_0x360c51,_0x360c51[_0x5d30('0x23')]));}return _0x3ed7bd[_0x5d30('0x33')]['bulkCreate'](_0x4c52b6)[_0x5d30('0x29')](function(){if(_0x360c51['chanspy']){return getChanSpyPromise(_0x3ed7bd,_0x360c51);}})[_0x5d30('0x29')](function(_0x5dfae2){if(_0x5dfae2&&_0x5dfae2['length']){return _0x3ed7bd[_0x5d30('0x33')][_0x5d30('0x34')](_0x5dfae2);}})[_0x5d30('0x29')](function(){_0x258787();})[_0x5d30('0x35')](function(_0x2a5b78){_0x258787(_0x2a5b78);});},'afterUpdate':function(_0x40f195,_0x1a3237,_0x218922){return BPromise['resolve']()[_0x5d30('0x29')](function(){if(_0x40f195[_0x5d30('0x30')]('chanspy')||_0x40f195[_0x5d30('0x30')]('context')){return _0x3ed7bd['VoiceExtension'][_0x5d30('0x36')]({'where':{'UserId':_0x40f195['id'],'type':_0x5d30('0x5'),'ChanSpyId':{'$ne':null}}})[_0x5d30('0x29')](function(){if(_0x40f195[_0x5d30('0xa')]){return getChanSpyPromise(_0x3ed7bd,_0x40f195)[_0x5d30('0x29')](function(_0x18514b){if(_0x18514b&&_0x18514b[_0x5d30('0x37')]){return _0x3ed7bd[_0x5d30('0x33')]['bulkCreate'](_0x18514b);}});}});}})[_0x5d30('0x29')](function(){if(_0x40f195[_0x5d30('0x30')](_0x5d30('0x1e'))||_0x40f195[_0x5d30('0x30')]('context')){return _0x3ed7bd[_0x5d30('0x33')]['destroy']({'where':{'UserId':_0x40f195['id'],'type':_0x5d30('0x5'),'ChanSpyId':null}})[_0x5d30('0x29')](function(){var _0x423399=getUserApplications(_0x40f195,_0x40f195[_0x5d30('0x2a')]);if(_0x40f195[_0x5d30('0x2a')]!=_0x40f195['name']){_0x423399=_0x423399[_0x5d30('0x2b')](getUserApplications(_0x40f195,_0x40f195['name']));}return _0x3ed7bd[_0x5d30('0x33')][_0x5d30('0x34')](_0x423399);});}})[_0x5d30('0x29')](function(){_0x218922();})['catch'](function(_0xb9095c){_0x218922(_0xb9095c);});},'afterDestroy':function(_0x2086d1,_0x2eac1f){return _0x3ed7bd['VoiceExtension'][_0x5d30('0x36')]({'where':{'UserId':_0x2086d1['id'],'type':_0x5d30('0x5')}});}},'instanceMethods':{'authenticate':function(_0x5eba50,_0x5ae484){if(!_0x5ae484){return this[_0x5d30('0x13')]===this[_0x5d30('0x38')](_0x5eba50);}var _0x305e73=this;this[_0x5d30('0x38')](_0x5eba50,function(_0x46a97d,_0x2806e3){if(_0x46a97d){_0x5ae484(_0x46a97d);}if(_0x305e73[_0x5d30('0x13')]===_0x2806e3){_0x5ae484(null,!![]);}else{_0x5ae484(null,![]);}});},'makeSalt':function(_0x495ad8,_0x519c00){var _0x2087ed=0x10;if(typeof arguments[0x0]===_0x5d30('0x39')){_0x519c00=arguments[0x0];_0x495ad8=_0x2087ed;}else if(typeof arguments[0x1]===_0x5d30('0x39')){_0x519c00=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x495ad8){_0x495ad8=_0x2087ed;}return crypto[_0x5d30('0x3a')](_0x495ad8,function(_0x2d9336,_0x4f03f0){if(_0x2d9336){_0x519c00(_0x2d9336);}return _0x519c00(null,_0x4f03f0[_0x5d30('0x3b')](_0x5d30('0x3c')));});},'encryptPassword':function(_0x2b431c,_0x98543d){if(!_0x2b431c||!this[_0x5d30('0x3d')]){return _0x98543d?_0x98543d(null):null;}var _0x590501=0x2710;var _0x3347e9=0x40;var _0x1b8462=new Buffer(this[_0x5d30('0x3d')],_0x5d30('0x3c'));if(!_0x98543d){return crypto[_0x5d30('0x3e')](_0x2b431c,_0x1b8462,_0x590501,_0x3347e9,_0x5d30('0x3f'))[_0x5d30('0x3b')](_0x5d30('0x3c'));}return crypto['pbkdf2'](_0x2b431c,_0x1b8462,_0x590501,_0x3347e9,_0x5d30('0x3f'),function(_0x551279,_0x2b187e){if(_0x551279){_0x98543d(_0x551279);}return _0x98543d(null,_0x2b187e[_0x5d30('0x3b')](_0x5d30('0x3c')));});},'updatePassword':function(_0x421818){if(!this[_0x5d30('0x13')]){return _0x421818(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0x5d30('0x40')](this['provider'])===-0x1){_0x421818(new Error(_0x5d30('0x41')));}var _0x569331=this;this[_0x5d30('0x42')](function(_0x37d912,_0x367764){if(_0x37d912){return _0x421818(_0x37d912);}_0x569331[_0x5d30('0x3d')]=_0x367764;_0x569331['encryptPassword'](_0x569331['password'],function(_0x555efd,_0x1abdf4){if(_0x555efd){_0x421818(_0x555efd);}_0x569331[_0x5d30('0x13')]=_0x1abdf4;_0x421818(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x5d30('0x23')]+_0x5d30('0x43')+this['password']);return this[_0x5d30('0x44')];}}});};