Built motion from commit (unavailable).|2.4.17
[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 _0x33dd=['users','utf8','utf8_bin','updateMd5Password','password','updatePassword','bulkCreate','then','VoiceExtension','resolve','changed','encryptPassword','Missing\x20Callback','randomBytes','salt','pbkdf2Sync','sha1','toString','base64','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret','bluebird','crypto','md5','lodash','google','context','system','length','prefix','push','merge','format','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,ab','recordingFormat','Authenticate','ChanSpy','SIP/%s,%s','name','options','wav','gsm','from-sip','Set','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','SIP/%s,,tTxX','Hangup','defaults','VoiceChanSpy','internal','concat','catch','exports','models','User'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x33dd,0xe5));var _0xd33d=function(_0x5c8e8d,_0x12d353){_0x5c8e8d=_0x5c8e8d-0x0;var _0x44bcf8=_0x33dd[_0x5c8e8d];return _0x44bcf8;};'use strict';var BPromise=require(_0xd33d('0x0'));var crypto=require(_0xd33d('0x1'));var util=require('util');var md5=require(_0xd33d('0x2'));var _=require(_0xd33d('0x3'));var attributes=require('./user.attributes');var authTypes=[_0xd33d('0x4')];var validatePresenceOf=function(_0x4d4cf0){return _0x4d4cf0&&_0x4d4cf0['length'];};var getChanSpyApplications=function(_0x5b1ae2,_0x1970b6,_0x41f8b0){var _0x261b58={'context':_0x5b1ae2[_0xd33d('0x5')]||'from-sip','type':_0xd33d('0x6'),'isApp':![],'UserId':_0x5b1ae2['id']};var _0x21e6f5=[];for(var _0x38be7c=0x0,_0x416371=0x1;_0x38be7c<_0x41f8b0[_0xd33d('0x7')];_0x38be7c++,_0x416371=0x1){var _0x198cbe={'exten':util['format']('%s%s',_0x41f8b0[_0x38be7c][_0xd33d('0x8')],_0x1970b6),'ChanSpyId':_0x41f8b0[_0x38be7c]['id']};_0x21e6f5[_0xd33d('0x9')](_[_0xd33d('0xa')]({'app':'Set','appdata':util[_0xd33d('0xb')](_0xd33d('0xc'),_0xd33d('0xd')),'priority':_0x416371++},_0x261b58,_0x198cbe));if(_0x41f8b0[_0x38be7c][_0xd33d('0xe')]){_0x21e6f5['push'](_[_0xd33d('0xa')]({'app':_0xd33d('0xf'),'appdata':util[_0xd33d('0xb')](_0xd33d('0x10'),_0x41f8b0[_0x38be7c][_0xd33d('0x11')]),'priority':_0x416371++},_0x261b58,_0x198cbe));}if(_0x41f8b0[_0x38be7c]['auth']){_0x21e6f5[_0xd33d('0x9')](_['merge']({'app':_0xd33d('0x12'),'appdata':_0x41f8b0[_0x38be7c]['password'],'priority':_0x416371++},_0x261b58,_0x198cbe));}_0x21e6f5[_0xd33d('0x9')](_[_0xd33d('0xa')]({'app':_0xd33d('0x13'),'appdata':util[_0xd33d('0xb')](_0xd33d('0x14'),_0x5b1ae2[_0xd33d('0x15')],_0x41f8b0[_0x38be7c][_0xd33d('0x16')]?_0x41f8b0[_0x38be7c][_0xd33d('0x16')]['join'](''):''),'priority':_0x416371++},_0x261b58,_0x198cbe));if(_0x41f8b0[_0x38be7c][_0xd33d('0xe')]){_0x21e6f5['push'](_[_0xd33d('0xa')]({'app':'StopMixMonitor','priority':_0x416371++},_0x261b58,_0x198cbe));}}return _0x21e6f5;};var getUserApplications=function(_0x4be89a,_0x53cb96){var _0x58d053=[_0xd33d('0x17'),'WAV',_0xd33d('0x18')];var _0x355986={'context':_0x4be89a[_0xd33d('0x5')]||_0xd33d('0x19'),'exten':_0x53cb96,'type':'system','isApp':![],'UserId':_0x4be89a['id']};var _0x43f7af=[{'app':_0xd33d('0x1a'),'appdata':'CDR(type)=internal'}];if(_0x4be89a[_0xd33d('0x1b')]&&_[_0xd33d('0x1c')](_0x58d053,_0x4be89a['extensionMonitor'])){_0x43f7af[_0xd33d('0x9')]({'app':_0xd33d('0x1a'),'appdata':_0xd33d('0x1d')});_0x43f7af[_0xd33d('0x9')]({'app':_0xd33d('0x1a'),'appdata':util['format'](_0xd33d('0x1e'),_0x4be89a['extensionMonitor'])});_0x43f7af[_0xd33d('0x9')]({'app':'Dial','appdata':util['format'](_0xd33d('0x1f'),_0x4be89a[_0xd33d('0x15')])});}else{_0x43f7af[_0xd33d('0x9')]({'app':_0xd33d('0x20'),'appdata':util[_0xd33d('0xb')](_0xd33d('0x21'),_0x4be89a['name'])});}_0x43f7af[_0xd33d('0x9')]({'app':_0xd33d('0x22')});for(var _0x5ba363=0x0;_0x5ba363<_0x43f7af['length'];_0x5ba363++){_0x43f7af[_0x5ba363]['priority']=_0x5ba363+0x1;_0x43f7af[_0x5ba363]=_[_0xd33d('0x23')](_0x43f7af[_0x5ba363],_0x355986);}return _0x43f7af;};var getChanSpyPromise=function(_0x1138f9,_0x375ee5){return new BPromise(function(_0x2e8a18,_0x543199){return _0x1138f9[_0xd33d('0x24')]['findAll']()['then'](function(_0x2e213){if(_0x2e213){var _0x13f866=getChanSpyApplications(_0x375ee5,_0x375ee5[_0xd33d('0x25')],_0x2e213);if(_0x375ee5[_0xd33d('0x25')]!=_0x375ee5['name']){_0x13f866=_0x13f866[_0xd33d('0x26')](getChanSpyApplications(_0x375ee5,_0x375ee5[_0xd33d('0x15')],_0x2e213));}return _0x2e8a18(_0x13f866);}return _0x2e8a18([]);})[_0xd33d('0x27')](function(_0x5c61c9){_0x543199(_0x5c61c9);});});};module[_0xd33d('0x28')]=function(_0x44ff28,_0x142095){var _0x126bcd=_0x44ff28[_0xd33d('0x29')];return _0x44ff28['define'](_0xd33d('0x2a'),attributes,{'tableName':_0xd33d('0x2b'),'charset':_0xd33d('0x2c'),'collate':_0xd33d('0x2d'),'hooks':{'beforeCreate':function(_0x55d20f,_0x102bf7,_0x461e2e){_0x55d20f[_0xd33d('0x2e')]();_0x55d20f['updatePassword'](_0x461e2e);},'beforeUpdate':function(_0x5a4275,_0x1c023a,_0x4911a7){if(_0x5a4275['changed'](_0xd33d('0x2f'))){_0x5a4275[_0xd33d('0x2e')]();return _0x5a4275[_0xd33d('0x30')](_0x4911a7);}_0x4911a7();},'afterCreate':function(_0x4b8779,_0x41060f,_0x2f765e){var _0x2ce221=getUserApplications(_0x4b8779,_0x4b8779[_0xd33d('0x25')]);if(_0x4b8779[_0xd33d('0x25')]!=_0x4b8779[_0xd33d('0x15')]){_0x2ce221=_0x2ce221['concat'](getUserApplications(_0x4b8779,_0x4b8779['name']));}return _0x126bcd['VoiceExtension'][_0xd33d('0x31')](_0x2ce221)['then'](function(){if(_0x4b8779[_0xd33d('0xd')]){return getChanSpyPromise(_0x126bcd,_0x4b8779);}})[_0xd33d('0x32')](function(_0x4853b1){if(_0x4853b1&&_0x4853b1[_0xd33d('0x7')]){return _0x126bcd[_0xd33d('0x33')][_0xd33d('0x31')](_0x4853b1);}})[_0xd33d('0x32')](function(){_0x2f765e();})[_0xd33d('0x27')](function(_0x325d4d){_0x2f765e(_0x325d4d);});},'afterUpdate':function(_0x32175b,_0x22d720,_0x11a35a){return BPromise[_0xd33d('0x34')]()[_0xd33d('0x32')](function(){if(_0x32175b[_0xd33d('0x35')](_0xd33d('0xd'))||_0x32175b[_0xd33d('0x35')](_0xd33d('0x5'))){return _0x126bcd['VoiceExtension']['destroy']({'where':{'UserId':_0x32175b['id'],'type':_0xd33d('0x6'),'ChanSpyId':{'$ne':null}}})[_0xd33d('0x32')](function(){if(_0x32175b[_0xd33d('0xd')]){return getChanSpyPromise(_0x126bcd,_0x32175b)['then'](function(_0x2da5ee){if(_0x2da5ee&&_0x2da5ee[_0xd33d('0x7')]){return _0x126bcd[_0xd33d('0x33')][_0xd33d('0x31')](_0x2da5ee);}});}});}})[_0xd33d('0x32')](function(){if(_0x32175b[_0xd33d('0x35')](_0xd33d('0x1b'))||_0x32175b['changed'](_0xd33d('0x5'))){return _0x126bcd[_0xd33d('0x33')]['destroy']({'where':{'UserId':_0x32175b['id'],'type':'system','ChanSpyId':null}})['then'](function(){var _0x47531c=getUserApplications(_0x32175b,_0x32175b[_0xd33d('0x25')]);if(_0x32175b[_0xd33d('0x25')]!=_0x32175b[_0xd33d('0x15')]){_0x47531c=_0x47531c[_0xd33d('0x26')](getUserApplications(_0x32175b,_0x32175b[_0xd33d('0x15')]));}return _0x126bcd[_0xd33d('0x33')][_0xd33d('0x31')](_0x47531c);});}})[_0xd33d('0x32')](function(){_0x11a35a();})['catch'](function(_0x4e997d){_0x11a35a(_0x4e997d);});},'afterDestroy':function(_0x26ada7,_0x53212b){return _0x126bcd[_0xd33d('0x33')]['destroy']({'where':{'UserId':_0x26ada7['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0xa7cf93,_0x264ee0){if(!_0x264ee0){return this[_0xd33d('0x2f')]===this[_0xd33d('0x36')](_0xa7cf93);}var _0x164c71=this;this[_0xd33d('0x36')](_0xa7cf93,function(_0x11f60e,_0x389024){if(_0x11f60e){_0x264ee0(_0x11f60e);}if(_0x164c71['password']===_0x389024){_0x264ee0(null,!![]);}else{_0x264ee0(null,![]);}});},'makeSalt':function(_0x55e494,_0x9605c9){var _0x301a63=0x10;if(typeof arguments[0x0]==='function'){_0x9605c9=arguments[0x0];_0x55e494=_0x301a63;}else if(typeof arguments[0x1]==='function'){_0x9605c9=arguments[0x1];}else{throw new Error(_0xd33d('0x37'));}if(!_0x55e494){_0x55e494=_0x301a63;}return crypto[_0xd33d('0x38')](_0x55e494,function(_0x5ce008,_0x492e3f){if(_0x5ce008){_0x9605c9(_0x5ce008);}return _0x9605c9(null,_0x492e3f['toString']('base64'));});},'encryptPassword':function(_0x2fd482,_0x5ac645){if(!_0x2fd482||!this[_0xd33d('0x39')]){return _0x5ac645?_0x5ac645(null):null;}var _0x15e741=0x2710;var _0x5296ac=0x40;var _0x1e953c=new Buffer(this[_0xd33d('0x39')],'base64');if(!_0x5ac645){return crypto[_0xd33d('0x3a')](_0x2fd482,_0x1e953c,_0x15e741,_0x5296ac,_0xd33d('0x3b'))[_0xd33d('0x3c')](_0xd33d('0x3d'));}return crypto[_0xd33d('0x3e')](_0x2fd482,_0x1e953c,_0x15e741,_0x5296ac,_0xd33d('0x3b'),function(_0x4aba05,_0x566732){if(_0x4aba05){_0x5ac645(_0x4aba05);}return _0x5ac645(null,_0x566732['toString'](_0xd33d('0x3d')));});},'updatePassword':function(_0x38c0e1){if(!this[_0xd33d('0x2f')]){return _0x38c0e1(null);}if(!validatePresenceOf(this[_0xd33d('0x2f')])&&authTypes[_0xd33d('0x3f')](this[_0xd33d('0x40')])===-0x1){_0x38c0e1(new Error(_0xd33d('0x41')));}var _0xc214c1=this;this[_0xd33d('0x42')](function(_0x1ef190,_0xbed267){if(_0x1ef190){return _0x38c0e1(_0x1ef190);}_0xc214c1[_0xd33d('0x39')]=_0xbed267;_0xc214c1['encryptPassword'](_0xc214c1[_0xd33d('0x2f')],function(_0x59b7a6,_0x455a29){if(_0x59b7a6){_0x38c0e1(_0x59b7a6);}_0xc214c1[_0xd33d('0x2f')]=_0x455a29;_0x38c0e1(null);});});},'updateMd5Password':function(){this[_0xd33d('0x43')]=md5(this[_0xd33d('0x15')]+':asterisk:'+this[_0xd33d('0x2f')]);return this[_0xd33d('0x43')];}}});};