437e4980223ed0c8d7e589233d56bfab6e8c3687
[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 _0x8651=['gsm','system','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','Dial','SIP/%s,,tTxX','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','models','define','User','users','utf8','utf8_bin','updateMd5Password','updatePassword','password','VoiceExtension','chanspy','changed','destroy','bulkCreate','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','Invalid\x20password','makeSalt',':asterisk:','bluebird','crypto','util','md5','lodash','./user.attributes','google','length','context','from-sip','format','%s%s','push','merge','Set','CDR(type)=%s','record','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','ChanSpy','SIP/%s,%s','options','join','StopMixMonitor','wav','WAV'];(function(_0x71d98e,_0x5c9c72){var _0x493276=function(_0x4c3791){while(--_0x4c3791){_0x71d98e['push'](_0x71d98e['shift']());}};_0x493276(++_0x5c9c72);}(_0x8651,0x1dc));var _0x1865=function(_0x1589dd,_0x2b9d22){_0x1589dd=_0x1589dd-0x0;var _0x1bddd1=_0x8651[_0x1589dd];return _0x1bddd1;};'use strict';var BPromise=require(_0x1865('0x0'));var crypto=require(_0x1865('0x1'));var util=require(_0x1865('0x2'));var md5=require(_0x1865('0x3'));var _=require(_0x1865('0x4'));var attributes=require(_0x1865('0x5'));var authTypes=[_0x1865('0x6')];var validatePresenceOf=function(_0x325a18){return _0x325a18&&_0x325a18[_0x1865('0x7')];};var getChanSpyApplications=function(_0x316d26,_0x57f50e,_0x22a81e){var _0x4f2dd7={'context':_0x316d26[_0x1865('0x8')]||_0x1865('0x9'),'type':'system','isApp':![],'UserId':_0x316d26['id']};var _0x24b6fc=[];for(var _0x28643a=0x0,_0x4d204=0x1;_0x28643a<_0x22a81e[_0x1865('0x7')];_0x28643a++,_0x4d204=0x1){var _0x3b26c4={'exten':util[_0x1865('0xa')](_0x1865('0xb'),_0x22a81e[_0x28643a]['prefix'],_0x57f50e),'ChanSpyId':_0x22a81e[_0x28643a]['id']};_0x24b6fc[_0x1865('0xc')](_[_0x1865('0xd')]({'app':_0x1865('0xe'),'appdata':util[_0x1865('0xa')](_0x1865('0xf'),'chanspy'),'priority':_0x4d204++},_0x4f2dd7,_0x3b26c4));if(_0x22a81e[_0x28643a][_0x1865('0x10')]){_0x24b6fc['push'](_[_0x1865('0xd')]({'app':'MixMonitor','appdata':util[_0x1865('0xa')](_0x1865('0x11'),_0x22a81e[_0x28643a][_0x1865('0x12')]),'priority':_0x4d204++},_0x4f2dd7,_0x3b26c4));}if(_0x22a81e[_0x28643a][_0x1865('0x13')]){_0x24b6fc['push'](_['merge']({'app':_0x1865('0x14'),'appdata':_0x22a81e[_0x28643a]['password'],'priority':_0x4d204++},_0x4f2dd7,_0x3b26c4));}_0x24b6fc[_0x1865('0xc')](_[_0x1865('0xd')]({'app':_0x1865('0x15'),'appdata':util['format'](_0x1865('0x16'),_0x316d26['name'],_0x22a81e[_0x28643a]['options']?_0x22a81e[_0x28643a][_0x1865('0x17')][_0x1865('0x18')](''):''),'priority':_0x4d204++},_0x4f2dd7,_0x3b26c4));if(_0x22a81e[_0x28643a][_0x1865('0x10')]){_0x24b6fc[_0x1865('0xc')](_[_0x1865('0xd')]({'app':_0x1865('0x19'),'priority':_0x4d204++},_0x4f2dd7,_0x3b26c4));}}return _0x24b6fc;};var getUserApplications=function(_0x2ebfbe,_0x264839){var _0x2705dd=[_0x1865('0x1a'),_0x1865('0x1b'),_0x1865('0x1c')];var _0x1f536d={'context':_0x2ebfbe[_0x1865('0x8')]||'from-sip','exten':_0x264839,'type':_0x1865('0x1d'),'isApp':![],'UserId':_0x2ebfbe['id']};var _0x3b3ba6=[{'app':_0x1865('0xe'),'appdata':_0x1865('0x1e')}];if(_0x2ebfbe[_0x1865('0x1f')]&&_['includes'](_0x2705dd,_0x2ebfbe[_0x1865('0x1f')])){_0x3b3ba6[_0x1865('0xc')]({'app':_0x1865('0xe'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x3b3ba6[_0x1865('0xc')]({'app':_0x1865('0xe'),'appdata':util[_0x1865('0xa')](_0x1865('0x20'),_0x2ebfbe[_0x1865('0x1f')])});_0x3b3ba6[_0x1865('0xc')]({'app':'Dial','appdata':util[_0x1865('0xa')](_0x1865('0x21'),_0x2ebfbe[_0x1865('0x22')])});}else{_0x3b3ba6[_0x1865('0xc')]({'app':_0x1865('0x23'),'appdata':util[_0x1865('0xa')](_0x1865('0x24'),_0x2ebfbe[_0x1865('0x22')])});}_0x3b3ba6[_0x1865('0xc')]({'app':'Hangup'});for(var _0x242dcf=0x0;_0x242dcf<_0x3b3ba6[_0x1865('0x7')];_0x242dcf++){_0x3b3ba6[_0x242dcf][_0x1865('0x25')]=_0x242dcf+0x1;_0x3b3ba6[_0x242dcf]=_[_0x1865('0x26')](_0x3b3ba6[_0x242dcf],_0x1f536d);}return _0x3b3ba6;};var getChanSpyPromise=function(_0x15147e,_0x1811f7){return new BPromise(function(_0x5abc89,_0x497a8b){return _0x15147e[_0x1865('0x27')][_0x1865('0x28')]()[_0x1865('0x29')](function(_0x26578c){if(_0x26578c){var _0x2c4052=getChanSpyApplications(_0x1811f7,_0x1811f7[_0x1865('0x2a')],_0x26578c);if(_0x1811f7[_0x1865('0x2a')]!=_0x1811f7['name']){_0x2c4052=_0x2c4052[_0x1865('0x2b')](getChanSpyApplications(_0x1811f7,_0x1811f7[_0x1865('0x22')],_0x26578c));}return _0x5abc89(_0x2c4052);}return _0x5abc89([]);})[_0x1865('0x2c')](function(_0x113773){_0x497a8b(_0x113773);});});};module['exports']=function(_0x53afa5,_0x265749){var _0x10d5f0=_0x53afa5[_0x1865('0x2d')];return _0x53afa5[_0x1865('0x2e')](_0x1865('0x2f'),attributes,{'tableName':_0x1865('0x30'),'charset':_0x1865('0x31'),'collate':_0x1865('0x32'),'hooks':{'beforeCreate':function(_0x4da9d9,_0x1d05c4,_0x286305){_0x4da9d9[_0x1865('0x33')]();_0x4da9d9[_0x1865('0x34')](_0x286305);},'beforeUpdate':function(_0x5469b0,_0xfb5376,_0x40a866){if(_0x5469b0['changed'](_0x1865('0x35'))){_0x5469b0[_0x1865('0x33')]();return _0x5469b0[_0x1865('0x34')](_0x40a866);}_0x40a866();},'afterCreate':function(_0x335918,_0x47d8d5,_0x4d1d48){var _0x363c60=getUserApplications(_0x335918,_0x335918[_0x1865('0x2a')]);if(_0x335918['internal']!=_0x335918['name']){_0x363c60=_0x363c60[_0x1865('0x2b')](getUserApplications(_0x335918,_0x335918['name']));}return _0x10d5f0[_0x1865('0x36')]['bulkCreate'](_0x363c60)[_0x1865('0x29')](function(){if(_0x335918['chanspy']){return getChanSpyPromise(_0x10d5f0,_0x335918);}})['then'](function(_0x122d27){if(_0x122d27&&_0x122d27[_0x1865('0x7')]){return _0x10d5f0[_0x1865('0x36')]['bulkCreate'](_0x122d27);}})[_0x1865('0x29')](function(){_0x4d1d48();})[_0x1865('0x2c')](function(_0x4a58b2){_0x4d1d48(_0x4a58b2);});},'afterUpdate':function(_0x495676,_0x23617f,_0x5ef56a){return BPromise['resolve']()[_0x1865('0x29')](function(){if(_0x495676['changed'](_0x1865('0x37'))||_0x495676[_0x1865('0x38')](_0x1865('0x8'))){return _0x10d5f0[_0x1865('0x36')][_0x1865('0x39')]({'where':{'UserId':_0x495676['id'],'type':_0x1865('0x1d'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x495676[_0x1865('0x37')]){return getChanSpyPromise(_0x10d5f0,_0x495676)[_0x1865('0x29')](function(_0x2522c1){if(_0x2522c1&&_0x2522c1[_0x1865('0x7')]){return _0x10d5f0[_0x1865('0x36')]['bulkCreate'](_0x2522c1);}});}});}})['then'](function(){if(_0x495676['changed'](_0x1865('0x1f'))||_0x495676[_0x1865('0x38')](_0x1865('0x8'))){return _0x10d5f0[_0x1865('0x36')][_0x1865('0x39')]({'where':{'UserId':_0x495676['id'],'type':_0x1865('0x1d'),'ChanSpyId':null}})['then'](function(){var _0x2ab306=getUserApplications(_0x495676,_0x495676[_0x1865('0x2a')]);if(_0x495676[_0x1865('0x2a')]!=_0x495676['name']){_0x2ab306=_0x2ab306['concat'](getUserApplications(_0x495676,_0x495676[_0x1865('0x22')]));}return _0x10d5f0['VoiceExtension'][_0x1865('0x3a')](_0x2ab306);});}})[_0x1865('0x29')](function(){_0x5ef56a();})['catch'](function(_0x4c1978){_0x5ef56a(_0x4c1978);});},'afterDestroy':function(_0x2e455f,_0xdef3c3){return _0x10d5f0[_0x1865('0x36')]['destroy']({'where':{'UserId':_0x2e455f['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x240956,_0x28dcca){if(!_0x28dcca){return this[_0x1865('0x35')]===this['encryptPassword'](_0x240956);}var _0x21b9aa=this;this['encryptPassword'](_0x240956,function(_0x10bf52,_0xbb67f5){if(_0x10bf52){_0x28dcca(_0x10bf52);}if(_0x21b9aa[_0x1865('0x35')]===_0xbb67f5){_0x28dcca(null,!![]);}else{_0x28dcca(null,![]);}});},'makeSalt':function(_0x4bdad4,_0x4d484c){var _0x57d716=0x10;if(typeof arguments[0x0]===_0x1865('0x3b')){_0x4d484c=arguments[0x0];_0x4bdad4=_0x57d716;}else if(typeof arguments[0x1]===_0x1865('0x3b')){_0x4d484c=arguments[0x1];}else{throw new Error(_0x1865('0x3c'));}if(!_0x4bdad4){_0x4bdad4=_0x57d716;}return crypto[_0x1865('0x3d')](_0x4bdad4,function(_0x45d8f6,_0x3b6b61){if(_0x45d8f6){_0x4d484c(_0x45d8f6);}return _0x4d484c(null,_0x3b6b61[_0x1865('0x3e')](_0x1865('0x3f')));});},'encryptPassword':function(_0x4cafd8,_0x502b2b){if(!_0x4cafd8||!this[_0x1865('0x40')]){return _0x502b2b?_0x502b2b(null):null;}var _0x38f5f2=0x2710;var _0x1846ba=0x40;var _0x2adcd4=new Buffer(this[_0x1865('0x40')],_0x1865('0x3f'));if(!_0x502b2b){return crypto[_0x1865('0x41')](_0x4cafd8,_0x2adcd4,_0x38f5f2,_0x1846ba,_0x1865('0x42'))[_0x1865('0x3e')]('base64');}return crypto[_0x1865('0x43')](_0x4cafd8,_0x2adcd4,_0x38f5f2,_0x1846ba,_0x1865('0x42'),function(_0x86d3b1,_0x3207c3){if(_0x86d3b1){_0x502b2b(_0x86d3b1);}return _0x502b2b(null,_0x3207c3[_0x1865('0x3e')](_0x1865('0x3f')));});},'updatePassword':function(_0x1cfeb3){if(!this[_0x1865('0x35')]){return _0x1cfeb3(null);}if(!validatePresenceOf(this[_0x1865('0x35')])&&authTypes[_0x1865('0x44')](this['provider'])===-0x1){_0x1cfeb3(new Error(_0x1865('0x45')));}var _0x425529=this;this[_0x1865('0x46')](function(_0x526694,_0x125292){if(_0x526694){return _0x1cfeb3(_0x526694);}_0x425529[_0x1865('0x40')]=_0x125292;_0x425529['encryptPassword'](_0x425529['password'],function(_0x569736,_0x24dc9b){if(_0x569736){_0x1cfeb3(_0x569736);}_0x425529['password']=_0x24dc9b;_0x1cfeb3(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x1865('0x22')]+_0x1865('0x47')+this[_0x1865('0x35')]);return this['md5secret'];}}});};