Built motion from commit (unavailable).|2.5.17
[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 _0x6f49=['join','StopMixMonitor','wav','gsm','context','CDR(type)=internal','extensionMonitor','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','VoiceChanSpy','findAll','then','internal','concat','catch','models','utf8','utf8_bin','updateMd5Password','updatePassword','changed','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','sha1','pbkdf2','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','util','lodash','./user.attributes','google','length','from-sip','system','format','merge','Set','chanspy','record','push','MixMonitor','Authenticate','password','ChanSpy','name','options'];(function(_0x21d82d,_0x45945c){var _0x83e2f0=function(_0x2a2cc7){while(--_0x2a2cc7){_0x21d82d['push'](_0x21d82d['shift']());}};_0x83e2f0(++_0x45945c);}(_0x6f49,0x9d));var _0x96f4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6f49[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0x96f4('0x0'));var crypto=require('crypto');var util=require(_0x96f4('0x1'));var md5=require('md5');var _=require(_0x96f4('0x2'));var attributes=require(_0x96f4('0x3'));var authTypes=[_0x96f4('0x4')];var validatePresenceOf=function(_0x2b03e6){return _0x2b03e6&&_0x2b03e6[_0x96f4('0x5')];};var getChanSpyApplications=function(_0x55e6b8,_0x414a13,_0x8ecc14){var _0x2f5eeb={'context':_0x55e6b8['context']||_0x96f4('0x6'),'type':_0x96f4('0x7'),'isApp':![],'UserId':_0x55e6b8['id']};var _0x3dd14c=[];for(var _0x4df197=0x0,_0x336616=0x1;_0x4df197<_0x8ecc14['length'];_0x4df197++,_0x336616=0x1){var _0x5e16d6={'exten':util[_0x96f4('0x8')]('%s%s',_0x8ecc14[_0x4df197]['prefix'],_0x414a13),'ChanSpyId':_0x8ecc14[_0x4df197]['id']};_0x3dd14c['push'](_[_0x96f4('0x9')]({'app':_0x96f4('0xa'),'appdata':util[_0x96f4('0x8')]('CDR(type)=%s',_0x96f4('0xb')),'priority':_0x336616++},_0x2f5eeb,_0x5e16d6));if(_0x8ecc14[_0x4df197][_0x96f4('0xc')]){_0x3dd14c[_0x96f4('0xd')](_[_0x96f4('0x9')]({'app':_0x96f4('0xe'),'appdata':util['format']('${UNIQUEID}.%s,a',_0x8ecc14[_0x4df197]['recordingFormat']),'priority':_0x336616++},_0x2f5eeb,_0x5e16d6));}if(_0x8ecc14[_0x4df197]['auth']){_0x3dd14c[_0x96f4('0xd')](_[_0x96f4('0x9')]({'app':_0x96f4('0xf'),'appdata':_0x8ecc14[_0x4df197][_0x96f4('0x10')],'priority':_0x336616++},_0x2f5eeb,_0x5e16d6));}_0x3dd14c[_0x96f4('0xd')](_[_0x96f4('0x9')]({'app':_0x96f4('0x11'),'appdata':util[_0x96f4('0x8')]('SIP/%s,%s',_0x55e6b8[_0x96f4('0x12')],_0x8ecc14[_0x4df197][_0x96f4('0x13')]?_0x8ecc14[_0x4df197]['options'][_0x96f4('0x14')](''):''),'priority':_0x336616++},_0x2f5eeb,_0x5e16d6));if(_0x8ecc14[_0x4df197][_0x96f4('0xc')]){_0x3dd14c[_0x96f4('0xd')](_[_0x96f4('0x9')]({'app':_0x96f4('0x15'),'priority':_0x336616++},_0x2f5eeb,_0x5e16d6));}}return _0x3dd14c;};var getUserApplications=function(_0x37aade,_0x3c0bfb){var _0x3a234a=[_0x96f4('0x16'),'WAV',_0x96f4('0x17')];var _0x33d5e7={'context':_0x37aade[_0x96f4('0x18')]||'from-sip','exten':_0x3c0bfb,'type':_0x96f4('0x7'),'isApp':![],'UserId':_0x37aade['id']};var _0xa3390c=[{'app':_0x96f4('0xa'),'appdata':_0x96f4('0x19')}];if(_0x37aade[_0x96f4('0x1a')]&&_['includes'](_0x3a234a,_0x37aade['extensionMonitor'])){_0xa3390c[_0x96f4('0xd')]({'app':_0x96f4('0xa'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0xa3390c[_0x96f4('0xd')]({'app':'Set','appdata':util[_0x96f4('0x8')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x37aade['extensionMonitor'])});_0xa3390c[_0x96f4('0xd')]({'app':_0x96f4('0x1b'),'appdata':util[_0x96f4('0x8')](_0x96f4('0x1c'),_0x37aade['name'])});}else{_0xa3390c[_0x96f4('0xd')]({'app':'Dial','appdata':util['format'](_0x96f4('0x1d'),_0x37aade[_0x96f4('0x12')])});}_0xa3390c[_0x96f4('0xd')]({'app':_0x96f4('0x1e')});for(var _0x3ceb56=0x0;_0x3ceb56<_0xa3390c[_0x96f4('0x5')];_0x3ceb56++){_0xa3390c[_0x3ceb56]['priority']=_0x3ceb56+0x1;_0xa3390c[_0x3ceb56]=_['defaults'](_0xa3390c[_0x3ceb56],_0x33d5e7);}return _0xa3390c;};var getChanSpyPromise=function(_0x24b764,_0x5e1b52){return new BPromise(function(_0x3b1a8f,_0x5d104a){return _0x24b764[_0x96f4('0x1f')][_0x96f4('0x20')]()[_0x96f4('0x21')](function(_0x1133b2){if(_0x1133b2){var _0x4eeb20=getChanSpyApplications(_0x5e1b52,_0x5e1b52[_0x96f4('0x22')],_0x1133b2);if(_0x5e1b52[_0x96f4('0x22')]!=_0x5e1b52[_0x96f4('0x12')]){_0x4eeb20=_0x4eeb20[_0x96f4('0x23')](getChanSpyApplications(_0x5e1b52,_0x5e1b52[_0x96f4('0x12')],_0x1133b2));}return _0x3b1a8f(_0x4eeb20);}return _0x3b1a8f([]);})[_0x96f4('0x24')](function(_0x1e3ed5){_0x5d104a(_0x1e3ed5);});});};module['exports']=function(_0x2d4561,_0x5e7cc8){var _0x4ce6e7=_0x2d4561[_0x96f4('0x25')];return _0x2d4561['define']('User',attributes,{'tableName':'users','charset':_0x96f4('0x26'),'collate':_0x96f4('0x27'),'hooks':{'beforeCreate':function(_0x42b585,_0x13cff7,_0x3ecb77){_0x42b585[_0x96f4('0x28')]();_0x42b585[_0x96f4('0x29')](_0x3ecb77);},'beforeUpdate':function(_0x247100,_0x5acdd6,_0x15fb25){if(_0x247100[_0x96f4('0x2a')](_0x96f4('0x10'))){_0x247100[_0x96f4('0x28')]();return _0x247100[_0x96f4('0x29')](_0x15fb25);}_0x15fb25();},'afterCreate':function(_0x57cbf7,_0x479266,_0xf7b8a0){var _0x1911af=getUserApplications(_0x57cbf7,_0x57cbf7['internal']);if(_0x57cbf7[_0x96f4('0x22')]!=_0x57cbf7[_0x96f4('0x12')]){_0x1911af=_0x1911af[_0x96f4('0x23')](getUserApplications(_0x57cbf7,_0x57cbf7[_0x96f4('0x12')]));}return _0x4ce6e7[_0x96f4('0x2b')][_0x96f4('0x2c')](_0x1911af)['then'](function(){if(_0x57cbf7[_0x96f4('0xb')]){return getChanSpyPromise(_0x4ce6e7,_0x57cbf7);}})['then'](function(_0x55497a){if(_0x55497a&&_0x55497a['length']){return _0x4ce6e7[_0x96f4('0x2b')]['bulkCreate'](_0x55497a);}})['then'](function(){_0xf7b8a0();})[_0x96f4('0x24')](function(_0xa852fa){_0xf7b8a0(_0xa852fa);});},'afterUpdate':function(_0x37d269,_0x37536b,_0x1a0deb){return BPromise['resolve']()[_0x96f4('0x21')](function(){if(_0x37d269[_0x96f4('0x2a')](_0x96f4('0xb'))||_0x37d269[_0x96f4('0x2a')](_0x96f4('0x18'))){return _0x4ce6e7[_0x96f4('0x2b')][_0x96f4('0x2d')]({'where':{'UserId':_0x37d269['id'],'type':_0x96f4('0x7'),'ChanSpyId':{'$ne':null}}})[_0x96f4('0x21')](function(){if(_0x37d269[_0x96f4('0xb')]){return getChanSpyPromise(_0x4ce6e7,_0x37d269)['then'](function(_0x33d423){if(_0x33d423&&_0x33d423[_0x96f4('0x5')]){return _0x4ce6e7[_0x96f4('0x2b')]['bulkCreate'](_0x33d423);}});}});}})['then'](function(){if(_0x37d269[_0x96f4('0x2a')](_0x96f4('0x1a'))||_0x37d269[_0x96f4('0x2a')]('context')){return _0x4ce6e7['VoiceExtension']['destroy']({'where':{'UserId':_0x37d269['id'],'type':'system','ChanSpyId':null}})[_0x96f4('0x21')](function(){var _0x7e0548=getUserApplications(_0x37d269,_0x37d269[_0x96f4('0x22')]);if(_0x37d269[_0x96f4('0x22')]!=_0x37d269['name']){_0x7e0548=_0x7e0548[_0x96f4('0x23')](getUserApplications(_0x37d269,_0x37d269['name']));}return _0x4ce6e7['VoiceExtension'][_0x96f4('0x2c')](_0x7e0548);});}})[_0x96f4('0x21')](function(){_0x1a0deb();})[_0x96f4('0x24')](function(_0x77de06){_0x1a0deb(_0x77de06);});},'afterDestroy':function(_0x5567ed,_0x3199cf){return _0x4ce6e7['VoiceExtension']['destroy']({'where':{'UserId':_0x5567ed['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x2995cf,_0x55f4f3){if(!_0x55f4f3){return this[_0x96f4('0x10')]===this['encryptPassword'](_0x2995cf);}var _0x1e56ed=this;this[_0x96f4('0x2e')](_0x2995cf,function(_0xf1451b,_0x4b7441){if(_0xf1451b){_0x55f4f3(_0xf1451b);}if(_0x1e56ed[_0x96f4('0x10')]===_0x4b7441){_0x55f4f3(null,!![]);}else{_0x55f4f3(null,![]);}});},'makeSalt':function(_0x3c892c,_0x6ef827){var _0x58c850=0x10;if(typeof arguments[0x0]===_0x96f4('0x2f')){_0x6ef827=arguments[0x0];_0x3c892c=_0x58c850;}else if(typeof arguments[0x1]===_0x96f4('0x2f')){_0x6ef827=arguments[0x1];}else{throw new Error(_0x96f4('0x30'));}if(!_0x3c892c){_0x3c892c=_0x58c850;}return crypto[_0x96f4('0x31')](_0x3c892c,function(_0x51e928,_0xd4e828){if(_0x51e928){_0x6ef827(_0x51e928);}return _0x6ef827(null,_0xd4e828[_0x96f4('0x32')](_0x96f4('0x33')));});},'encryptPassword':function(_0x51008b,_0x397d77){if(!_0x51008b||!this['salt']){return _0x397d77?_0x397d77(null):null;}var _0x4e55b6=0x2710;var _0x320be2=0x40;var _0x469ed7=new Buffer(this[_0x96f4('0x34')],_0x96f4('0x33'));if(!_0x397d77){return crypto['pbkdf2Sync'](_0x51008b,_0x469ed7,_0x4e55b6,_0x320be2,_0x96f4('0x35'))[_0x96f4('0x32')](_0x96f4('0x33'));}return crypto[_0x96f4('0x36')](_0x51008b,_0x469ed7,_0x4e55b6,_0x320be2,'sha1',function(_0x5b952d,_0x4022bb){if(_0x5b952d){_0x397d77(_0x5b952d);}return _0x397d77(null,_0x4022bb['toString']('base64'));});},'updatePassword':function(_0x10ca9c){if(!this[_0x96f4('0x10')]){return _0x10ca9c(null);}if(!validatePresenceOf(this[_0x96f4('0x10')])&&authTypes['indexOf'](this['provider'])===-0x1){_0x10ca9c(new Error(_0x96f4('0x37')));}var _0x524f5f=this;this[_0x96f4('0x38')](function(_0x30e05f,_0x213b93){if(_0x30e05f){return _0x10ca9c(_0x30e05f);}_0x524f5f['salt']=_0x213b93;_0x524f5f[_0x96f4('0x2e')](_0x524f5f[_0x96f4('0x10')],function(_0x10585d,_0x214138){if(_0x10585d){_0x10ca9c(_0x10585d);}_0x524f5f[_0x96f4('0x10')]=_0x214138;_0x10ca9c(null);});});},'updateMd5Password':function(){this[_0x96f4('0x39')]=md5(this[_0x96f4('0x12')]+_0x96f4('0x3a')+this[_0x96f4('0x10')]);return this[_0x96f4('0x39')];}}});};