Built motion from commit 3e059bc2.|2.5.32
[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 _0x20f5=['userProfileId','undefined','UserProfile','privacyEnabled','updatePassword','find','changed','updateMd5Password','VoiceExtension','bulkCreate','resolve','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','crypto','md5','./user.attributes','google','length','context','from-sip','system','%s%s','prefix','push','Set','CDR(type)=%s','chanspy','merge','MixMonitor','${UNIQUEID}.%s,a','auth','Authenticate','password','ChanSpy','format','name','options','join','StopMixMonitor','wav','WAV','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','then','internal','concat','catch','exports','models','define','users','utf8_bin'];(function(_0x2b121a,_0x566a2f){var _0x4d583c=function(_0x34458d){while(--_0x34458d){_0x2b121a['push'](_0x2b121a['shift']());}};_0x4d583c(++_0x566a2f);}(_0x20f5,0x100));var _0x520f=function(_0x1a0b85,_0xf29a81){_0x1a0b85=_0x1a0b85-0x0;var _0x26ae58=_0x20f5[_0x1a0b85];return _0x26ae58;};'use strict';var BPromise=require(_0x520f('0x0'));var crypto=require(_0x520f('0x1'));var util=require('util');var md5=require(_0x520f('0x2'));var _=require('lodash');var attributes=require(_0x520f('0x3'));var authTypes=[_0x520f('0x4')];var validatePresenceOf=function(_0x517e8c){return _0x517e8c&&_0x517e8c[_0x520f('0x5')];};var getChanSpyApplications=function(_0x2edb66,_0x11b1dc,_0x33a3d4){var _0x25681f={'context':_0x2edb66[_0x520f('0x6')]||_0x520f('0x7'),'type':_0x520f('0x8'),'isApp':![],'UserId':_0x2edb66['id']};var _0xa9224d=[];for(var _0x530d3a=0x0,_0x3a1c19=0x1;_0x530d3a<_0x33a3d4[_0x520f('0x5')];_0x530d3a++,_0x3a1c19=0x1){var _0x58e39b={'exten':util['format'](_0x520f('0x9'),_0x33a3d4[_0x530d3a][_0x520f('0xa')],_0x11b1dc),'ChanSpyId':_0x33a3d4[_0x530d3a]['id']};_0xa9224d[_0x520f('0xb')](_['merge']({'app':_0x520f('0xc'),'appdata':util['format'](_0x520f('0xd'),_0x520f('0xe')),'priority':_0x3a1c19++},_0x25681f,_0x58e39b));if(_0x33a3d4[_0x530d3a]['record']){_0xa9224d[_0x520f('0xb')](_[_0x520f('0xf')]({'app':_0x520f('0x10'),'appdata':util['format'](_0x520f('0x11'),_0x33a3d4[_0x530d3a]['recordingFormat']),'priority':_0x3a1c19++},_0x25681f,_0x58e39b));}if(_0x33a3d4[_0x530d3a][_0x520f('0x12')]){_0xa9224d[_0x520f('0xb')](_[_0x520f('0xf')]({'app':_0x520f('0x13'),'appdata':_0x33a3d4[_0x530d3a][_0x520f('0x14')],'priority':_0x3a1c19++},_0x25681f,_0x58e39b));}_0xa9224d[_0x520f('0xb')](_['merge']({'app':_0x520f('0x15'),'appdata':util[_0x520f('0x16')]('SIP/%s,%s',_0x2edb66[_0x520f('0x17')],_0x33a3d4[_0x530d3a]['options']?_0x33a3d4[_0x530d3a][_0x520f('0x18')][_0x520f('0x19')](''):''),'priority':_0x3a1c19++},_0x25681f,_0x58e39b));if(_0x33a3d4[_0x530d3a]['record']){_0xa9224d[_0x520f('0xb')](_[_0x520f('0xf')]({'app':_0x520f('0x1a'),'priority':_0x3a1c19++},_0x25681f,_0x58e39b));}}return _0xa9224d;};var getUserApplications=function(_0x38fef5,_0x584c93){var _0x160138=[_0x520f('0x1b'),_0x520f('0x1c'),'gsm'];var _0x3c7d37={'context':_0x38fef5[_0x520f('0x6')]||_0x520f('0x7'),'exten':_0x584c93,'type':_0x520f('0x8'),'isApp':![],'UserId':_0x38fef5['id']};var _0x40fb6e=[{'app':_0x520f('0xc'),'appdata':'CDR(type)=internal'}];if(_0x38fef5[_0x520f('0x1d')]&&_['includes'](_0x160138,_0x38fef5[_0x520f('0x1d')])){_0x40fb6e[_0x520f('0xb')]({'app':_0x520f('0xc'),'appdata':_0x520f('0x1e')});_0x40fb6e[_0x520f('0xb')]({'app':_0x520f('0xc'),'appdata':util['format'](_0x520f('0x1f'),_0x38fef5[_0x520f('0x1d')])});_0x40fb6e[_0x520f('0xb')]({'app':_0x520f('0x20'),'appdata':util[_0x520f('0x16')](_0x520f('0x21'),_0x38fef5[_0x520f('0x17')])});}else{_0x40fb6e[_0x520f('0xb')]({'app':_0x520f('0x20'),'appdata':util[_0x520f('0x16')](_0x520f('0x22'),_0x38fef5[_0x520f('0x17')])});}_0x40fb6e['push']({'app':_0x520f('0x23')});for(var _0x50d4a2=0x0;_0x50d4a2<_0x40fb6e[_0x520f('0x5')];_0x50d4a2++){_0x40fb6e[_0x50d4a2][_0x520f('0x24')]=_0x50d4a2+0x1;_0x40fb6e[_0x50d4a2]=_[_0x520f('0x25')](_0x40fb6e[_0x50d4a2],_0x3c7d37);}return _0x40fb6e;};var getChanSpyPromise=function(_0x59acf4,_0x57ec7e){return new BPromise(function(_0x37b899,_0x40e137){return _0x59acf4[_0x520f('0x26')]['findAll']()[_0x520f('0x27')](function(_0x14a0e5){if(_0x14a0e5){var _0x581590=getChanSpyApplications(_0x57ec7e,_0x57ec7e[_0x520f('0x28')],_0x14a0e5);if(_0x57ec7e[_0x520f('0x28')]!=_0x57ec7e[_0x520f('0x17')]){_0x581590=_0x581590[_0x520f('0x29')](getChanSpyApplications(_0x57ec7e,_0x57ec7e['name'],_0x14a0e5));}return _0x37b899(_0x581590);}return _0x37b899([]);})[_0x520f('0x2a')](function(_0x17bcfb){_0x40e137(_0x17bcfb);});});};module[_0x520f('0x2b')]=function(_0x37d072,_0x2c1902){var _0x3f2a4c=_0x37d072[_0x520f('0x2c')];return _0x37d072[_0x520f('0x2d')]('User',attributes,{'tableName':_0x520f('0x2e'),'charset':'utf8','collate':_0x520f('0x2f'),'hooks':{'beforeCreate':function(_0x120da6,_0x1e944b,_0x3bfa70){var _0x511410=typeof _0x120da6[_0x520f('0x30')]===_0x520f('0x31')?BPromise['resolve'](null):_0x3f2a4c[_0x520f('0x32')]['find']({'where':{'id':_0x120da6[_0x520f('0x30')]}});_0x511410[_0x520f('0x27')](function(_0x52cb72){if(_0x52cb72){_0x120da6[_0x520f('0x33')]=_0x52cb72[_0x520f('0x33')];}})[_0x520f('0x27')](function(){_0x120da6['updateMd5Password']();_0x120da6[_0x520f('0x34')](_0x3bfa70);})['catch'](function(_0xb18dbf){_0x3bfa70(_0xb18dbf);});},'beforeUpdate':function(_0x4daff5,_0x2a3e73,_0x331c11){Promise['resolve']()[_0x520f('0x27')](function(){if(_0x4daff5['changed'](_0x520f('0x30'))===![])return;return _0x3f2a4c[_0x520f('0x32')][_0x520f('0x35')]({'where':{'id':_0x4daff5[_0x520f('0x30')]}})[_0x520f('0x27')](function(_0x4128e5){if(_0x4128e5)_0x4daff5[_0x520f('0x33')]=_0x4128e5[_0x520f('0x33')];return;});})['then'](function(){if(_0x4daff5[_0x520f('0x36')](_0x520f('0x14'))){_0x4daff5[_0x520f('0x37')]();return _0x4daff5['updatePassword'](_0x331c11);}_0x331c11();})[_0x520f('0x2a')](function(_0x354408){_0x331c11(_0x354408);});},'afterCreate':function(_0x12c1f3,_0x2fa1e6,_0x25a7a9){var _0x128537=getUserApplications(_0x12c1f3,_0x12c1f3[_0x520f('0x28')]);if(_0x12c1f3[_0x520f('0x28')]!=_0x12c1f3['name']){_0x128537=_0x128537[_0x520f('0x29')](getUserApplications(_0x12c1f3,_0x12c1f3['name']));}return _0x3f2a4c[_0x520f('0x38')][_0x520f('0x39')](_0x128537)[_0x520f('0x27')](function(){if(_0x12c1f3[_0x520f('0xe')]){return getChanSpyPromise(_0x3f2a4c,_0x12c1f3);}})[_0x520f('0x27')](function(_0x1f8308){if(_0x1f8308&&_0x1f8308[_0x520f('0x5')]){return _0x3f2a4c[_0x520f('0x38')]['bulkCreate'](_0x1f8308);}})[_0x520f('0x27')](function(){_0x25a7a9();})[_0x520f('0x2a')](function(_0x3d0978){_0x25a7a9(_0x3d0978);});},'afterUpdate':function(_0x158cc6,_0x3a864b,_0x3868c9){return BPromise[_0x520f('0x3a')]()['then'](function(){if(_0x158cc6['changed'](_0x520f('0xe'))||_0x158cc6[_0x520f('0x36')]('context')){return _0x3f2a4c[_0x520f('0x38')][_0x520f('0x3b')]({'where':{'UserId':_0x158cc6['id'],'type':_0x520f('0x8'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x158cc6[_0x520f('0xe')]){return getChanSpyPromise(_0x3f2a4c,_0x158cc6)[_0x520f('0x27')](function(_0x3283d1){if(_0x3283d1&&_0x3283d1['length']){return _0x3f2a4c[_0x520f('0x38')]['bulkCreate'](_0x3283d1);}});}});}})[_0x520f('0x27')](function(){if(_0x158cc6[_0x520f('0x36')]('extensionMonitor')||_0x158cc6[_0x520f('0x36')](_0x520f('0x6'))){return _0x3f2a4c['VoiceExtension'][_0x520f('0x3b')]({'where':{'UserId':_0x158cc6['id'],'type':'system','ChanSpyId':null}})[_0x520f('0x27')](function(){var _0x5af42f=getUserApplications(_0x158cc6,_0x158cc6['internal']);if(_0x158cc6[_0x520f('0x28')]!=_0x158cc6[_0x520f('0x17')]){_0x5af42f=_0x5af42f[_0x520f('0x29')](getUserApplications(_0x158cc6,_0x158cc6[_0x520f('0x17')]));}return _0x3f2a4c['VoiceExtension'][_0x520f('0x39')](_0x5af42f);});}})[_0x520f('0x27')](function(){_0x3868c9();})['catch'](function(_0x4b3b61){_0x3868c9(_0x4b3b61);});},'afterDestroy':function(_0x545ff3,_0x38b156){return _0x3f2a4c[_0x520f('0x38')]['destroy']({'where':{'UserId':_0x545ff3['id'],'type':_0x520f('0x8')}});}},'instanceMethods':{'authenticate':function(_0x13e1b4,_0x28f63b){if(!_0x28f63b){return this[_0x520f('0x14')]===this[_0x520f('0x3c')](_0x13e1b4);}var _0x583faf=this;this[_0x520f('0x3c')](_0x13e1b4,function(_0x720cb4,_0x8b3a0c){if(_0x720cb4){_0x28f63b(_0x720cb4);}if(_0x583faf[_0x520f('0x14')]===_0x8b3a0c){_0x28f63b(null,!![]);}else{_0x28f63b(null,![]);}});},'makeSalt':function(_0x573d43,_0x46faf7){var _0x5929f0=0x10;if(typeof arguments[0x0]===_0x520f('0x3d')){_0x46faf7=arguments[0x0];_0x573d43=_0x5929f0;}else if(typeof arguments[0x1]===_0x520f('0x3d')){_0x46faf7=arguments[0x1];}else{throw new Error(_0x520f('0x3e'));}if(!_0x573d43){_0x573d43=_0x5929f0;}return crypto[_0x520f('0x3f')](_0x573d43,function(_0x3a71c2,_0x36fe50){if(_0x3a71c2){_0x46faf7(_0x3a71c2);}return _0x46faf7(null,_0x36fe50[_0x520f('0x40')](_0x520f('0x41')));});},'encryptPassword':function(_0x1c8aba,_0x3cd803){if(!_0x1c8aba||!this[_0x520f('0x42')]){return _0x3cd803?_0x3cd803(null):null;}var _0x4c166b=0x2710;var _0x4dc71e=0x40;var _0x592141=new Buffer(this[_0x520f('0x42')],'base64');if(!_0x3cd803){return crypto[_0x520f('0x43')](_0x1c8aba,_0x592141,_0x4c166b,_0x4dc71e,_0x520f('0x44'))[_0x520f('0x40')](_0x520f('0x41'));}return crypto[_0x520f('0x45')](_0x1c8aba,_0x592141,_0x4c166b,_0x4dc71e,_0x520f('0x44'),function(_0x59a328,_0x2b8818){if(_0x59a328){_0x3cd803(_0x59a328);}return _0x3cd803(null,_0x2b8818[_0x520f('0x40')](_0x520f('0x41')));});},'updatePassword':function(_0x5cd48a){if(!this[_0x520f('0x14')]){return _0x5cd48a(null);}if(!validatePresenceOf(this[_0x520f('0x14')])&&authTypes[_0x520f('0x46')](this[_0x520f('0x47')])===-0x1){_0x5cd48a(new Error(_0x520f('0x48')));}var _0x330069=this;this[_0x520f('0x49')](function(_0xc5d006,_0x4441a9){if(_0xc5d006){return _0x5cd48a(_0xc5d006);}_0x330069['salt']=_0x4441a9;_0x330069[_0x520f('0x3c')](_0x330069['password'],function(_0x46595b,_0x5b6d3f){if(_0x46595b){_0x5cd48a(_0x46595b);}_0x330069[_0x520f('0x14')]=_0x5b6d3f;_0x5cd48a(null);});});},'updateMd5Password':function(){this[_0x520f('0x4a')]=md5(this[_0x520f('0x17')]+_0x520f('0x4b')+this['password']);return this[_0x520f('0x4a')];}}});};