Built motion from commit (unavailable).|2.4.20
[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 _0x1642=['base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','makeSalt','md5secret','bluebird','crypto','util','lodash','google','length','context','%s%s','prefix','push','merge','Set','format','CDR(type)=%s','chanspy','MixMonitor','recordingFormat','auth','Authenticate','password','SIP/%s,%s','options','join','record','wav','WAV','gsm','from-sip','system','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','Dial','defaults','findAll','then','internal','concat','catch','exports','models','define','User','users','utf8_bin','changed','updateMd5Password','updatePassword','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString'];(function(_0x3b19ea,_0x518b6b){var _0x40ece9=function(_0x3a3386){while(--_0x3a3386){_0x3b19ea['push'](_0x3b19ea['shift']());}};_0x40ece9(++_0x518b6b);}(_0x1642,0x115));var _0x2164=function(_0x2410e0,_0x19b34c){_0x2410e0=_0x2410e0-0x0;var _0x41a476=_0x1642[_0x2410e0];return _0x41a476;};'use strict';var BPromise=require(_0x2164('0x0'));var crypto=require(_0x2164('0x1'));var util=require(_0x2164('0x2'));var md5=require('md5');var _=require(_0x2164('0x3'));var attributes=require('./user.attributes');var authTypes=[_0x2164('0x4')];var validatePresenceOf=function(_0x1f9308){return _0x1f9308&&_0x1f9308[_0x2164('0x5')];};var getChanSpyApplications=function(_0x32c8cd,_0x2557c4,_0x1c8e3b){var _0x4bac11={'context':_0x32c8cd[_0x2164('0x6')]||'from-sip','type':'system','isApp':![],'UserId':_0x32c8cd['id']};var _0x2b3898=[];for(var _0x35bf56=0x0,_0x2f4b7c=0x1;_0x35bf56<_0x1c8e3b[_0x2164('0x5')];_0x35bf56++,_0x2f4b7c=0x1){var _0xeb36c6={'exten':util['format'](_0x2164('0x7'),_0x1c8e3b[_0x35bf56][_0x2164('0x8')],_0x2557c4),'ChanSpyId':_0x1c8e3b[_0x35bf56]['id']};_0x2b3898[_0x2164('0x9')](_[_0x2164('0xa')]({'app':_0x2164('0xb'),'appdata':util[_0x2164('0xc')](_0x2164('0xd'),_0x2164('0xe')),'priority':_0x2f4b7c++},_0x4bac11,_0xeb36c6));if(_0x1c8e3b[_0x35bf56]['record']){_0x2b3898[_0x2164('0x9')](_[_0x2164('0xa')]({'app':_0x2164('0xf'),'appdata':util[_0x2164('0xc')]('${UNIQUEID}.%s,a',_0x1c8e3b[_0x35bf56][_0x2164('0x10')]),'priority':_0x2f4b7c++},_0x4bac11,_0xeb36c6));}if(_0x1c8e3b[_0x35bf56][_0x2164('0x11')]){_0x2b3898[_0x2164('0x9')](_[_0x2164('0xa')]({'app':_0x2164('0x12'),'appdata':_0x1c8e3b[_0x35bf56][_0x2164('0x13')],'priority':_0x2f4b7c++},_0x4bac11,_0xeb36c6));}_0x2b3898[_0x2164('0x9')](_[_0x2164('0xa')]({'app':'ChanSpy','appdata':util[_0x2164('0xc')](_0x2164('0x14'),_0x32c8cd['name'],_0x1c8e3b[_0x35bf56][_0x2164('0x15')]?_0x1c8e3b[_0x35bf56]['options'][_0x2164('0x16')](''):''),'priority':_0x2f4b7c++},_0x4bac11,_0xeb36c6));if(_0x1c8e3b[_0x35bf56][_0x2164('0x17')]){_0x2b3898[_0x2164('0x9')](_['merge']({'app':'StopMixMonitor','priority':_0x2f4b7c++},_0x4bac11,_0xeb36c6));}}return _0x2b3898;};var getUserApplications=function(_0x359f21,_0x10ab97){var _0x507ccd=[_0x2164('0x18'),_0x2164('0x19'),_0x2164('0x1a')];var _0xe4c1ad={'context':_0x359f21['context']||_0x2164('0x1b'),'exten':_0x10ab97,'type':_0x2164('0x1c'),'isApp':![],'UserId':_0x359f21['id']};var _0x48bf9e=[{'app':_0x2164('0xb'),'appdata':_0x2164('0x1d')}];if(_0x359f21[_0x2164('0x1e')]&&_['includes'](_0x507ccd,_0x359f21[_0x2164('0x1e')])){_0x48bf9e[_0x2164('0x9')]({'app':_0x2164('0xb'),'appdata':_0x2164('0x1f')});_0x48bf9e['push']({'app':_0x2164('0xb'),'appdata':util[_0x2164('0xc')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x359f21[_0x2164('0x1e')])});_0x48bf9e[_0x2164('0x9')]({'app':'Dial','appdata':util[_0x2164('0xc')](_0x2164('0x20'),_0x359f21[_0x2164('0x21')])});}else{_0x48bf9e[_0x2164('0x9')]({'app':_0x2164('0x22'),'appdata':util['format']('SIP/%s,,tTxX',_0x359f21[_0x2164('0x21')])});}_0x48bf9e[_0x2164('0x9')]({'app':'Hangup'});for(var _0xe7c068=0x0;_0xe7c068<_0x48bf9e[_0x2164('0x5')];_0xe7c068++){_0x48bf9e[_0xe7c068]['priority']=_0xe7c068+0x1;_0x48bf9e[_0xe7c068]=_[_0x2164('0x23')](_0x48bf9e[_0xe7c068],_0xe4c1ad);}return _0x48bf9e;};var getChanSpyPromise=function(_0xce7d0c,_0x484867){return new BPromise(function(_0x45b4c1,_0x148a65){return _0xce7d0c['VoiceChanSpy'][_0x2164('0x24')]()[_0x2164('0x25')](function(_0x1e4c59){if(_0x1e4c59){var _0x51466c=getChanSpyApplications(_0x484867,_0x484867[_0x2164('0x26')],_0x1e4c59);if(_0x484867[_0x2164('0x26')]!=_0x484867[_0x2164('0x21')]){_0x51466c=_0x51466c[_0x2164('0x27')](getChanSpyApplications(_0x484867,_0x484867[_0x2164('0x21')],_0x1e4c59));}return _0x45b4c1(_0x51466c);}return _0x45b4c1([]);})[_0x2164('0x28')](function(_0x8afec7){_0x148a65(_0x8afec7);});});};module[_0x2164('0x29')]=function(_0x33ce63,_0x2ff1cf){var _0x428138=_0x33ce63[_0x2164('0x2a')];return _0x33ce63[_0x2164('0x2b')](_0x2164('0x2c'),attributes,{'tableName':_0x2164('0x2d'),'charset':'utf8','collate':_0x2164('0x2e'),'hooks':{'beforeCreate':function(_0x371686,_0x5ec1ba,_0x465edd){_0x371686['updateMd5Password']();_0x371686['updatePassword'](_0x465edd);},'beforeUpdate':function(_0x1e6bf2,_0x172f08,_0xdd617b){if(_0x1e6bf2[_0x2164('0x2f')]('password')){_0x1e6bf2[_0x2164('0x30')]();return _0x1e6bf2[_0x2164('0x31')](_0xdd617b);}_0xdd617b();},'afterCreate':function(_0x4752e9,_0xeeba6e,_0x5a97be){var _0x475577=getUserApplications(_0x4752e9,_0x4752e9[_0x2164('0x26')]);if(_0x4752e9[_0x2164('0x26')]!=_0x4752e9[_0x2164('0x21')]){_0x475577=_0x475577[_0x2164('0x27')](getUserApplications(_0x4752e9,_0x4752e9[_0x2164('0x21')]));}return _0x428138[_0x2164('0x32')][_0x2164('0x33')](_0x475577)[_0x2164('0x25')](function(){if(_0x4752e9[_0x2164('0xe')]){return getChanSpyPromise(_0x428138,_0x4752e9);}})[_0x2164('0x25')](function(_0x1e3c33){if(_0x1e3c33&&_0x1e3c33[_0x2164('0x5')]){return _0x428138[_0x2164('0x32')][_0x2164('0x33')](_0x1e3c33);}})[_0x2164('0x25')](function(){_0x5a97be();})[_0x2164('0x28')](function(_0x505796){_0x5a97be(_0x505796);});},'afterUpdate':function(_0x3393c0,_0x362a74,_0x57ce8){return BPromise['resolve']()[_0x2164('0x25')](function(){if(_0x3393c0[_0x2164('0x2f')](_0x2164('0xe'))||_0x3393c0['changed'](_0x2164('0x6'))){return _0x428138['VoiceExtension'][_0x2164('0x34')]({'where':{'UserId':_0x3393c0['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x2164('0x25')](function(){if(_0x3393c0[_0x2164('0xe')]){return getChanSpyPromise(_0x428138,_0x3393c0)[_0x2164('0x25')](function(_0x2420f6){if(_0x2420f6&&_0x2420f6[_0x2164('0x5')]){return _0x428138['VoiceExtension'][_0x2164('0x33')](_0x2420f6);}});}});}})[_0x2164('0x25')](function(){if(_0x3393c0[_0x2164('0x2f')]('extensionMonitor')||_0x3393c0[_0x2164('0x2f')](_0x2164('0x6'))){return _0x428138[_0x2164('0x32')]['destroy']({'where':{'UserId':_0x3393c0['id'],'type':_0x2164('0x1c'),'ChanSpyId':null}})['then'](function(){var _0x101428=getUserApplications(_0x3393c0,_0x3393c0[_0x2164('0x26')]);if(_0x3393c0[_0x2164('0x26')]!=_0x3393c0[_0x2164('0x21')]){_0x101428=_0x101428[_0x2164('0x27')](getUserApplications(_0x3393c0,_0x3393c0[_0x2164('0x21')]));}return _0x428138['VoiceExtension'][_0x2164('0x33')](_0x101428);});}})['then'](function(){_0x57ce8();})[_0x2164('0x28')](function(_0x5aa199){_0x57ce8(_0x5aa199);});},'afterDestroy':function(_0x3c6c05,_0x350b05){return _0x428138[_0x2164('0x32')][_0x2164('0x34')]({'where':{'UserId':_0x3c6c05['id'],'type':_0x2164('0x1c')}});}},'instanceMethods':{'authenticate':function(_0x58646f,_0x275e2b){if(!_0x275e2b){return this[_0x2164('0x13')]===this[_0x2164('0x35')](_0x58646f);}var _0x17253c=this;this[_0x2164('0x35')](_0x58646f,function(_0x43fa22,_0x4c1875){if(_0x43fa22){_0x275e2b(_0x43fa22);}if(_0x17253c['password']===_0x4c1875){_0x275e2b(null,!![]);}else{_0x275e2b(null,![]);}});},'makeSalt':function(_0x20d15e,_0x2cbe56){var _0x2dc95a=0x10;if(typeof arguments[0x0]===_0x2164('0x36')){_0x2cbe56=arguments[0x0];_0x20d15e=_0x2dc95a;}else if(typeof arguments[0x1]===_0x2164('0x36')){_0x2cbe56=arguments[0x1];}else{throw new Error(_0x2164('0x37'));}if(!_0x20d15e){_0x20d15e=_0x2dc95a;}return crypto[_0x2164('0x38')](_0x20d15e,function(_0x19343c,_0xf9f88f){if(_0x19343c){_0x2cbe56(_0x19343c);}return _0x2cbe56(null,_0xf9f88f[_0x2164('0x39')](_0x2164('0x3a')));});},'encryptPassword':function(_0x21205b,_0x536f2c){if(!_0x21205b||!this['salt']){return _0x536f2c?_0x536f2c(null):null;}var _0x2ea616=0x2710;var _0x5934f1=0x40;var _0x448fc0=new Buffer(this[_0x2164('0x3b')],'base64');if(!_0x536f2c){return crypto[_0x2164('0x3c')](_0x21205b,_0x448fc0,_0x2ea616,_0x5934f1,_0x2164('0x3d'))[_0x2164('0x39')]('base64');}return crypto[_0x2164('0x3e')](_0x21205b,_0x448fc0,_0x2ea616,_0x5934f1,_0x2164('0x3d'),function(_0x492a57,_0x3d21f1){if(_0x492a57){_0x536f2c(_0x492a57);}return _0x536f2c(null,_0x3d21f1[_0x2164('0x39')]('base64'));});},'updatePassword':function(_0x44bd07){if(!this[_0x2164('0x13')]){return _0x44bd07(null);}if(!validatePresenceOf(this[_0x2164('0x13')])&&authTypes[_0x2164('0x3f')](this[_0x2164('0x40')])===-0x1){_0x44bd07(new Error('Invalid\x20password'));}var _0x20570d=this;this[_0x2164('0x41')](function(_0x1dca0a,_0x50814f){if(_0x1dca0a){return _0x44bd07(_0x1dca0a);}_0x20570d[_0x2164('0x3b')]=_0x50814f;_0x20570d['encryptPassword'](_0x20570d['password'],function(_0x29bd51,_0x5e386d){if(_0x29bd51){_0x44bd07(_0x29bd51);}_0x20570d[_0x2164('0x13')]=_0x5e386d;_0x44bd07(null);});});},'updateMd5Password':function(){this[_0x2164('0x42')]=md5(this['name']+':asterisk:'+this[_0x2164('0x13')]);return this['md5secret'];}}});};