06e1490f3104785e7fe9e877abf8969ca5197a7d
[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 _0x2173=['Set','CDR(type)=%s','merge','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','SIP/%s,,tTxX','priority','defaults','VoiceChanSpy','findAll','internal','concat','exports','models','define','utf8','utf8_bin','updatePassword','changed','password','bulkCreate','chanspy','VoiceExtension','catch','resolve','destroy','then','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','crypto','util','lodash','google','length','context','from-sip','system','format','push'];(function(_0x5a9d2b,_0x64b8b8){var _0x55a4a5=function(_0x589406){while(--_0x589406){_0x5a9d2b['push'](_0x5a9d2b['shift']());}};_0x55a4a5(++_0x64b8b8);}(_0x2173,0x188));var _0x3217=function(_0x25dfa0,_0x2121df){_0x25dfa0=_0x25dfa0-0x0;var _0x4f598b=_0x2173[_0x25dfa0];return _0x4f598b;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x3217('0x0'));var util=require(_0x3217('0x1'));var md5=require('md5');var _=require(_0x3217('0x2'));var attributes=require('./user.attributes');var authTypes=[_0x3217('0x3')];var validatePresenceOf=function(_0xdce398){return _0xdce398&&_0xdce398[_0x3217('0x4')];};var getChanSpyApplications=function(_0x3c7632,_0x23eb6a,_0x21a526){var _0x6020fe={'context':_0x3c7632[_0x3217('0x5')]||_0x3217('0x6'),'type':_0x3217('0x7'),'isApp':![],'UserId':_0x3c7632['id']};var _0x4691ae=[];for(var _0x424228=0x0,_0x3296c=0x1;_0x424228<_0x21a526['length'];_0x424228++,_0x3296c=0x1){var _0x18fdb8={'exten':util[_0x3217('0x8')]('%s%s',_0x21a526[_0x424228]['prefix'],_0x23eb6a),'ChanSpyId':_0x21a526[_0x424228]['id']};_0x4691ae[_0x3217('0x9')](_['merge']({'app':_0x3217('0xa'),'appdata':util[_0x3217('0x8')](_0x3217('0xb'),'chanspy'),'priority':_0x3296c++},_0x6020fe,_0x18fdb8));if(_0x21a526[_0x424228]['record']){_0x4691ae['push'](_[_0x3217('0xc')]({'app':_0x3217('0xd'),'appdata':util[_0x3217('0x8')](_0x3217('0xe'),_0x21a526[_0x424228][_0x3217('0xf')]),'priority':_0x3296c++},_0x6020fe,_0x18fdb8));}if(_0x21a526[_0x424228][_0x3217('0x10')]){_0x4691ae[_0x3217('0x9')](_[_0x3217('0xc')]({'app':_0x3217('0x11'),'appdata':_0x21a526[_0x424228]['password'],'priority':_0x3296c++},_0x6020fe,_0x18fdb8));}_0x4691ae[_0x3217('0x9')](_['merge']({'app':_0x3217('0x12'),'appdata':util[_0x3217('0x8')](_0x3217('0x13'),_0x3c7632[_0x3217('0x14')],_0x21a526[_0x424228][_0x3217('0x15')]?_0x21a526[_0x424228][_0x3217('0x15')][_0x3217('0x16')](''):''),'priority':_0x3296c++},_0x6020fe,_0x18fdb8));if(_0x21a526[_0x424228]['record']){_0x4691ae[_0x3217('0x9')](_[_0x3217('0xc')]({'app':_0x3217('0x17'),'priority':_0x3296c++},_0x6020fe,_0x18fdb8));}}return _0x4691ae;};var getUserApplications=function(_0x16773f,_0x30e84c){var _0x4add8c=['wav','WAV','gsm'];var _0x317fe5={'context':_0x16773f[_0x3217('0x5')]||_0x3217('0x6'),'exten':_0x30e84c,'type':_0x3217('0x7'),'isApp':![],'UserId':_0x16773f['id']};var _0x1663f7=[{'app':_0x3217('0xa'),'appdata':_0x3217('0x18')}];if(_0x16773f['extensionMonitor']&&_['includes'](_0x4add8c,_0x16773f[_0x3217('0x19')])){_0x1663f7[_0x3217('0x9')]({'app':_0x3217('0xa'),'appdata':_0x3217('0x1a')});_0x1663f7[_0x3217('0x9')]({'app':_0x3217('0xa'),'appdata':util[_0x3217('0x8')](_0x3217('0x1b'),_0x16773f[_0x3217('0x19')])});_0x1663f7['push']({'app':'Dial','appdata':util['format'](_0x3217('0x1c'),_0x16773f[_0x3217('0x14')])});}else{_0x1663f7['push']({'app':_0x3217('0x1d'),'appdata':util['format'](_0x3217('0x1e'),_0x16773f[_0x3217('0x14')])});}_0x1663f7[_0x3217('0x9')]({'app':'Hangup'});for(var _0x26465e=0x0;_0x26465e<_0x1663f7[_0x3217('0x4')];_0x26465e++){_0x1663f7[_0x26465e][_0x3217('0x1f')]=_0x26465e+0x1;_0x1663f7[_0x26465e]=_[_0x3217('0x20')](_0x1663f7[_0x26465e],_0x317fe5);}return _0x1663f7;};var getChanSpyPromise=function(_0x43f9fe,_0x3b4592){return new BPromise(function(_0x20e81d,_0x47bc6b){return _0x43f9fe[_0x3217('0x21')][_0x3217('0x22')]()['then'](function(_0x4a1652){if(_0x4a1652){var _0x39b073=getChanSpyApplications(_0x3b4592,_0x3b4592[_0x3217('0x23')],_0x4a1652);if(_0x3b4592['internal']!=_0x3b4592[_0x3217('0x14')]){_0x39b073=_0x39b073[_0x3217('0x24')](getChanSpyApplications(_0x3b4592,_0x3b4592[_0x3217('0x14')],_0x4a1652));}return _0x20e81d(_0x39b073);}return _0x20e81d([]);})['catch'](function(_0x36fe78){_0x47bc6b(_0x36fe78);});});};module[_0x3217('0x25')]=function(_0x20be7d,_0x2c0273){var _0x3c7e08=_0x20be7d[_0x3217('0x26')];return _0x20be7d[_0x3217('0x27')]('User',attributes,{'tableName':'users','charset':_0x3217('0x28'),'collate':_0x3217('0x29'),'hooks':{'beforeCreate':function(_0x493b83,_0x35336f,_0x1ed8b3){_0x493b83['updateMd5Password']();_0x493b83[_0x3217('0x2a')](_0x1ed8b3);},'beforeUpdate':function(_0x1e463a,_0x14f65d,_0x3a2cc7){if(_0x1e463a[_0x3217('0x2b')](_0x3217('0x2c'))){_0x1e463a['updateMd5Password']();return _0x1e463a['updatePassword'](_0x3a2cc7);}_0x3a2cc7();},'afterCreate':function(_0x437098,_0xa5546e,_0x461ec9){var _0x240d13=getUserApplications(_0x437098,_0x437098[_0x3217('0x23')]);if(_0x437098['internal']!=_0x437098['name']){_0x240d13=_0x240d13[_0x3217('0x24')](getUserApplications(_0x437098,_0x437098[_0x3217('0x14')]));}return _0x3c7e08['VoiceExtension'][_0x3217('0x2d')](_0x240d13)['then'](function(){if(_0x437098[_0x3217('0x2e')]){return getChanSpyPromise(_0x3c7e08,_0x437098);}})['then'](function(_0x428191){if(_0x428191&&_0x428191['length']){return _0x3c7e08[_0x3217('0x2f')][_0x3217('0x2d')](_0x428191);}})['then'](function(){_0x461ec9();})[_0x3217('0x30')](function(_0x5a1b31){_0x461ec9(_0x5a1b31);});},'afterUpdate':function(_0x284c2e,_0xf4d3fe,_0x509d07){return BPromise[_0x3217('0x31')]()['then'](function(){if(_0x284c2e[_0x3217('0x2b')](_0x3217('0x2e'))||_0x284c2e['changed'](_0x3217('0x5'))){return _0x3c7e08[_0x3217('0x2f')][_0x3217('0x32')]({'where':{'UserId':_0x284c2e['id'],'type':_0x3217('0x7'),'ChanSpyId':{'$ne':null}}})[_0x3217('0x33')](function(){if(_0x284c2e[_0x3217('0x2e')]){return getChanSpyPromise(_0x3c7e08,_0x284c2e)[_0x3217('0x33')](function(_0x4e2516){if(_0x4e2516&&_0x4e2516['length']){return _0x3c7e08['VoiceExtension']['bulkCreate'](_0x4e2516);}});}});}})[_0x3217('0x33')](function(){if(_0x284c2e[_0x3217('0x2b')](_0x3217('0x19'))||_0x284c2e[_0x3217('0x2b')](_0x3217('0x5'))){return _0x3c7e08[_0x3217('0x2f')]['destroy']({'where':{'UserId':_0x284c2e['id'],'type':_0x3217('0x7'),'ChanSpyId':null}})[_0x3217('0x33')](function(){var _0x4775be=getUserApplications(_0x284c2e,_0x284c2e[_0x3217('0x23')]);if(_0x284c2e[_0x3217('0x23')]!=_0x284c2e['name']){_0x4775be=_0x4775be['concat'](getUserApplications(_0x284c2e,_0x284c2e[_0x3217('0x14')]));}return _0x3c7e08['VoiceExtension'][_0x3217('0x2d')](_0x4775be);});}})[_0x3217('0x33')](function(){_0x509d07();})[_0x3217('0x30')](function(_0x18603f){_0x509d07(_0x18603f);});},'afterDestroy':function(_0x11608f,_0x1c319f){return _0x3c7e08['VoiceExtension'][_0x3217('0x32')]({'where':{'UserId':_0x11608f['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x203591,_0x32257e){if(!_0x32257e){return this[_0x3217('0x2c')]===this[_0x3217('0x34')](_0x203591);}var _0xddcefd=this;this[_0x3217('0x34')](_0x203591,function(_0x1d3fe1,_0x1aaef2){if(_0x1d3fe1){_0x32257e(_0x1d3fe1);}if(_0xddcefd['password']===_0x1aaef2){_0x32257e(null,!![]);}else{_0x32257e(null,![]);}});},'makeSalt':function(_0x19b586,_0x4d87a6){var _0x4cbaa6=0x10;if(typeof arguments[0x0]===_0x3217('0x35')){_0x4d87a6=arguments[0x0];_0x19b586=_0x4cbaa6;}else if(typeof arguments[0x1]===_0x3217('0x35')){_0x4d87a6=arguments[0x1];}else{throw new Error(_0x3217('0x36'));}if(!_0x19b586){_0x19b586=_0x4cbaa6;}return crypto[_0x3217('0x37')](_0x19b586,function(_0x4ad867,_0x2492bf){if(_0x4ad867){_0x4d87a6(_0x4ad867);}return _0x4d87a6(null,_0x2492bf[_0x3217('0x38')](_0x3217('0x39')));});},'encryptPassword':function(_0x1243e2,_0x3ab8f8){if(!_0x1243e2||!this[_0x3217('0x3a')]){return _0x3ab8f8?_0x3ab8f8(null):null;}var _0x48b082=0x2710;var _0xa64d56=0x40;var _0x12ad07=new Buffer(this['salt'],_0x3217('0x39'));if(!_0x3ab8f8){return crypto[_0x3217('0x3b')](_0x1243e2,_0x12ad07,_0x48b082,_0xa64d56,_0x3217('0x3c'))[_0x3217('0x38')](_0x3217('0x39'));}return crypto['pbkdf2'](_0x1243e2,_0x12ad07,_0x48b082,_0xa64d56,_0x3217('0x3c'),function(_0x59f233,_0x51b314){if(_0x59f233){_0x3ab8f8(_0x59f233);}return _0x3ab8f8(null,_0x51b314['toString'](_0x3217('0x39')));});},'updatePassword':function(_0x15e835){if(!this[_0x3217('0x2c')]){return _0x15e835(null);}if(!validatePresenceOf(this[_0x3217('0x2c')])&&authTypes[_0x3217('0x3d')](this[_0x3217('0x3e')])===-0x1){_0x15e835(new Error(_0x3217('0x3f')));}var _0x22fb73=this;this[_0x3217('0x40')](function(_0x702be4,_0x55ed2a){if(_0x702be4){return _0x15e835(_0x702be4);}_0x22fb73[_0x3217('0x3a')]=_0x55ed2a;_0x22fb73[_0x3217('0x34')](_0x22fb73[_0x3217('0x2c')],function(_0x316b2b,_0x540c02){if(_0x316b2b){_0x15e835(_0x316b2b);}_0x22fb73[_0x3217('0x2c')]=_0x540c02;_0x15e835(null);});});},'updateMd5Password':function(){this[_0x3217('0x41')]=md5(this[_0x3217('0x14')]+_0x3217('0x42')+this[_0x3217('0x2c')]);return this[_0x3217('0x41')];}}});};