Built motion from commit (unavailable).|2.4.18
[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 _0xf088=['context','from-sip','system','format','%s%s','prefix','push','Set','chanspy','record','MixMonitor','${UNIQUEID}.%s,ab','recordingFormat','merge','Authenticate','ChanSpy','SIP/%s,%s','name','options','join','wav','WAV','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxX','Hangup','priority','VoiceChanSpy','findAll','then','internal','concat','catch','models','define','utf8','utf8_bin','updateMd5Password','password','VoiceExtension','bulkCreate','changed','destroy','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','encryptPassword',':asterisk:','md5secret','bluebird','crypto','util','md5','lodash','./user.attributes','length'];(function(_0x4c075b,_0x56c2e7){var _0x228448=function(_0x37c25c){while(--_0x37c25c){_0x4c075b['push'](_0x4c075b['shift']());}};_0x228448(++_0x56c2e7);}(_0xf088,0x1dc));var _0x8f08=function(_0xbeb71a,_0x5cee0e){_0xbeb71a=_0xbeb71a-0x0;var _0x16670c=_0xf088[_0xbeb71a];return _0x16670c;};'use strict';var BPromise=require(_0x8f08('0x0'));var crypto=require(_0x8f08('0x1'));var util=require(_0x8f08('0x2'));var md5=require(_0x8f08('0x3'));var _=require(_0x8f08('0x4'));var attributes=require(_0x8f08('0x5'));var authTypes=['google'];var validatePresenceOf=function(_0x321b42){return _0x321b42&&_0x321b42[_0x8f08('0x6')];};var getChanSpyApplications=function(_0xeb8c51,_0x2e00aa,_0x2e9a4c){var _0x289f0f={'context':_0xeb8c51[_0x8f08('0x7')]||_0x8f08('0x8'),'type':_0x8f08('0x9'),'isApp':![],'UserId':_0xeb8c51['id']};var _0x316e45=[];for(var _0x2cfcc6=0x0,_0x2af369=0x1;_0x2cfcc6<_0x2e9a4c['length'];_0x2cfcc6++,_0x2af369=0x1){var _0x1f6c9d={'exten':util[_0x8f08('0xa')](_0x8f08('0xb'),_0x2e9a4c[_0x2cfcc6][_0x8f08('0xc')],_0x2e00aa),'ChanSpyId':_0x2e9a4c[_0x2cfcc6]['id']};_0x316e45[_0x8f08('0xd')](_['merge']({'app':_0x8f08('0xe'),'appdata':util[_0x8f08('0xa')]('CDR(type)=%s',_0x8f08('0xf')),'priority':_0x2af369++},_0x289f0f,_0x1f6c9d));if(_0x2e9a4c[_0x2cfcc6][_0x8f08('0x10')]){_0x316e45[_0x8f08('0xd')](_['merge']({'app':_0x8f08('0x11'),'appdata':util['format'](_0x8f08('0x12'),_0x2e9a4c[_0x2cfcc6][_0x8f08('0x13')]),'priority':_0x2af369++},_0x289f0f,_0x1f6c9d));}if(_0x2e9a4c[_0x2cfcc6]['auth']){_0x316e45[_0x8f08('0xd')](_[_0x8f08('0x14')]({'app':_0x8f08('0x15'),'appdata':_0x2e9a4c[_0x2cfcc6]['password'],'priority':_0x2af369++},_0x289f0f,_0x1f6c9d));}_0x316e45['push'](_[_0x8f08('0x14')]({'app':_0x8f08('0x16'),'appdata':util[_0x8f08('0xa')](_0x8f08('0x17'),_0xeb8c51[_0x8f08('0x18')],_0x2e9a4c[_0x2cfcc6][_0x8f08('0x19')]?_0x2e9a4c[_0x2cfcc6][_0x8f08('0x19')][_0x8f08('0x1a')](''):''),'priority':_0x2af369++},_0x289f0f,_0x1f6c9d));if(_0x2e9a4c[_0x2cfcc6]['record']){_0x316e45[_0x8f08('0xd')](_['merge']({'app':'StopMixMonitor','priority':_0x2af369++},_0x289f0f,_0x1f6c9d));}}return _0x316e45;};var getUserApplications=function(_0x215b4a,_0x4dcb32){var _0x18a18=[_0x8f08('0x1b'),_0x8f08('0x1c'),'gsm'];var _0x13c21b={'context':_0x215b4a['context']||'from-sip','exten':_0x4dcb32,'type':_0x8f08('0x9'),'isApp':![],'UserId':_0x215b4a['id']};var _0x461299=[{'app':'Set','appdata':_0x8f08('0x1d')}];if(_0x215b4a[_0x8f08('0x1e')]&&_['includes'](_0x18a18,_0x215b4a['extensionMonitor'])){_0x461299[_0x8f08('0xd')]({'app':_0x8f08('0xe'),'appdata':_0x8f08('0x1f')});_0x461299['push']({'app':'Set','appdata':util[_0x8f08('0xa')](_0x8f08('0x20'),_0x215b4a[_0x8f08('0x1e')])});_0x461299[_0x8f08('0xd')]({'app':_0x8f08('0x21'),'appdata':util[_0x8f08('0xa')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x215b4a[_0x8f08('0x18')])});}else{_0x461299['push']({'app':_0x8f08('0x21'),'appdata':util[_0x8f08('0xa')](_0x8f08('0x22'),_0x215b4a[_0x8f08('0x18')])});}_0x461299[_0x8f08('0xd')]({'app':_0x8f08('0x23')});for(var _0x4dbe2f=0x0;_0x4dbe2f<_0x461299[_0x8f08('0x6')];_0x4dbe2f++){_0x461299[_0x4dbe2f][_0x8f08('0x24')]=_0x4dbe2f+0x1;_0x461299[_0x4dbe2f]=_['defaults'](_0x461299[_0x4dbe2f],_0x13c21b);}return _0x461299;};var getChanSpyPromise=function(_0x5460b0,_0x6d0bcc){return new BPromise(function(_0x518d5f,_0x23182b){return _0x5460b0[_0x8f08('0x25')][_0x8f08('0x26')]()[_0x8f08('0x27')](function(_0x3f2e93){if(_0x3f2e93){var _0x533f3e=getChanSpyApplications(_0x6d0bcc,_0x6d0bcc['internal'],_0x3f2e93);if(_0x6d0bcc[_0x8f08('0x28')]!=_0x6d0bcc['name']){_0x533f3e=_0x533f3e[_0x8f08('0x29')](getChanSpyApplications(_0x6d0bcc,_0x6d0bcc['name'],_0x3f2e93));}return _0x518d5f(_0x533f3e);}return _0x518d5f([]);})[_0x8f08('0x2a')](function(_0x5a54db){_0x23182b(_0x5a54db);});});};module['exports']=function(_0x48e518,_0x38a6d2){var _0x323249=_0x48e518[_0x8f08('0x2b')];return _0x48e518[_0x8f08('0x2c')]('User',attributes,{'tableName':'users','charset':_0x8f08('0x2d'),'collate':_0x8f08('0x2e'),'hooks':{'beforeCreate':function(_0x2d7ebb,_0x2183d1,_0xfad25b){_0x2d7ebb[_0x8f08('0x2f')]();_0x2d7ebb['updatePassword'](_0xfad25b);},'beforeUpdate':function(_0x265809,_0x97228c,_0x1a0d4c){if(_0x265809['changed'](_0x8f08('0x30'))){_0x265809[_0x8f08('0x2f')]();return _0x265809['updatePassword'](_0x1a0d4c);}_0x1a0d4c();},'afterCreate':function(_0x13b592,_0x5b7c4d,_0x49747f){var _0x30375c=getUserApplications(_0x13b592,_0x13b592[_0x8f08('0x28')]);if(_0x13b592[_0x8f08('0x28')]!=_0x13b592[_0x8f08('0x18')]){_0x30375c=_0x30375c[_0x8f08('0x29')](getUserApplications(_0x13b592,_0x13b592['name']));}return _0x323249[_0x8f08('0x31')][_0x8f08('0x32')](_0x30375c)['then'](function(){if(_0x13b592[_0x8f08('0xf')]){return getChanSpyPromise(_0x323249,_0x13b592);}})[_0x8f08('0x27')](function(_0x3b3c70){if(_0x3b3c70&&_0x3b3c70['length']){return _0x323249[_0x8f08('0x31')]['bulkCreate'](_0x3b3c70);}})[_0x8f08('0x27')](function(){_0x49747f();})[_0x8f08('0x2a')](function(_0x443fb8){_0x49747f(_0x443fb8);});},'afterUpdate':function(_0x1e1fb7,_0x217014,_0x24da16){return BPromise['resolve']()[_0x8f08('0x27')](function(){if(_0x1e1fb7[_0x8f08('0x33')](_0x8f08('0xf'))||_0x1e1fb7[_0x8f08('0x33')](_0x8f08('0x7'))){return _0x323249[_0x8f08('0x31')][_0x8f08('0x34')]({'where':{'UserId':_0x1e1fb7['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x8f08('0x27')](function(){if(_0x1e1fb7[_0x8f08('0xf')]){return getChanSpyPromise(_0x323249,_0x1e1fb7)['then'](function(_0x70bfe7){if(_0x70bfe7&&_0x70bfe7[_0x8f08('0x6')]){return _0x323249[_0x8f08('0x31')][_0x8f08('0x32')](_0x70bfe7);}});}});}})['then'](function(){if(_0x1e1fb7[_0x8f08('0x33')](_0x8f08('0x1e'))||_0x1e1fb7[_0x8f08('0x33')](_0x8f08('0x7'))){return _0x323249[_0x8f08('0x31')][_0x8f08('0x34')]({'where':{'UserId':_0x1e1fb7['id'],'type':_0x8f08('0x9'),'ChanSpyId':null}})[_0x8f08('0x27')](function(){var _0x22239e=getUserApplications(_0x1e1fb7,_0x1e1fb7['internal']);if(_0x1e1fb7['internal']!=_0x1e1fb7[_0x8f08('0x18')]){_0x22239e=_0x22239e[_0x8f08('0x29')](getUserApplications(_0x1e1fb7,_0x1e1fb7[_0x8f08('0x18')]));}return _0x323249[_0x8f08('0x31')][_0x8f08('0x32')](_0x22239e);});}})[_0x8f08('0x27')](function(){_0x24da16();})['catch'](function(_0x40792f){_0x24da16(_0x40792f);});},'afterDestroy':function(_0x55b7a8,_0x1696f6){return _0x323249['VoiceExtension']['destroy']({'where':{'UserId':_0x55b7a8['id'],'type':_0x8f08('0x9')}});}},'instanceMethods':{'authenticate':function(_0x1bbd8b,_0x10e8ca){if(!_0x10e8ca){return this['password']===this['encryptPassword'](_0x1bbd8b);}var _0x5445c9=this;this['encryptPassword'](_0x1bbd8b,function(_0x4d7eaf,_0x769cf2){if(_0x4d7eaf){_0x10e8ca(_0x4d7eaf);}if(_0x5445c9['password']===_0x769cf2){_0x10e8ca(null,!![]);}else{_0x10e8ca(null,![]);}});},'makeSalt':function(_0x1700b1,_0x26616){var _0x3246ab=0x10;if(typeof arguments[0x0]===_0x8f08('0x35')){_0x26616=arguments[0x0];_0x1700b1=_0x3246ab;}else if(typeof arguments[0x1]===_0x8f08('0x35')){_0x26616=arguments[0x1];}else{throw new Error(_0x8f08('0x36'));}if(!_0x1700b1){_0x1700b1=_0x3246ab;}return crypto[_0x8f08('0x37')](_0x1700b1,function(_0x2eb9c5,_0x49bc18){if(_0x2eb9c5){_0x26616(_0x2eb9c5);}return _0x26616(null,_0x49bc18[_0x8f08('0x38')](_0x8f08('0x39')));});},'encryptPassword':function(_0x2992df,_0x53188f){if(!_0x2992df||!this[_0x8f08('0x3a')]){return _0x53188f?_0x53188f(null):null;}var _0x1692da=0x2710;var _0x233d62=0x40;var _0x5d0caf=new Buffer(this[_0x8f08('0x3a')],_0x8f08('0x39'));if(!_0x53188f){return crypto[_0x8f08('0x3b')](_0x2992df,_0x5d0caf,_0x1692da,_0x233d62,_0x8f08('0x3c'))[_0x8f08('0x38')](_0x8f08('0x39'));}return crypto[_0x8f08('0x3d')](_0x2992df,_0x5d0caf,_0x1692da,_0x233d62,_0x8f08('0x3c'),function(_0x21ee4f,_0x33c374){if(_0x21ee4f){_0x53188f(_0x21ee4f);}return _0x53188f(null,_0x33c374[_0x8f08('0x38')](_0x8f08('0x39')));});},'updatePassword':function(_0x3cb47b){if(!this[_0x8f08('0x30')]){return _0x3cb47b(null);}if(!validatePresenceOf(this[_0x8f08('0x30')])&&authTypes[_0x8f08('0x3e')](this[_0x8f08('0x3f')])===-0x1){_0x3cb47b(new Error(_0x8f08('0x40')));}var _0x40937c=this;this[_0x8f08('0x41')](function(_0x1d3145,_0x29e11e){if(_0x1d3145){return _0x3cb47b(_0x1d3145);}_0x40937c[_0x8f08('0x3a')]=_0x29e11e;_0x40937c[_0x8f08('0x42')](_0x40937c[_0x8f08('0x30')],function(_0x25f31b,_0x4a82f8){if(_0x25f31b){_0x3cb47b(_0x25f31b);}_0x40937c[_0x8f08('0x30')]=_0x4a82f8;_0x3cb47b(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x8f08('0x18')]+_0x8f08('0x43')+this[_0x8f08('0x30')]);return this[_0x8f08('0x44')];}}});};