Built motion from commit 753c950e.|2.5.42
[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 _0x8e9b=['function','Missing\x20Callback','randomBytes','toString','salt','pbkdf2Sync','pbkdf2','sha1','base64','indexOf','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','crypto','util','md5','lodash','./user.attributes','google','length','context','from-sip','system','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','wav','WAV','CDR(type)=internal','extensionMonitor','includes','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','exports','models','define','User','users','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','updateMd5Password','changed','privacyEnabled','updatePassword','VoiceExtension','bulkCreate','destroy','encryptPassword'];(function(_0x484f49,_0x19d91e){var _0x4bc2da=function(_0x5f42c5){while(--_0x5f42c5){_0x484f49['push'](_0x484f49['shift']());}};_0x4bc2da(++_0x19d91e);}(_0x8e9b,0x1f4));var _0xb8e9=function(_0x813d0a,_0x4fd3d7){_0x813d0a=_0x813d0a-0x0;var _0x241352=_0x8e9b[_0x813d0a];return _0x241352;};'use strict';var BPromise=require(_0xb8e9('0x0'));var crypto=require(_0xb8e9('0x1'));var util=require(_0xb8e9('0x2'));var md5=require(_0xb8e9('0x3'));var _=require(_0xb8e9('0x4'));var attributes=require(_0xb8e9('0x5'));var authTypes=[_0xb8e9('0x6')];var validatePresenceOf=function(_0x2b2eb7){return _0x2b2eb7&&_0x2b2eb7[_0xb8e9('0x7')];};var getChanSpyApplications=function(_0x32a11e,_0x15ee05,_0x1974c8){var _0x2fb10e={'context':_0x32a11e[_0xb8e9('0x8')]||_0xb8e9('0x9'),'type':_0xb8e9('0xa'),'isApp':![],'UserId':_0x32a11e['id']};var _0x187f83=[];for(var _0x1358a5=0x0,_0x3ba441=0x1;_0x1358a5<_0x1974c8[_0xb8e9('0x7')];_0x1358a5++,_0x3ba441=0x1){var _0x2ff45f={'exten':util[_0xb8e9('0xb')](_0xb8e9('0xc'),_0x1974c8[_0x1358a5][_0xb8e9('0xd')],_0x15ee05),'ChanSpyId':_0x1974c8[_0x1358a5]['id']};_0x187f83[_0xb8e9('0xe')](_[_0xb8e9('0xf')]({'app':_0xb8e9('0x10'),'appdata':util['format'](_0xb8e9('0x11'),_0xb8e9('0x12')),'priority':_0x3ba441++},_0x2fb10e,_0x2ff45f));if(_0x1974c8[_0x1358a5][_0xb8e9('0x13')]){_0x187f83[_0xb8e9('0xe')](_['merge']({'app':_0xb8e9('0x14'),'appdata':util[_0xb8e9('0xb')]('${UNIQUEID}.%s,a',_0x1974c8[_0x1358a5][_0xb8e9('0x15')]),'priority':_0x3ba441++},_0x2fb10e,_0x2ff45f));}if(_0x1974c8[_0x1358a5][_0xb8e9('0x16')]){_0x187f83[_0xb8e9('0xe')](_[_0xb8e9('0xf')]({'app':_0xb8e9('0x17'),'appdata':_0x1974c8[_0x1358a5][_0xb8e9('0x18')],'priority':_0x3ba441++},_0x2fb10e,_0x2ff45f));}_0x187f83[_0xb8e9('0xe')](_[_0xb8e9('0xf')]({'app':_0xb8e9('0x19'),'appdata':util['format'](_0xb8e9('0x1a'),_0x32a11e[_0xb8e9('0x1b')],_0x1974c8[_0x1358a5][_0xb8e9('0x1c')]?_0x1974c8[_0x1358a5][_0xb8e9('0x1c')][_0xb8e9('0x1d')](''):''),'priority':_0x3ba441++},_0x2fb10e,_0x2ff45f));if(_0x1974c8[_0x1358a5]['record']){_0x187f83['push'](_[_0xb8e9('0xf')]({'app':_0xb8e9('0x1e'),'priority':_0x3ba441++},_0x2fb10e,_0x2ff45f));}}return _0x187f83;};var getUserApplications=function(_0xdf0efb,_0x3c79d9){var _0x33b1c0=[_0xb8e9('0x1f'),_0xb8e9('0x20'),'gsm'];var _0x4ce26f={'context':_0xdf0efb[_0xb8e9('0x8')]||'from-sip','exten':_0x3c79d9,'type':'system','isApp':![],'UserId':_0xdf0efb['id']};var _0x359bb9=[{'app':_0xb8e9('0x10'),'appdata':_0xb8e9('0x21')}];if(_0xdf0efb[_0xb8e9('0x22')]&&_[_0xb8e9('0x23')](_0x33b1c0,_0xdf0efb[_0xb8e9('0x22')])){_0x359bb9[_0xb8e9('0xe')]({'app':_0xb8e9('0x10'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x359bb9[_0xb8e9('0xe')]({'app':_0xb8e9('0x10'),'appdata':util[_0xb8e9('0xb')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0xdf0efb[_0xb8e9('0x22')])});_0x359bb9['push']({'app':_0xb8e9('0x24'),'appdata':util['format'](_0xb8e9('0x25'),_0xdf0efb[_0xb8e9('0x1b')])});}else{_0x359bb9[_0xb8e9('0xe')]({'app':_0xb8e9('0x24'),'appdata':util[_0xb8e9('0xb')](_0xb8e9('0x26'),_0xdf0efb[_0xb8e9('0x1b')])});}_0x359bb9[_0xb8e9('0xe')]({'app':_0xb8e9('0x27')});for(var _0x6b411a=0x0;_0x6b411a<_0x359bb9[_0xb8e9('0x7')];_0x6b411a++){_0x359bb9[_0x6b411a]['priority']=_0x6b411a+0x1;_0x359bb9[_0x6b411a]=_[_0xb8e9('0x28')](_0x359bb9[_0x6b411a],_0x4ce26f);}return _0x359bb9;};var getChanSpyPromise=function(_0x2eee3b,_0x4f5a4f){return new BPromise(function(_0x1d7714,_0x4d4708){return _0x2eee3b[_0xb8e9('0x29')][_0xb8e9('0x2a')]()[_0xb8e9('0x2b')](function(_0x3a19c7){if(_0x3a19c7){var _0x5bd2f1=getChanSpyApplications(_0x4f5a4f,_0x4f5a4f[_0xb8e9('0x2c')],_0x3a19c7);if(_0x4f5a4f[_0xb8e9('0x2c')]!=_0x4f5a4f[_0xb8e9('0x1b')]){_0x5bd2f1=_0x5bd2f1[_0xb8e9('0x2d')](getChanSpyApplications(_0x4f5a4f,_0x4f5a4f[_0xb8e9('0x1b')],_0x3a19c7));}return _0x1d7714(_0x5bd2f1);}return _0x1d7714([]);})[_0xb8e9('0x2e')](function(_0x19304b){_0x4d4708(_0x19304b);});});};module[_0xb8e9('0x2f')]=function(_0x397767,_0x3a2869){var _0x4edabd=_0x397767[_0xb8e9('0x30')];return _0x397767[_0xb8e9('0x31')](_0xb8e9('0x32'),attributes,{'tableName':_0xb8e9('0x33'),'charset':_0xb8e9('0x34'),'collate':_0xb8e9('0x35'),'hooks':{'beforeCreate':function(_0x5c5ac3,_0x1b09a7,_0x38ab62){var _0x480d88=typeof _0x5c5ac3[_0xb8e9('0x36')]===_0xb8e9('0x37')?BPromise[_0xb8e9('0x38')](null):_0x4edabd[_0xb8e9('0x39')][_0xb8e9('0x3a')]({'where':{'id':_0x5c5ac3['userProfileId']}});_0x480d88['then'](function(_0x39eef0){if(_0x39eef0){_0x5c5ac3['privacyEnabled']=_0x39eef0['privacyEnabled'];}})[_0xb8e9('0x2b')](function(){_0x5c5ac3[_0xb8e9('0x3b')]();_0x5c5ac3['updatePassword'](_0x38ab62);})['catch'](function(_0x497013){_0x38ab62(_0x497013);});},'beforeUpdate':function(_0x1b4800,_0x3e7f43,_0x5ca404){Promise[_0xb8e9('0x38')]()['then'](function(){if(_0x1b4800[_0xb8e9('0x3c')]('userProfileId')===![])return;return _0x4edabd[_0xb8e9('0x39')][_0xb8e9('0x3a')]({'where':{'id':_0x1b4800['userProfileId']}})[_0xb8e9('0x2b')](function(_0x235609){if(_0x235609)_0x1b4800['privacyEnabled']=_0x235609[_0xb8e9('0x3d')];return;});})[_0xb8e9('0x2b')](function(){if(_0x1b4800[_0xb8e9('0x3c')](_0xb8e9('0x18'))){_0x1b4800['updateMd5Password']();return _0x1b4800[_0xb8e9('0x3e')](_0x5ca404);}_0x5ca404();})[_0xb8e9('0x2e')](function(_0x45b442){_0x5ca404(_0x45b442);});},'afterCreate':function(_0x231f3c,_0x124c5f,_0x22e793){var _0x559c5c=getUserApplications(_0x231f3c,_0x231f3c[_0xb8e9('0x2c')]);if(_0x231f3c['internal']!=_0x231f3c[_0xb8e9('0x1b')]){_0x559c5c=_0x559c5c[_0xb8e9('0x2d')](getUserApplications(_0x231f3c,_0x231f3c[_0xb8e9('0x1b')]));}return _0x4edabd[_0xb8e9('0x3f')]['bulkCreate'](_0x559c5c)[_0xb8e9('0x2b')](function(){if(_0x231f3c[_0xb8e9('0x12')]){return getChanSpyPromise(_0x4edabd,_0x231f3c);}})['then'](function(_0x49ad64){if(_0x49ad64&&_0x49ad64[_0xb8e9('0x7')]){return _0x4edabd[_0xb8e9('0x3f')][_0xb8e9('0x40')](_0x49ad64);}})[_0xb8e9('0x2b')](function(){_0x22e793();})[_0xb8e9('0x2e')](function(_0x2fff03){_0x22e793(_0x2fff03);});},'afterUpdate':function(_0x462aa3,_0x318d44,_0x20c34d){return BPromise['resolve']()['then'](function(){if(_0x462aa3[_0xb8e9('0x3c')](_0xb8e9('0x12'))||_0x462aa3['changed'](_0xb8e9('0x8'))){return _0x4edabd[_0xb8e9('0x3f')][_0xb8e9('0x41')]({'where':{'UserId':_0x462aa3['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xb8e9('0x2b')](function(){if(_0x462aa3[_0xb8e9('0x12')]){return getChanSpyPromise(_0x4edabd,_0x462aa3)[_0xb8e9('0x2b')](function(_0x339c1e){if(_0x339c1e&&_0x339c1e['length']){return _0x4edabd[_0xb8e9('0x3f')][_0xb8e9('0x40')](_0x339c1e);}});}});}})[_0xb8e9('0x2b')](function(){if(_0x462aa3[_0xb8e9('0x3c')]('extensionMonitor')||_0x462aa3[_0xb8e9('0x3c')](_0xb8e9('0x8'))){return _0x4edabd['VoiceExtension']['destroy']({'where':{'UserId':_0x462aa3['id'],'type':'system','ChanSpyId':null}})[_0xb8e9('0x2b')](function(){var _0x4f4b0e=getUserApplications(_0x462aa3,_0x462aa3[_0xb8e9('0x2c')]);if(_0x462aa3[_0xb8e9('0x2c')]!=_0x462aa3[_0xb8e9('0x1b')]){_0x4f4b0e=_0x4f4b0e['concat'](getUserApplications(_0x462aa3,_0x462aa3[_0xb8e9('0x1b')]));}return _0x4edabd[_0xb8e9('0x3f')][_0xb8e9('0x40')](_0x4f4b0e);});}})[_0xb8e9('0x2b')](function(){_0x20c34d();})[_0xb8e9('0x2e')](function(_0x2e8940){_0x20c34d(_0x2e8940);});},'afterDestroy':function(_0x19a3bc,_0x36a4fd){return _0x4edabd['VoiceExtension'][_0xb8e9('0x41')]({'where':{'UserId':_0x19a3bc['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x2570b2,_0x438134){if(!_0x438134){return this[_0xb8e9('0x18')]===this[_0xb8e9('0x42')](_0x2570b2);}var _0x46d748=this;this['encryptPassword'](_0x2570b2,function(_0x2f3845,_0x3f7585){if(_0x2f3845){_0x438134(_0x2f3845);}if(_0x46d748[_0xb8e9('0x18')]===_0x3f7585){_0x438134(null,!![]);}else{_0x438134(null,![]);}});},'makeSalt':function(_0x1bc0e7,_0x2750ef){var _0x1785d2=0x10;if(typeof arguments[0x0]===_0xb8e9('0x43')){_0x2750ef=arguments[0x0];_0x1bc0e7=_0x1785d2;}else if(typeof arguments[0x1]===_0xb8e9('0x43')){_0x2750ef=arguments[0x1];}else{throw new Error(_0xb8e9('0x44'));}if(!_0x1bc0e7){_0x1bc0e7=_0x1785d2;}return crypto[_0xb8e9('0x45')](_0x1bc0e7,function(_0x470ce4,_0x469e9e){if(_0x470ce4){_0x2750ef(_0x470ce4);}return _0x2750ef(null,_0x469e9e[_0xb8e9('0x46')]('base64'));});},'encryptPassword':function(_0x5efb6a,_0x2e95f3){if(!_0x5efb6a||!this[_0xb8e9('0x47')]){return _0x2e95f3?_0x2e95f3(null):null;}var _0x3ea897=0x2710;var _0xd75e98=0x40;var _0xb8000=new Buffer(this['salt'],'base64');if(!_0x2e95f3){return crypto[_0xb8e9('0x48')](_0x5efb6a,_0xb8000,_0x3ea897,_0xd75e98,'sha1')[_0xb8e9('0x46')]('base64');}return crypto[_0xb8e9('0x49')](_0x5efb6a,_0xb8000,_0x3ea897,_0xd75e98,_0xb8e9('0x4a'),function(_0x8653d1,_0x25981f){if(_0x8653d1){_0x2e95f3(_0x8653d1);}return _0x2e95f3(null,_0x25981f[_0xb8e9('0x46')](_0xb8e9('0x4b')));});},'updatePassword':function(_0x3841b5){if(!this[_0xb8e9('0x18')]){return _0x3841b5(null);}if(!validatePresenceOf(this[_0xb8e9('0x18')])&&authTypes[_0xb8e9('0x4c')](this['provider'])===-0x1){_0x3841b5(new Error(_0xb8e9('0x4d')));}var _0x5e8784=this;this[_0xb8e9('0x4e')](function(_0x187e5f,_0x3d3c53){if(_0x187e5f){return _0x3841b5(_0x187e5f);}_0x5e8784[_0xb8e9('0x47')]=_0x3d3c53;_0x5e8784[_0xb8e9('0x42')](_0x5e8784[_0xb8e9('0x18')],function(_0x49646c,_0x359794){if(_0x49646c){_0x3841b5(_0x49646c);}_0x5e8784['password']=_0x359794;_0x3841b5(null);});});},'updateMd5Password':function(){this[_0xb8e9('0x4f')]=md5(this[_0xb8e9('0x1b')]+_0xb8e9('0x50')+this['password']);return this[_0xb8e9('0x4f')];}}});};