Built motion from commit 85328c08.|2.5.50
[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 _0x7500=['Hangup','priority','defaults','findAll','then','internal','concat','catch','models','define','User','users','utf8_bin','userProfileId','undefined','resolve','UserProfile','privacyEnabled','updateMd5Password','changed','find','updatePassword','createUserSetting','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','pbkdf2Sync','sha1','pbkdf2','toString','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','crypto','util','md5','lodash','./user.attributes','google','length','format','%s%s','prefix','push','chanspy','merge','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','SIP/%s,%s','name','options','record','wav','context','from-sip','system','Set','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)'];(function(_0x5d6280,_0x3f72ab){var _0x77b738=function(_0x1b8208){while(--_0x1b8208){_0x5d6280['push'](_0x5d6280['shift']());}};_0x77b738(++_0x3f72ab);}(_0x7500,0x1f2));var _0x0750=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x7500[_0x13d07a];return _0x5ee0ee;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x0750('0x0'));var util=require(_0x0750('0x1'));var md5=require(_0x0750('0x2'));var _=require(_0x0750('0x3'));var attributes=require(_0x0750('0x4'));var authTypes=[_0x0750('0x5')];var validatePresenceOf=function(_0x2c88cb){return _0x2c88cb&&_0x2c88cb[_0x0750('0x6')];};var getChanSpyApplications=function(_0x9252c7,_0x377647,_0x4de1c5){var _0x57c038={'context':_0x9252c7['context']||'from-sip','type':'system','isApp':![],'UserId':_0x9252c7['id']};var _0x22b0ba=[];for(var _0x18bfe5=0x0,_0x263a9e=0x1;_0x18bfe5<_0x4de1c5[_0x0750('0x6')];_0x18bfe5++,_0x263a9e=0x1){var _0x44e65b={'exten':util[_0x0750('0x7')](_0x0750('0x8'),_0x4de1c5[_0x18bfe5][_0x0750('0x9')],_0x377647),'ChanSpyId':_0x4de1c5[_0x18bfe5]['id']};_0x22b0ba[_0x0750('0xa')](_['merge']({'app':'Set','appdata':util[_0x0750('0x7')]('CDR(type)=%s',_0x0750('0xb')),'priority':_0x263a9e++},_0x57c038,_0x44e65b));if(_0x4de1c5[_0x18bfe5]['record']){_0x22b0ba[_0x0750('0xa')](_[_0x0750('0xc')]({'app':_0x0750('0xd'),'appdata':util[_0x0750('0x7')](_0x0750('0xe'),_0x4de1c5[_0x18bfe5][_0x0750('0xf')]),'priority':_0x263a9e++},_0x57c038,_0x44e65b));}if(_0x4de1c5[_0x18bfe5][_0x0750('0x10')]){_0x22b0ba[_0x0750('0xa')](_[_0x0750('0xc')]({'app':_0x0750('0x11'),'appdata':_0x4de1c5[_0x18bfe5][_0x0750('0x12')],'priority':_0x263a9e++},_0x57c038,_0x44e65b));}_0x22b0ba[_0x0750('0xa')](_[_0x0750('0xc')]({'app':'ChanSpy','appdata':util['format'](_0x0750('0x13'),_0x9252c7[_0x0750('0x14')],_0x4de1c5[_0x18bfe5]['options']?_0x4de1c5[_0x18bfe5][_0x0750('0x15')]['join'](''):''),'priority':_0x263a9e++},_0x57c038,_0x44e65b));if(_0x4de1c5[_0x18bfe5][_0x0750('0x16')]){_0x22b0ba[_0x0750('0xa')](_[_0x0750('0xc')]({'app':'StopMixMonitor','priority':_0x263a9e++},_0x57c038,_0x44e65b));}}return _0x22b0ba;};var getUserApplications=function(_0x50ad03,_0x235620){var _0xf7463e=[_0x0750('0x17'),'WAV','gsm'];var _0x3ab548={'context':_0x50ad03[_0x0750('0x18')]||_0x0750('0x19'),'exten':_0x235620,'type':_0x0750('0x1a'),'isApp':![],'UserId':_0x50ad03['id']};var _0x567fa7=[{'app':_0x0750('0x1b'),'appdata':_0x0750('0x1c')}];if(_0x50ad03[_0x0750('0x1d')]&&_[_0x0750('0x1e')](_0xf7463e,_0x50ad03[_0x0750('0x1d')])){_0x567fa7[_0x0750('0xa')]({'app':_0x0750('0x1b'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x567fa7[_0x0750('0xa')]({'app':_0x0750('0x1b'),'appdata':util['format'](_0x0750('0x1f'),_0x50ad03[_0x0750('0x1d')])});_0x567fa7[_0x0750('0xa')]({'app':_0x0750('0x20'),'appdata':util[_0x0750('0x7')](_0x0750('0x21'),_0x50ad03[_0x0750('0x14')])});}else{_0x567fa7[_0x0750('0xa')]({'app':_0x0750('0x20'),'appdata':util['format']('SIP/%s,,tTxX',_0x50ad03[_0x0750('0x14')])});}_0x567fa7[_0x0750('0xa')]({'app':_0x0750('0x22')});for(var _0x4b1b77=0x0;_0x4b1b77<_0x567fa7[_0x0750('0x6')];_0x4b1b77++){_0x567fa7[_0x4b1b77][_0x0750('0x23')]=_0x4b1b77+0x1;_0x567fa7[_0x4b1b77]=_[_0x0750('0x24')](_0x567fa7[_0x4b1b77],_0x3ab548);}return _0x567fa7;};var getChanSpyPromise=function(_0x43dbd0,_0x3018a2){return new BPromise(function(_0x1323d0,_0x4a2034){return _0x43dbd0['VoiceChanSpy'][_0x0750('0x25')]()[_0x0750('0x26')](function(_0xe7b9){if(_0xe7b9){var _0x3abac5=getChanSpyApplications(_0x3018a2,_0x3018a2[_0x0750('0x27')],_0xe7b9);if(_0x3018a2[_0x0750('0x27')]!=_0x3018a2[_0x0750('0x14')]){_0x3abac5=_0x3abac5[_0x0750('0x28')](getChanSpyApplications(_0x3018a2,_0x3018a2[_0x0750('0x14')],_0xe7b9));}return _0x1323d0(_0x3abac5);}return _0x1323d0([]);})[_0x0750('0x29')](function(_0x5ad2dc){_0x4a2034(_0x5ad2dc);});});};module['exports']=function(_0x2a1fc9){var _0x1390a5=_0x2a1fc9[_0x0750('0x2a')];return _0x2a1fc9[_0x0750('0x2b')](_0x0750('0x2c'),attributes,{'tableName':_0x0750('0x2d'),'charset':'utf8','collate':_0x0750('0x2e'),'hooks':{'beforeCreate':function(_0x205f13,_0xc9fbf3,_0x1a6119){var _0x17aced=typeof _0x205f13[_0x0750('0x2f')]===_0x0750('0x30')?BPromise[_0x0750('0x31')](null):_0x1390a5[_0x0750('0x32')]['find']({'where':{'id':_0x205f13[_0x0750('0x2f')]}});_0x17aced['then'](function(_0x1a8a5e){if(_0x1a8a5e){_0x205f13[_0x0750('0x33')]=_0x1a8a5e['privacyEnabled'];}})[_0x0750('0x26')](function(){_0x205f13[_0x0750('0x34')]();_0x205f13['updatePassword'](_0x1a6119);})[_0x0750('0x29')](function(_0x3658a2){_0x1a6119(_0x3658a2);});},'beforeUpdate':function(_0x1d7d8a,_0x549948,_0x129830){Promise['resolve']()['then'](function(){if(_0x1d7d8a[_0x0750('0x35')]('userProfileId')===![])return;return _0x1390a5[_0x0750('0x32')][_0x0750('0x36')]({'where':{'id':_0x1d7d8a[_0x0750('0x2f')]}})[_0x0750('0x26')](function(_0x159312){if(_0x159312)_0x1d7d8a[_0x0750('0x33')]=_0x159312[_0x0750('0x33')];return;});})[_0x0750('0x26')](function(){if(_0x1d7d8a[_0x0750('0x35')](_0x0750('0x12'))){_0x1d7d8a['updateMd5Password']();return _0x1d7d8a[_0x0750('0x37')](_0x129830);}_0x129830();})['catch'](function(_0x52e360){_0x129830(_0x52e360);});},'afterCreate':function(_0x2eed78,_0x26b5e7,_0x81f5f6){var _0x3736f1=getUserApplications(_0x2eed78,_0x2eed78[_0x0750('0x27')]);if(_0x2eed78['internal']!=_0x2eed78[_0x0750('0x14')]){_0x3736f1=_0x3736f1[_0x0750('0x28')](getUserApplications(_0x2eed78,_0x2eed78['name']));}return Promise['resolve']()[_0x0750('0x26')](function(){if(!_0x2eed78['userSetting']){return _0x2eed78[_0x0750('0x38')]({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})[_0x0750('0x26')](function(){return _0x1390a5[_0x0750('0x39')][_0x0750('0x3a')](_0x3736f1);})[_0x0750('0x26')](function(){if(_0x2eed78[_0x0750('0xb')]){return getChanSpyPromise(_0x1390a5,_0x2eed78);}})[_0x0750('0x26')](function(_0x10307f){if(_0x10307f&&_0x10307f[_0x0750('0x6')]){return _0x1390a5[_0x0750('0x39')][_0x0750('0x3a')](_0x10307f);}})[_0x0750('0x26')](function(){_0x81f5f6();})[_0x0750('0x29')](function(_0xe9349){_0x81f5f6(_0xe9349);});},'afterUpdate':function(_0x3ddd74,_0xa66eed,_0x130538){return BPromise['resolve']()[_0x0750('0x26')](function(){if(_0x3ddd74[_0x0750('0x35')](_0x0750('0xb'))||_0x3ddd74[_0x0750('0x35')](_0x0750('0x18'))){return _0x1390a5[_0x0750('0x39')][_0x0750('0x3b')]({'where':{'UserId':_0x3ddd74['id'],'type':_0x0750('0x1a'),'ChanSpyId':{'$ne':null}}})[_0x0750('0x26')](function(){if(_0x3ddd74[_0x0750('0xb')]){return getChanSpyPromise(_0x1390a5,_0x3ddd74)[_0x0750('0x26')](function(_0x2c5721){if(_0x2c5721&&_0x2c5721['length']){return _0x1390a5[_0x0750('0x39')][_0x0750('0x3a')](_0x2c5721);}});}});}})[_0x0750('0x26')](function(){if(_0x3ddd74[_0x0750('0x35')](_0x0750('0x1d'))||_0x3ddd74[_0x0750('0x35')](_0x0750('0x18'))){return _0x1390a5['VoiceExtension']['destroy']({'where':{'UserId':_0x3ddd74['id'],'type':_0x0750('0x1a'),'ChanSpyId':null}})['then'](function(){var _0x46fc03=getUserApplications(_0x3ddd74,_0x3ddd74[_0x0750('0x27')]);if(_0x3ddd74[_0x0750('0x27')]!=_0x3ddd74[_0x0750('0x14')]){_0x46fc03=_0x46fc03[_0x0750('0x28')](getUserApplications(_0x3ddd74,_0x3ddd74[_0x0750('0x14')]));}return _0x1390a5[_0x0750('0x39')][_0x0750('0x3a')](_0x46fc03);});}})[_0x0750('0x26')](function(){_0x130538();})[_0x0750('0x29')](function(_0x14d55f){_0x130538(_0x14d55f);});},'afterDestroy':function(_0x29568d){return _0x1390a5[_0x0750('0x39')][_0x0750('0x3b')]({'where':{'UserId':_0x29568d['id'],'type':_0x0750('0x1a')}});}},'instanceMethods':{'authenticate':function(_0x9b43ae,_0x319b7a){if(!_0x319b7a){return this[_0x0750('0x12')]===this[_0x0750('0x3c')](_0x9b43ae);}var _0x3949e4=this;this[_0x0750('0x3c')](_0x9b43ae,function(_0x2d3e19,_0x22cc65){if(_0x2d3e19){_0x319b7a(_0x2d3e19);}if(_0x3949e4['password']===_0x22cc65){_0x319b7a(null,!![]);}else{_0x319b7a(null,![]);}});},'makeSalt':function(_0x20f6da,_0x50e76d){var _0x4dd62e=0x10;if(typeof arguments[0x0]==='function'){_0x50e76d=arguments[0x0];_0x20f6da=_0x4dd62e;}else if(typeof arguments[0x1]===_0x0750('0x3d')){_0x50e76d=arguments[0x1];}else{throw new Error(_0x0750('0x3e'));}if(!_0x20f6da){_0x20f6da=_0x4dd62e;}return crypto[_0x0750('0x3f')](_0x20f6da,function(_0x5439ce,_0xeae6c8){if(_0x5439ce){_0x50e76d(_0x5439ce);}return _0x50e76d(null,_0xeae6c8['toString'](_0x0750('0x40')));});},'encryptPassword':function(_0x31f3ce,_0x4f2279){if(!_0x31f3ce||!this['salt']){return _0x4f2279?_0x4f2279(null):null;}var _0x36da62=0x2710;var _0x47e235=0x40;var _0x20c393=new Buffer(this[_0x0750('0x41')],_0x0750('0x40'));if(!_0x4f2279){return crypto[_0x0750('0x42')](_0x31f3ce,_0x20c393,_0x36da62,_0x47e235,_0x0750('0x43'))['toString'](_0x0750('0x40'));}return crypto[_0x0750('0x44')](_0x31f3ce,_0x20c393,_0x36da62,_0x47e235,_0x0750('0x43'),function(_0x73fa54,_0x2ef525){if(_0x73fa54){_0x4f2279(_0x73fa54);}return _0x4f2279(null,_0x2ef525[_0x0750('0x45')]('base64'));});},'updatePassword':function(_0x484834){if(!this[_0x0750('0x12')]){return _0x484834(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0x0750('0x46')](this[_0x0750('0x47')])===-0x1){_0x484834(new Error(_0x0750('0x48')));}var _0x1620ad=this;this[_0x0750('0x49')](function(_0x26eb9b,_0x2b7070){if(_0x26eb9b){return _0x484834(_0x26eb9b);}_0x1620ad[_0x0750('0x41')]=_0x2b7070;_0x1620ad[_0x0750('0x3c')](_0x1620ad[_0x0750('0x12')],function(_0x292aec,_0x210683){if(_0x292aec){_0x484834(_0x292aec);}_0x1620ad[_0x0750('0x12')]=_0x210683;_0x484834(null);});});},'updateMd5Password':function(){this[_0x0750('0x4a')]=md5(this[_0x0750('0x14')]+_0x0750('0x4b')+this[_0x0750('0x12')]);return this['md5secret'];}}});};