Built motion from commit (unavailable).|2.5.26
[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 _0x44d2=['internal','concat','catch','exports','models','define','User','utf8','utf8_bin','undefined','resolve','UserProfile','find','userProfileId','privacyEnabled','updateMd5Password','updatePassword','changed','VoiceExtension','bulkCreate','length','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','salt','base64','pbkdf2Sync','sha1','indexOf','provider','Invalid\x20password','md5secret',':asterisk:','crypto','md5','lodash','google','context','from-sip','system','format','%s%s','push','Set','CDR(type)=%s','chanspy','record','merge','MixMonitor','${UNIQUEID}.%s,a','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then'];(function(_0xb59d8d,_0x4bff92){var _0x5d41b0=function(_0x3c2d82){while(--_0x3c2d82){_0xb59d8d['push'](_0xb59d8d['shift']());}};_0x5d41b0(++_0x4bff92);}(_0x44d2,0x1f2));var _0x244d=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0x44d2[_0x16d10f];return _0x50c823;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x244d('0x0'));var util=require('util');var md5=require(_0x244d('0x1'));var _=require(_0x244d('0x2'));var attributes=require('./user.attributes');var authTypes=[_0x244d('0x3')];var validatePresenceOf=function(_0xee1782){return _0xee1782&&_0xee1782['length'];};var getChanSpyApplications=function(_0x2f13fe,_0x1050af,_0x104eba){var _0x208ff0={'context':_0x2f13fe[_0x244d('0x4')]||_0x244d('0x5'),'type':_0x244d('0x6'),'isApp':![],'UserId':_0x2f13fe['id']};var _0x23d1ec=[];for(var _0x37f78a=0x0,_0x1914f0=0x1;_0x37f78a<_0x104eba['length'];_0x37f78a++,_0x1914f0=0x1){var _0x42399a={'exten':util[_0x244d('0x7')](_0x244d('0x8'),_0x104eba[_0x37f78a]['prefix'],_0x1050af),'ChanSpyId':_0x104eba[_0x37f78a]['id']};_0x23d1ec[_0x244d('0x9')](_['merge']({'app':_0x244d('0xa'),'appdata':util['format'](_0x244d('0xb'),_0x244d('0xc')),'priority':_0x1914f0++},_0x208ff0,_0x42399a));if(_0x104eba[_0x37f78a][_0x244d('0xd')]){_0x23d1ec[_0x244d('0x9')](_[_0x244d('0xe')]({'app':_0x244d('0xf'),'appdata':util[_0x244d('0x7')](_0x244d('0x10'),_0x104eba[_0x37f78a]['recordingFormat']),'priority':_0x1914f0++},_0x208ff0,_0x42399a));}if(_0x104eba[_0x37f78a]['auth']){_0x23d1ec[_0x244d('0x9')](_[_0x244d('0xe')]({'app':_0x244d('0x11'),'appdata':_0x104eba[_0x37f78a][_0x244d('0x12')],'priority':_0x1914f0++},_0x208ff0,_0x42399a));}_0x23d1ec[_0x244d('0x9')](_[_0x244d('0xe')]({'app':_0x244d('0x13'),'appdata':util['format'](_0x244d('0x14'),_0x2f13fe[_0x244d('0x15')],_0x104eba[_0x37f78a][_0x244d('0x16')]?_0x104eba[_0x37f78a]['options'][_0x244d('0x17')](''):''),'priority':_0x1914f0++},_0x208ff0,_0x42399a));if(_0x104eba[_0x37f78a][_0x244d('0xd')]){_0x23d1ec[_0x244d('0x9')](_[_0x244d('0xe')]({'app':_0x244d('0x18'),'priority':_0x1914f0++},_0x208ff0,_0x42399a));}}return _0x23d1ec;};var getUserApplications=function(_0x17b087,_0xb98519){var _0x44e818=[_0x244d('0x19'),_0x244d('0x1a'),_0x244d('0x1b')];var _0x573e04={'context':_0x17b087[_0x244d('0x4')]||'from-sip','exten':_0xb98519,'type':_0x244d('0x6'),'isApp':![],'UserId':_0x17b087['id']};var _0x4bebf5=[{'app':_0x244d('0xa'),'appdata':_0x244d('0x1c')}];if(_0x17b087[_0x244d('0x1d')]&&_['includes'](_0x44e818,_0x17b087[_0x244d('0x1d')])){_0x4bebf5['push']({'app':_0x244d('0xa'),'appdata':_0x244d('0x1e')});_0x4bebf5[_0x244d('0x9')]({'app':_0x244d('0xa'),'appdata':util['format'](_0x244d('0x1f'),_0x17b087[_0x244d('0x1d')])});_0x4bebf5['push']({'app':'Dial','appdata':util[_0x244d('0x7')](_0x244d('0x20'),_0x17b087[_0x244d('0x15')])});}else{_0x4bebf5['push']({'app':_0x244d('0x21'),'appdata':util[_0x244d('0x7')](_0x244d('0x22'),_0x17b087[_0x244d('0x15')])});}_0x4bebf5[_0x244d('0x9')]({'app':_0x244d('0x23')});for(var _0xa8ae51=0x0;_0xa8ae51<_0x4bebf5['length'];_0xa8ae51++){_0x4bebf5[_0xa8ae51][_0x244d('0x24')]=_0xa8ae51+0x1;_0x4bebf5[_0xa8ae51]=_[_0x244d('0x25')](_0x4bebf5[_0xa8ae51],_0x573e04);}return _0x4bebf5;};var getChanSpyPromise=function(_0xc84d17,_0x278f81){return new BPromise(function(_0x270477,_0x536d40){return _0xc84d17[_0x244d('0x26')][_0x244d('0x27')]()[_0x244d('0x28')](function(_0x43dc48){if(_0x43dc48){var _0x4ab652=getChanSpyApplications(_0x278f81,_0x278f81['internal'],_0x43dc48);if(_0x278f81[_0x244d('0x29')]!=_0x278f81[_0x244d('0x15')]){_0x4ab652=_0x4ab652[_0x244d('0x2a')](getChanSpyApplications(_0x278f81,_0x278f81[_0x244d('0x15')],_0x43dc48));}return _0x270477(_0x4ab652);}return _0x270477([]);})[_0x244d('0x2b')](function(_0x75ae35){_0x536d40(_0x75ae35);});});};module[_0x244d('0x2c')]=function(_0x1ce4e0,_0x28915e){var _0x422df0=_0x1ce4e0[_0x244d('0x2d')];return _0x1ce4e0[_0x244d('0x2e')](_0x244d('0x2f'),attributes,{'tableName':'users','charset':_0x244d('0x30'),'collate':_0x244d('0x31'),'hooks':{'beforeCreate':function(_0x4f6790,_0x1a1786,_0x1b7496){var _0x224842=typeof _0x4f6790['userProfileId']===_0x244d('0x32')?BPromise[_0x244d('0x33')](null):_0x422df0[_0x244d('0x34')][_0x244d('0x35')]({'where':{'id':_0x4f6790[_0x244d('0x36')]}});_0x224842[_0x244d('0x28')](function(_0x469651){if(_0x469651){_0x4f6790[_0x244d('0x37')]=_0x469651[_0x244d('0x37')];}})[_0x244d('0x28')](function(){_0x4f6790[_0x244d('0x38')]();_0x4f6790[_0x244d('0x39')](_0x1b7496);})[_0x244d('0x2b')](function(_0x4b21b8){_0x1b7496(_0x4b21b8);});},'beforeUpdate':function(_0x1492e6,_0x3c1c09,_0x42c5f0){Promise['resolve']()['then'](function(){if(_0x1492e6[_0x244d('0x3a')]('userProfileId')===![])return;return _0x422df0[_0x244d('0x34')][_0x244d('0x35')]({'where':{'id':_0x1492e6['userProfileId']}})['then'](function(_0xebe253){if(_0xebe253)_0x1492e6[_0x244d('0x37')]=_0xebe253[_0x244d('0x37')];return;});})[_0x244d('0x28')](function(){if(_0x1492e6[_0x244d('0x3a')]('password')){_0x1492e6[_0x244d('0x38')]();return _0x1492e6[_0x244d('0x39')](_0x42c5f0);}_0x42c5f0();})[_0x244d('0x2b')](function(_0x57d00a){_0x42c5f0(_0x57d00a);});},'afterCreate':function(_0x4e16ab,_0x138a72,_0x43c403){var _0x40d862=getUserApplications(_0x4e16ab,_0x4e16ab[_0x244d('0x29')]);if(_0x4e16ab[_0x244d('0x29')]!=_0x4e16ab[_0x244d('0x15')]){_0x40d862=_0x40d862[_0x244d('0x2a')](getUserApplications(_0x4e16ab,_0x4e16ab[_0x244d('0x15')]));}return _0x422df0[_0x244d('0x3b')][_0x244d('0x3c')](_0x40d862)['then'](function(){if(_0x4e16ab['chanspy']){return getChanSpyPromise(_0x422df0,_0x4e16ab);}})[_0x244d('0x28')](function(_0x50f6ab){if(_0x50f6ab&&_0x50f6ab[_0x244d('0x3d')]){return _0x422df0[_0x244d('0x3b')]['bulkCreate'](_0x50f6ab);}})[_0x244d('0x28')](function(){_0x43c403();})['catch'](function(_0x47f305){_0x43c403(_0x47f305);});},'afterUpdate':function(_0x4d9c3e,_0x2fec3f,_0x530f81){return BPromise[_0x244d('0x33')]()[_0x244d('0x28')](function(){if(_0x4d9c3e['changed']('chanspy')||_0x4d9c3e[_0x244d('0x3a')](_0x244d('0x4'))){return _0x422df0['VoiceExtension'][_0x244d('0x3e')]({'where':{'UserId':_0x4d9c3e['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x244d('0x28')](function(){if(_0x4d9c3e[_0x244d('0xc')]){return getChanSpyPromise(_0x422df0,_0x4d9c3e)[_0x244d('0x28')](function(_0x4ae7c3){if(_0x4ae7c3&&_0x4ae7c3[_0x244d('0x3d')]){return _0x422df0[_0x244d('0x3b')][_0x244d('0x3c')](_0x4ae7c3);}});}});}})[_0x244d('0x28')](function(){if(_0x4d9c3e['changed'](_0x244d('0x1d'))||_0x4d9c3e[_0x244d('0x3a')](_0x244d('0x4'))){return _0x422df0['VoiceExtension'][_0x244d('0x3e')]({'where':{'UserId':_0x4d9c3e['id'],'type':_0x244d('0x6'),'ChanSpyId':null}})[_0x244d('0x28')](function(){var _0x5d56b1=getUserApplications(_0x4d9c3e,_0x4d9c3e['internal']);if(_0x4d9c3e[_0x244d('0x29')]!=_0x4d9c3e[_0x244d('0x15')]){_0x5d56b1=_0x5d56b1[_0x244d('0x2a')](getUserApplications(_0x4d9c3e,_0x4d9c3e[_0x244d('0x15')]));}return _0x422df0[_0x244d('0x3b')][_0x244d('0x3c')](_0x5d56b1);});}})['then'](function(){_0x530f81();})['catch'](function(_0x35e1bd){_0x530f81(_0x35e1bd);});},'afterDestroy':function(_0x499f67,_0x5859a){return _0x422df0[_0x244d('0x3b')][_0x244d('0x3e')]({'where':{'UserId':_0x499f67['id'],'type':_0x244d('0x6')}});}},'instanceMethods':{'authenticate':function(_0x53adf8,_0x1f7272){if(!_0x1f7272){return this[_0x244d('0x12')]===this[_0x244d('0x3f')](_0x53adf8);}var _0x56e5d3=this;this[_0x244d('0x3f')](_0x53adf8,function(_0x2d41b8,_0x18780a){if(_0x2d41b8){_0x1f7272(_0x2d41b8);}if(_0x56e5d3[_0x244d('0x12')]===_0x18780a){_0x1f7272(null,!![]);}else{_0x1f7272(null,![]);}});},'makeSalt':function(_0x31f78d,_0x9b1b46){var _0x326b31=0x10;if(typeof arguments[0x0]===_0x244d('0x40')){_0x9b1b46=arguments[0x0];_0x31f78d=_0x326b31;}else if(typeof arguments[0x1]===_0x244d('0x40')){_0x9b1b46=arguments[0x1];}else{throw new Error(_0x244d('0x41'));}if(!_0x31f78d){_0x31f78d=_0x326b31;}return crypto[_0x244d('0x42')](_0x31f78d,function(_0x3ca99c,_0xab9045){if(_0x3ca99c){_0x9b1b46(_0x3ca99c);}return _0x9b1b46(null,_0xab9045[_0x244d('0x43')]('base64'));});},'encryptPassword':function(_0x26e974,_0x29f5a6){if(!_0x26e974||!this[_0x244d('0x44')]){return _0x29f5a6?_0x29f5a6(null):null;}var _0x4efe15=0x2710;var _0xf71673=0x40;var _0x22e413=new Buffer(this[_0x244d('0x44')],_0x244d('0x45'));if(!_0x29f5a6){return crypto[_0x244d('0x46')](_0x26e974,_0x22e413,_0x4efe15,_0xf71673,_0x244d('0x47'))[_0x244d('0x43')]('base64');}return crypto['pbkdf2'](_0x26e974,_0x22e413,_0x4efe15,_0xf71673,'sha1',function(_0x315ccc,_0x2eb9d8){if(_0x315ccc){_0x29f5a6(_0x315ccc);}return _0x29f5a6(null,_0x2eb9d8[_0x244d('0x43')](_0x244d('0x45')));});},'updatePassword':function(_0x3d3e7c){if(!this[_0x244d('0x12')]){return _0x3d3e7c(null);}if(!validatePresenceOf(this[_0x244d('0x12')])&&authTypes[_0x244d('0x48')](this[_0x244d('0x49')])===-0x1){_0x3d3e7c(new Error(_0x244d('0x4a')));}var _0x160f7a=this;this['makeSalt'](function(_0x11eb99,_0x34e7ca){if(_0x11eb99){return _0x3d3e7c(_0x11eb99);}_0x160f7a['salt']=_0x34e7ca;_0x160f7a['encryptPassword'](_0x160f7a['password'],function(_0x3f1f1d,_0x2484b8){if(_0x3f1f1d){_0x3d3e7c(_0x3f1f1d);}_0x160f7a[_0x244d('0x12')]=_0x2484b8;_0x3d3e7c(null);});});},'updateMd5Password':function(){this[_0x244d('0x4b')]=md5(this[_0x244d('0x15')]+_0x244d('0x4c')+this[_0x244d('0x12')]);return this['md5secret'];}}});};