Built motion from commit 775e2a94.|2.6.3
[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 _0xf6ae=['CDR(type)=internal','includes','extensionMonitor','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','Hangup','defaults','VoiceChanSpy','findAll','internal','concat','catch','exports','models','define','User','utf8_bin','userProfileId','find','then','privacyEnabled','updatePassword','resolve','changed','UserProfile','updateMd5Password','userSetting','VoiceExtension','bulkCreate','length','destroy','encryptPassword','function','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret','bluebird','util','lodash','./user.attributes','google','context','from-sip','format','prefix','push','merge','CDR(type)=%s','chanspy','record','MixMonitor','recordingFormat','auth','password','ChanSpy','SIP/%s,%s','name','options','StopMixMonitor','wav','WAV','system','Set'];(function(_0x38ced4,_0x24263f){var _0x547c07=function(_0x279fc4){while(--_0x279fc4){_0x38ced4['push'](_0x38ced4['shift']());}};_0x547c07(++_0x24263f);}(_0xf6ae,0x152));var _0xef6a=function(_0x44ae1b,_0x3262f5){_0x44ae1b=_0x44ae1b-0x0;var _0x2407e7=_0xf6ae[_0x44ae1b];return _0x2407e7;};'use strict';var BPromise=require(_0xef6a('0x0'));var crypto=require('crypto');var util=require(_0xef6a('0x1'));var md5=require('md5');var _=require(_0xef6a('0x2'));var attributes=require(_0xef6a('0x3'));var authTypes=[_0xef6a('0x4')];var validatePresenceOf=function(_0x521dee){return _0x521dee&&_0x521dee['length'];};var getChanSpyApplications=function(_0x43e208,_0x301797,_0x23c34b){var _0x5d3204={'context':_0x43e208[_0xef6a('0x5')]||_0xef6a('0x6'),'type':'system','isApp':![],'UserId':_0x43e208['id']};var _0x522129=[];for(var _0x1fd2d8=0x0,_0x588a0c=0x1;_0x1fd2d8<_0x23c34b['length'];_0x1fd2d8++,_0x588a0c=0x1){var _0x158aa6={'exten':util[_0xef6a('0x7')]('%s%s',_0x23c34b[_0x1fd2d8][_0xef6a('0x8')],_0x301797),'ChanSpyId':_0x23c34b[_0x1fd2d8]['id']};_0x522129[_0xef6a('0x9')](_[_0xef6a('0xa')]({'app':'Set','appdata':util['format'](_0xef6a('0xb'),_0xef6a('0xc')),'priority':_0x588a0c++},_0x5d3204,_0x158aa6));if(_0x23c34b[_0x1fd2d8][_0xef6a('0xd')]){_0x522129[_0xef6a('0x9')](_[_0xef6a('0xa')]({'app':_0xef6a('0xe'),'appdata':util[_0xef6a('0x7')]('${UNIQUEID}.%s,a',_0x23c34b[_0x1fd2d8][_0xef6a('0xf')]),'priority':_0x588a0c++},_0x5d3204,_0x158aa6));}if(_0x23c34b[_0x1fd2d8][_0xef6a('0x10')]){_0x522129['push'](_[_0xef6a('0xa')]({'app':'Authenticate','appdata':_0x23c34b[_0x1fd2d8][_0xef6a('0x11')],'priority':_0x588a0c++},_0x5d3204,_0x158aa6));}_0x522129[_0xef6a('0x9')](_[_0xef6a('0xa')]({'app':_0xef6a('0x12'),'appdata':util['format'](_0xef6a('0x13'),_0x43e208[_0xef6a('0x14')],_0x23c34b[_0x1fd2d8][_0xef6a('0x15')]?_0x23c34b[_0x1fd2d8][_0xef6a('0x15')]['join'](''):''),'priority':_0x588a0c++},_0x5d3204,_0x158aa6));if(_0x23c34b[_0x1fd2d8][_0xef6a('0xd')]){_0x522129['push'](_['merge']({'app':_0xef6a('0x16'),'priority':_0x588a0c++},_0x5d3204,_0x158aa6));}}return _0x522129;};var getUserApplications=function(_0x5da07b,_0x12726e){var _0xea0695=[_0xef6a('0x17'),_0xef6a('0x18'),'gsm'];var _0x2fa2cc={'context':_0x5da07b[_0xef6a('0x5')]||_0xef6a('0x6'),'exten':_0x12726e,'type':_0xef6a('0x19'),'isApp':![],'UserId':_0x5da07b['id']};var _0x4d0165=[{'app':_0xef6a('0x1a'),'appdata':_0xef6a('0x1b')}];if(_0x5da07b['extensionMonitor']&&_[_0xef6a('0x1c')](_0xea0695,_0x5da07b[_0xef6a('0x1d')])){_0x4d0165['push']({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x4d0165[_0xef6a('0x9')]({'app':_0xef6a('0x1a'),'appdata':util[_0xef6a('0x7')](_0xef6a('0x1e'),_0x5da07b[_0xef6a('0x1d')])});_0x4d0165[_0xef6a('0x9')]({'app':'Dial','appdata':util['format'](_0xef6a('0x1f'),_0x5da07b[_0xef6a('0x14')])});}else{_0x4d0165['push']({'app':_0xef6a('0x20'),'appdata':util[_0xef6a('0x7')]('SIP/%s,,tTxX',_0x5da07b[_0xef6a('0x14')])});}_0x4d0165['push']({'app':_0xef6a('0x21')});for(var _0x20a371=0x0;_0x20a371<_0x4d0165['length'];_0x20a371++){_0x4d0165[_0x20a371]['priority']=_0x20a371+0x1;_0x4d0165[_0x20a371]=_[_0xef6a('0x22')](_0x4d0165[_0x20a371],_0x2fa2cc);}return _0x4d0165;};var getChanSpyPromise=function(_0x465c41,_0x3a930e){return new BPromise(function(_0x35c4e9,_0x110a47){return _0x465c41[_0xef6a('0x23')][_0xef6a('0x24')]()['then'](function(_0x1f1151){if(_0x1f1151){var _0x1412e4=getChanSpyApplications(_0x3a930e,_0x3a930e[_0xef6a('0x25')],_0x1f1151);if(_0x3a930e[_0xef6a('0x25')]!=_0x3a930e['name']){_0x1412e4=_0x1412e4[_0xef6a('0x26')](getChanSpyApplications(_0x3a930e,_0x3a930e[_0xef6a('0x14')],_0x1f1151));}return _0x35c4e9(_0x1412e4);}return _0x35c4e9([]);})[_0xef6a('0x27')](function(_0x272538){_0x110a47(_0x272538);});});};module[_0xef6a('0x28')]=function(_0x58517b){var _0x4927cf=_0x58517b[_0xef6a('0x29')];return _0x58517b[_0xef6a('0x2a')](_0xef6a('0x2b'),attributes,{'tableName':'users','charset':'utf8','collate':_0xef6a('0x2c'),'hooks':{'beforeCreate':function(_0x36390d,_0x1e3e32,_0x94ea09){var _0x5cbfd6=typeof _0x36390d[_0xef6a('0x2d')]==='undefined'?BPromise['resolve'](null):_0x4927cf['UserProfile'][_0xef6a('0x2e')]({'where':{'id':_0x36390d[_0xef6a('0x2d')]}});_0x5cbfd6[_0xef6a('0x2f')](function(_0x1c1fc1){if(_0x1c1fc1){_0x36390d[_0xef6a('0x30')]=_0x1c1fc1[_0xef6a('0x30')];}})[_0xef6a('0x2f')](function(){_0x36390d['updateMd5Password']();_0x36390d[_0xef6a('0x31')](_0x94ea09);})[_0xef6a('0x27')](function(_0x2ab37c){_0x94ea09(_0x2ab37c);});},'beforeUpdate':function(_0x5eeb41,_0x1ab40a,_0x1f2430){Promise[_0xef6a('0x32')]()[_0xef6a('0x2f')](function(){if(_0x5eeb41[_0xef6a('0x33')](_0xef6a('0x2d'))===![])return;return _0x4927cf[_0xef6a('0x34')][_0xef6a('0x2e')]({'where':{'id':_0x5eeb41[_0xef6a('0x2d')]}})[_0xef6a('0x2f')](function(_0xc6cca7){if(_0xc6cca7)_0x5eeb41['privacyEnabled']=_0xc6cca7[_0xef6a('0x30')];return;});})[_0xef6a('0x2f')](function(){if(_0x5eeb41['changed'](_0xef6a('0x11'))){_0x5eeb41[_0xef6a('0x35')]();return _0x5eeb41[_0xef6a('0x31')](_0x1f2430);}_0x1f2430();})[_0xef6a('0x27')](function(_0x12524c){_0x1f2430(_0x12524c);});},'afterCreate':function(_0x115e89,_0x42a774,_0x2ebe66){var _0x487406=getUserApplications(_0x115e89,_0x115e89[_0xef6a('0x25')]);if(_0x115e89[_0xef6a('0x25')]!=_0x115e89['name']){_0x487406=_0x487406['concat'](getUserApplications(_0x115e89,_0x115e89['name']));}return Promise[_0xef6a('0x32')]()[_0xef6a('0x2f')](function(){if(!_0x115e89[_0xef6a('0x36')]){return _0x115e89['createUserSetting']({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})['then'](function(){return _0x4927cf['VoiceExtension']['bulkCreate'](_0x487406);})[_0xef6a('0x2f')](function(){if(_0x115e89[_0xef6a('0xc')]){return getChanSpyPromise(_0x4927cf,_0x115e89);}})['then'](function(_0x329088){if(_0x329088&&_0x329088['length']){return _0x4927cf[_0xef6a('0x37')][_0xef6a('0x38')](_0x329088);}})[_0xef6a('0x2f')](function(){_0x2ebe66();})[_0xef6a('0x27')](function(_0x4fa5c5){_0x2ebe66(_0x4fa5c5);});},'afterUpdate':function(_0x5c113d,_0x45654f,_0x356e2e){return BPromise[_0xef6a('0x32')]()['then'](function(){if(_0x5c113d[_0xef6a('0x33')](_0xef6a('0xc'))||_0x5c113d[_0xef6a('0x33')](_0xef6a('0x5'))){return _0x4927cf[_0xef6a('0x37')]['destroy']({'where':{'UserId':_0x5c113d['id'],'type':_0xef6a('0x19'),'ChanSpyId':{'$ne':null}}})[_0xef6a('0x2f')](function(){if(_0x5c113d[_0xef6a('0xc')]){return getChanSpyPromise(_0x4927cf,_0x5c113d)[_0xef6a('0x2f')](function(_0x17c074){if(_0x17c074&&_0x17c074[_0xef6a('0x39')]){return _0x4927cf[_0xef6a('0x37')][_0xef6a('0x38')](_0x17c074);}});}});}})[_0xef6a('0x2f')](function(){if(_0x5c113d[_0xef6a('0x33')](_0xef6a('0x1d'))||_0x5c113d['changed']('context')){return _0x4927cf[_0xef6a('0x37')][_0xef6a('0x3a')]({'where':{'UserId':_0x5c113d['id'],'type':'system','ChanSpyId':null}})['then'](function(){var _0x47a090=getUserApplications(_0x5c113d,_0x5c113d[_0xef6a('0x25')]);if(_0x5c113d[_0xef6a('0x25')]!=_0x5c113d[_0xef6a('0x14')]){_0x47a090=_0x47a090['concat'](getUserApplications(_0x5c113d,_0x5c113d[_0xef6a('0x14')]));}return _0x4927cf[_0xef6a('0x37')]['bulkCreate'](_0x47a090);});}})[_0xef6a('0x2f')](function(){_0x356e2e();})[_0xef6a('0x27')](function(_0x242e9c){_0x356e2e(_0x242e9c);});},'afterDestroy':function(_0x2953e2){return _0x4927cf['VoiceExtension'][_0xef6a('0x3a')]({'where':{'UserId':_0x2953e2['id'],'type':_0xef6a('0x19')}});}},'instanceMethods':{'authenticate':function(_0x249a15,_0x5c40c4){if(!_0x5c40c4){return this[_0xef6a('0x11')]===this[_0xef6a('0x3b')](_0x249a15);}var _0x5d3abb=this;this[_0xef6a('0x3b')](_0x249a15,function(_0x349959,_0x4f1551){if(_0x349959){_0x5c40c4(_0x349959);}if(_0x5d3abb['password']===_0x4f1551){_0x5c40c4(null,!![]);}else{_0x5c40c4(null,![]);}});},'makeSalt':function(_0x4fd735,_0x4f5221){var _0x5bf7a4=0x10;if(typeof arguments[0x0]===_0xef6a('0x3c')){_0x4f5221=arguments[0x0];_0x4fd735=_0x5bf7a4;}else if(typeof arguments[0x1]==='function'){_0x4f5221=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x4fd735){_0x4fd735=_0x5bf7a4;}return crypto[_0xef6a('0x3d')](_0x4fd735,function(_0x4dc790,_0x4966bb){if(_0x4dc790){_0x4f5221(_0x4dc790);}return _0x4f5221(null,_0x4966bb[_0xef6a('0x3e')](_0xef6a('0x3f')));});},'encryptPassword':function(_0x3112f8,_0x723c0c){if(!_0x3112f8||!this[_0xef6a('0x40')]){return _0x723c0c?_0x723c0c(null):null;}var _0x2ca730=0x2710;var _0x2d4e85=0x40;var _0x46ba63=new Buffer(this[_0xef6a('0x40')],_0xef6a('0x3f'));if(!_0x723c0c){return crypto[_0xef6a('0x41')](_0x3112f8,_0x46ba63,_0x2ca730,_0x2d4e85,_0xef6a('0x42'))[_0xef6a('0x3e')](_0xef6a('0x3f'));}return crypto[_0xef6a('0x43')](_0x3112f8,_0x46ba63,_0x2ca730,_0x2d4e85,_0xef6a('0x42'),function(_0x4c5042,_0x910b16){if(_0x4c5042){_0x723c0c(_0x4c5042);}return _0x723c0c(null,_0x910b16[_0xef6a('0x3e')](_0xef6a('0x3f')));});},'updatePassword':function(_0x1a208b){if(!this[_0xef6a('0x11')]){return _0x1a208b(null);}if(!validatePresenceOf(this[_0xef6a('0x11')])&&authTypes[_0xef6a('0x44')](this[_0xef6a('0x45')])===-0x1){_0x1a208b(new Error(_0xef6a('0x46')));}var _0x3db4e9=this;this[_0xef6a('0x47')](function(_0x441123,_0x33c996){if(_0x441123){return _0x1a208b(_0x441123);}_0x3db4e9[_0xef6a('0x40')]=_0x33c996;_0x3db4e9[_0xef6a('0x3b')](_0x3db4e9[_0xef6a('0x11')],function(_0x2fdb86,_0x431a46){if(_0x2fdb86){_0x1a208b(_0x2fdb86);}_0x3db4e9[_0xef6a('0x11')]=_0x431a46;_0x1a208b(null);});});},'updateMd5Password':function(){this[_0xef6a('0x48')]=md5(this['name']+':asterisk:'+this[_0xef6a('0x11')]);return this[_0xef6a('0x48')];}}});};