Built motion from commit f7863d46.|2.5.41
[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 _0x5fa8=['encryptPassword','function','Missing\x20Callback','randomBytes','base64','toString','pbkdf2','provider','Invalid\x20password','makeSalt','salt','md5secret',':asterisk:','bluebird','crypto','util','md5','./user.attributes','google','length','context','from-sip','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','Authenticate','password','ChanSpy','SIP/%s,%s','options','StopMixMonitor','wav','WAV','system','CDR(type)=internal','includes','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','SIP/%s,,tTxX','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','exports','models','define','users','userProfileId','resolve','UserProfile','find','privacyEnabled','updateMd5Password','catch','changed','updatePassword','VoiceExtension','bulkCreate','destroy'];(function(_0x3bc3b4,_0x5acff4){var _0x4c546b=function(_0x158717){while(--_0x158717){_0x3bc3b4['push'](_0x3bc3b4['shift']());}};_0x4c546b(++_0x5acff4);}(_0x5fa8,0x139));var _0x85fa=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x5fa8[_0x2641f9];return _0x585741;};'use strict';var BPromise=require(_0x85fa('0x0'));var crypto=require(_0x85fa('0x1'));var util=require(_0x85fa('0x2'));var md5=require(_0x85fa('0x3'));var _=require('lodash');var attributes=require(_0x85fa('0x4'));var authTypes=[_0x85fa('0x5')];var validatePresenceOf=function(_0x19d7f9){return _0x19d7f9&&_0x19d7f9[_0x85fa('0x6')];};var getChanSpyApplications=function(_0x2f7770,_0x388b5d,_0x2042bb){var _0x40a0f5={'context':_0x2f7770[_0x85fa('0x7')]||_0x85fa('0x8'),'type':'system','isApp':![],'UserId':_0x2f7770['id']};var _0x2305b2=[];for(var _0x16efb3=0x0,_0xcad430=0x1;_0x16efb3<_0x2042bb[_0x85fa('0x6')];_0x16efb3++,_0xcad430=0x1){var _0x4f9251={'exten':util[_0x85fa('0x9')](_0x85fa('0xa'),_0x2042bb[_0x16efb3][_0x85fa('0xb')],_0x388b5d),'ChanSpyId':_0x2042bb[_0x16efb3]['id']};_0x2305b2[_0x85fa('0xc')](_[_0x85fa('0xd')]({'app':_0x85fa('0xe'),'appdata':util[_0x85fa('0x9')](_0x85fa('0xf'),_0x85fa('0x10')),'priority':_0xcad430++},_0x40a0f5,_0x4f9251));if(_0x2042bb[_0x16efb3][_0x85fa('0x11')]){_0x2305b2[_0x85fa('0xc')](_[_0x85fa('0xd')]({'app':_0x85fa('0x12'),'appdata':util[_0x85fa('0x9')](_0x85fa('0x13'),_0x2042bb[_0x16efb3][_0x85fa('0x14')]),'priority':_0xcad430++},_0x40a0f5,_0x4f9251));}if(_0x2042bb[_0x16efb3]['auth']){_0x2305b2[_0x85fa('0xc')](_[_0x85fa('0xd')]({'app':_0x85fa('0x15'),'appdata':_0x2042bb[_0x16efb3][_0x85fa('0x16')],'priority':_0xcad430++},_0x40a0f5,_0x4f9251));}_0x2305b2[_0x85fa('0xc')](_[_0x85fa('0xd')]({'app':_0x85fa('0x17'),'appdata':util[_0x85fa('0x9')](_0x85fa('0x18'),_0x2f7770['name'],_0x2042bb[_0x16efb3]['options']?_0x2042bb[_0x16efb3][_0x85fa('0x19')]['join'](''):''),'priority':_0xcad430++},_0x40a0f5,_0x4f9251));if(_0x2042bb[_0x16efb3][_0x85fa('0x11')]){_0x2305b2['push'](_['merge']({'app':_0x85fa('0x1a'),'priority':_0xcad430++},_0x40a0f5,_0x4f9251));}}return _0x2305b2;};var getUserApplications=function(_0x50fe7b,_0x16feac){var _0x661dcf=[_0x85fa('0x1b'),_0x85fa('0x1c'),'gsm'];var _0x2de310={'context':_0x50fe7b[_0x85fa('0x7')]||_0x85fa('0x8'),'exten':_0x16feac,'type':_0x85fa('0x1d'),'isApp':![],'UserId':_0x50fe7b['id']};var _0x17368c=[{'app':_0x85fa('0xe'),'appdata':_0x85fa('0x1e')}];if(_0x50fe7b['extensionMonitor']&&_[_0x85fa('0x1f')](_0x661dcf,_0x50fe7b[_0x85fa('0x20')])){_0x17368c[_0x85fa('0xc')]({'app':'Set','appdata':_0x85fa('0x21')});_0x17368c[_0x85fa('0xc')]({'app':'Set','appdata':util[_0x85fa('0x9')](_0x85fa('0x22'),_0x50fe7b[_0x85fa('0x20')])});_0x17368c['push']({'app':_0x85fa('0x23'),'appdata':util[_0x85fa('0x9')](_0x85fa('0x24'),_0x50fe7b[_0x85fa('0x25')])});}else{_0x17368c['push']({'app':'Dial','appdata':util[_0x85fa('0x9')](_0x85fa('0x26'),_0x50fe7b[_0x85fa('0x25')])});}_0x17368c[_0x85fa('0xc')]({'app':'Hangup'});for(var _0x215653=0x0;_0x215653<_0x17368c['length'];_0x215653++){_0x17368c[_0x215653][_0x85fa('0x27')]=_0x215653+0x1;_0x17368c[_0x215653]=_[_0x85fa('0x28')](_0x17368c[_0x215653],_0x2de310);}return _0x17368c;};var getChanSpyPromise=function(_0x1d52d7,_0x2dddb0){return new BPromise(function(_0x41fd38,_0x29cbde){return _0x1d52d7[_0x85fa('0x29')][_0x85fa('0x2a')]()[_0x85fa('0x2b')](function(_0x16e013){if(_0x16e013){var _0x381255=getChanSpyApplications(_0x2dddb0,_0x2dddb0['internal'],_0x16e013);if(_0x2dddb0[_0x85fa('0x2c')]!=_0x2dddb0['name']){_0x381255=_0x381255[_0x85fa('0x2d')](getChanSpyApplications(_0x2dddb0,_0x2dddb0['name'],_0x16e013));}return _0x41fd38(_0x381255);}return _0x41fd38([]);})['catch'](function(_0x12baf7){_0x29cbde(_0x12baf7);});});};module[_0x85fa('0x2e')]=function(_0x10d0a1,_0x49525a){var _0x2a7fa9=_0x10d0a1[_0x85fa('0x2f')];return _0x10d0a1[_0x85fa('0x30')]('User',attributes,{'tableName':_0x85fa('0x31'),'charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0x1ad393,_0x23df92,_0x317ada){var _0x3014b3=typeof _0x1ad393[_0x85fa('0x32')]==='undefined'?BPromise[_0x85fa('0x33')](null):_0x2a7fa9[_0x85fa('0x34')][_0x85fa('0x35')]({'where':{'id':_0x1ad393[_0x85fa('0x32')]}});_0x3014b3[_0x85fa('0x2b')](function(_0x101869){if(_0x101869){_0x1ad393[_0x85fa('0x36')]=_0x101869[_0x85fa('0x36')];}})['then'](function(){_0x1ad393[_0x85fa('0x37')]();_0x1ad393['updatePassword'](_0x317ada);})[_0x85fa('0x38')](function(_0x5b490a){_0x317ada(_0x5b490a);});},'beforeUpdate':function(_0xb4d953,_0x51bc18,_0x112e66){Promise[_0x85fa('0x33')]()[_0x85fa('0x2b')](function(){if(_0xb4d953[_0x85fa('0x39')]('userProfileId')===![])return;return _0x2a7fa9[_0x85fa('0x34')][_0x85fa('0x35')]({'where':{'id':_0xb4d953[_0x85fa('0x32')]}})['then'](function(_0x5af684){if(_0x5af684)_0xb4d953[_0x85fa('0x36')]=_0x5af684[_0x85fa('0x36')];return;});})[_0x85fa('0x2b')](function(){if(_0xb4d953[_0x85fa('0x39')](_0x85fa('0x16'))){_0xb4d953['updateMd5Password']();return _0xb4d953[_0x85fa('0x3a')](_0x112e66);}_0x112e66();})[_0x85fa('0x38')](function(_0x20640d){_0x112e66(_0x20640d);});},'afterCreate':function(_0xad26fa,_0x3199ee,_0x35db17){var _0x2a7a89=getUserApplications(_0xad26fa,_0xad26fa[_0x85fa('0x2c')]);if(_0xad26fa[_0x85fa('0x2c')]!=_0xad26fa[_0x85fa('0x25')]){_0x2a7a89=_0x2a7a89[_0x85fa('0x2d')](getUserApplications(_0xad26fa,_0xad26fa[_0x85fa('0x25')]));}return _0x2a7fa9[_0x85fa('0x3b')][_0x85fa('0x3c')](_0x2a7a89)[_0x85fa('0x2b')](function(){if(_0xad26fa['chanspy']){return getChanSpyPromise(_0x2a7fa9,_0xad26fa);}})['then'](function(_0x49e751){if(_0x49e751&&_0x49e751[_0x85fa('0x6')]){return _0x2a7fa9[_0x85fa('0x3b')][_0x85fa('0x3c')](_0x49e751);}})[_0x85fa('0x2b')](function(){_0x35db17();})['catch'](function(_0x22b849){_0x35db17(_0x22b849);});},'afterUpdate':function(_0xe31b11,_0x4f1087,_0x5bb569){return BPromise[_0x85fa('0x33')]()[_0x85fa('0x2b')](function(){if(_0xe31b11[_0x85fa('0x39')](_0x85fa('0x10'))||_0xe31b11[_0x85fa('0x39')](_0x85fa('0x7'))){return _0x2a7fa9[_0x85fa('0x3b')][_0x85fa('0x3d')]({'where':{'UserId':_0xe31b11['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x85fa('0x2b')](function(){if(_0xe31b11[_0x85fa('0x10')]){return getChanSpyPromise(_0x2a7fa9,_0xe31b11)[_0x85fa('0x2b')](function(_0x590f24){if(_0x590f24&&_0x590f24['length']){return _0x2a7fa9[_0x85fa('0x3b')]['bulkCreate'](_0x590f24);}});}});}})[_0x85fa('0x2b')](function(){if(_0xe31b11['changed'](_0x85fa('0x20'))||_0xe31b11[_0x85fa('0x39')](_0x85fa('0x7'))){return _0x2a7fa9[_0x85fa('0x3b')][_0x85fa('0x3d')]({'where':{'UserId':_0xe31b11['id'],'type':_0x85fa('0x1d'),'ChanSpyId':null}})['then'](function(){var _0x1b0337=getUserApplications(_0xe31b11,_0xe31b11[_0x85fa('0x2c')]);if(_0xe31b11[_0x85fa('0x2c')]!=_0xe31b11[_0x85fa('0x25')]){_0x1b0337=_0x1b0337[_0x85fa('0x2d')](getUserApplications(_0xe31b11,_0xe31b11[_0x85fa('0x25')]));}return _0x2a7fa9[_0x85fa('0x3b')][_0x85fa('0x3c')](_0x1b0337);});}})['then'](function(){_0x5bb569();})['catch'](function(_0x14b8c7){_0x5bb569(_0x14b8c7);});},'afterDestroy':function(_0x37debc,_0x563ed3){return _0x2a7fa9[_0x85fa('0x3b')][_0x85fa('0x3d')]({'where':{'UserId':_0x37debc['id'],'type':_0x85fa('0x1d')}});}},'instanceMethods':{'authenticate':function(_0x281000,_0x47c9d7){if(!_0x47c9d7){return this[_0x85fa('0x16')]===this[_0x85fa('0x3e')](_0x281000);}var _0x396865=this;this[_0x85fa('0x3e')](_0x281000,function(_0x1b3eca,_0x22eec4){if(_0x1b3eca){_0x47c9d7(_0x1b3eca);}if(_0x396865[_0x85fa('0x16')]===_0x22eec4){_0x47c9d7(null,!![]);}else{_0x47c9d7(null,![]);}});},'makeSalt':function(_0x520906,_0x3f2e4e){var _0x23e118=0x10;if(typeof arguments[0x0]===_0x85fa('0x3f')){_0x3f2e4e=arguments[0x0];_0x520906=_0x23e118;}else if(typeof arguments[0x1]==='function'){_0x3f2e4e=arguments[0x1];}else{throw new Error(_0x85fa('0x40'));}if(!_0x520906){_0x520906=_0x23e118;}return crypto[_0x85fa('0x41')](_0x520906,function(_0x5677f2,_0x6e0f26){if(_0x5677f2){_0x3f2e4e(_0x5677f2);}return _0x3f2e4e(null,_0x6e0f26['toString'](_0x85fa('0x42')));});},'encryptPassword':function(_0x258011,_0x25d0c9){if(!_0x258011||!this['salt']){return _0x25d0c9?_0x25d0c9(null):null;}var _0x1119c7=0x2710;var _0x141dd5=0x40;var _0x38512a=new Buffer(this['salt'],_0x85fa('0x42'));if(!_0x25d0c9){return crypto['pbkdf2Sync'](_0x258011,_0x38512a,_0x1119c7,_0x141dd5,'sha1')[_0x85fa('0x43')](_0x85fa('0x42'));}return crypto[_0x85fa('0x44')](_0x258011,_0x38512a,_0x1119c7,_0x141dd5,'sha1',function(_0x49e3f8,_0x55270d){if(_0x49e3f8){_0x25d0c9(_0x49e3f8);}return _0x25d0c9(null,_0x55270d[_0x85fa('0x43')](_0x85fa('0x42')));});},'updatePassword':function(_0x476ee3){if(!this[_0x85fa('0x16')]){return _0x476ee3(null);}if(!validatePresenceOf(this[_0x85fa('0x16')])&&authTypes['indexOf'](this[_0x85fa('0x45')])===-0x1){_0x476ee3(new Error(_0x85fa('0x46')));}var _0x301144=this;this[_0x85fa('0x47')](function(_0x4a47d3,_0x483ffd){if(_0x4a47d3){return _0x476ee3(_0x4a47d3);}_0x301144[_0x85fa('0x48')]=_0x483ffd;_0x301144[_0x85fa('0x3e')](_0x301144[_0x85fa('0x16')],function(_0x2a8b4c,_0x1a5890){if(_0x2a8b4c){_0x476ee3(_0x2a8b4c);}_0x301144[_0x85fa('0x16')]=_0x1a5890;_0x476ee3(null);});});},'updateMd5Password':function(){this[_0x85fa('0x49')]=md5(this[_0x85fa('0x25')]+_0x85fa('0x4a')+this[_0x85fa('0x16')]);return this[_0x85fa('0x49')];}}});};