Built motion from commit (unavailable).|2.5.24
[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 _0xafa8=['salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','md5secret',':asterisk:','crypto','util','md5','lodash','./user.attributes','google','from-sip','system','length','format','%s%s','prefix','push','merge','Set','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','password','SIP/%s,%s','name','options','join','StopMixMonitor','wav','WAV','gsm','context','includes','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','Hangup','defaults','VoiceChanSpy','findAll','then','internal','exports','models','User','users','utf8','utf8_bin','undefined','resolve','find','userProfileId','updateMd5Password','updatePassword','catch','privacyEnabled','concat','VoiceExtension','bulkCreate','changed','destroy','extensionMonitor','encryptPassword','function','Missing\x20Callback','toString','base64'];(function(_0x20d4db,_0x2ad63d){var _0x31b3e5=function(_0x5f1d34){while(--_0x5f1d34){_0x20d4db['push'](_0x20d4db['shift']());}};_0x31b3e5(++_0x2ad63d);}(_0xafa8,0x135));var _0x8afa=function(_0x175a55,_0x4082fd){_0x175a55=_0x175a55-0x0;var _0x167adf=_0xafa8[_0x175a55];return _0x167adf;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x8afa('0x0'));var util=require(_0x8afa('0x1'));var md5=require(_0x8afa('0x2'));var _=require(_0x8afa('0x3'));var attributes=require(_0x8afa('0x4'));var authTypes=[_0x8afa('0x5')];var validatePresenceOf=function(_0x144520){return _0x144520&&_0x144520['length'];};var getChanSpyApplications=function(_0x37301b,_0x5b3a20,_0x1912b1){var _0x4dc54d={'context':_0x37301b['context']||_0x8afa('0x6'),'type':_0x8afa('0x7'),'isApp':![],'UserId':_0x37301b['id']};var _0x637811=[];for(var _0x353bd0=0x0,_0x5ab8f2=0x1;_0x353bd0<_0x1912b1[_0x8afa('0x8')];_0x353bd0++,_0x5ab8f2=0x1){var _0x385839={'exten':util[_0x8afa('0x9')](_0x8afa('0xa'),_0x1912b1[_0x353bd0][_0x8afa('0xb')],_0x5b3a20),'ChanSpyId':_0x1912b1[_0x353bd0]['id']};_0x637811[_0x8afa('0xc')](_[_0x8afa('0xd')]({'app':_0x8afa('0xe'),'appdata':util[_0x8afa('0x9')]('CDR(type)=%s',_0x8afa('0xf')),'priority':_0x5ab8f2++},_0x4dc54d,_0x385839));if(_0x1912b1[_0x353bd0][_0x8afa('0x10')]){_0x637811[_0x8afa('0xc')](_[_0x8afa('0xd')]({'app':_0x8afa('0x11'),'appdata':util[_0x8afa('0x9')](_0x8afa('0x12'),_0x1912b1[_0x353bd0][_0x8afa('0x13')]),'priority':_0x5ab8f2++},_0x4dc54d,_0x385839));}if(_0x1912b1[_0x353bd0][_0x8afa('0x14')]){_0x637811['push'](_[_0x8afa('0xd')]({'app':'Authenticate','appdata':_0x1912b1[_0x353bd0][_0x8afa('0x15')],'priority':_0x5ab8f2++},_0x4dc54d,_0x385839));}_0x637811[_0x8afa('0xc')](_[_0x8afa('0xd')]({'app':'ChanSpy','appdata':util[_0x8afa('0x9')](_0x8afa('0x16'),_0x37301b[_0x8afa('0x17')],_0x1912b1[_0x353bd0][_0x8afa('0x18')]?_0x1912b1[_0x353bd0]['options'][_0x8afa('0x19')](''):''),'priority':_0x5ab8f2++},_0x4dc54d,_0x385839));if(_0x1912b1[_0x353bd0][_0x8afa('0x10')]){_0x637811[_0x8afa('0xc')](_['merge']({'app':_0x8afa('0x1a'),'priority':_0x5ab8f2++},_0x4dc54d,_0x385839));}}return _0x637811;};var getUserApplications=function(_0x429292,_0xd580cb){var _0x1931b7=[_0x8afa('0x1b'),_0x8afa('0x1c'),_0x8afa('0x1d')];var _0x587123={'context':_0x429292[_0x8afa('0x1e')]||_0x8afa('0x6'),'exten':_0xd580cb,'type':_0x8afa('0x7'),'isApp':![],'UserId':_0x429292['id']};var _0xb8a798=[{'app':_0x8afa('0xe'),'appdata':'CDR(type)=internal'}];if(_0x429292['extensionMonitor']&&_[_0x8afa('0x1f')](_0x1931b7,_0x429292['extensionMonitor'])){_0xb8a798[_0x8afa('0xc')]({'app':_0x8afa('0xe'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0xb8a798[_0x8afa('0xc')]({'app':_0x8afa('0xe'),'appdata':util[_0x8afa('0x9')](_0x8afa('0x20'),_0x429292['extensionMonitor'])});_0xb8a798[_0x8afa('0xc')]({'app':'Dial','appdata':util[_0x8afa('0x9')](_0x8afa('0x21'),_0x429292[_0x8afa('0x17')])});}else{_0xb8a798['push']({'app':_0x8afa('0x22'),'appdata':util['format']('SIP/%s,,tTxX',_0x429292[_0x8afa('0x17')])});}_0xb8a798['push']({'app':_0x8afa('0x23')});for(var _0x229f34=0x0;_0x229f34<_0xb8a798[_0x8afa('0x8')];_0x229f34++){_0xb8a798[_0x229f34]['priority']=_0x229f34+0x1;_0xb8a798[_0x229f34]=_[_0x8afa('0x24')](_0xb8a798[_0x229f34],_0x587123);}return _0xb8a798;};var getChanSpyPromise=function(_0x1adb0e,_0x8a419){return new BPromise(function(_0x2fd9f4,_0x2be75b){return _0x1adb0e[_0x8afa('0x25')][_0x8afa('0x26')]()[_0x8afa('0x27')](function(_0x6d3049){if(_0x6d3049){var _0x5ca071=getChanSpyApplications(_0x8a419,_0x8a419[_0x8afa('0x28')],_0x6d3049);if(_0x8a419[_0x8afa('0x28')]!=_0x8a419['name']){_0x5ca071=_0x5ca071['concat'](getChanSpyApplications(_0x8a419,_0x8a419[_0x8afa('0x17')],_0x6d3049));}return _0x2fd9f4(_0x5ca071);}return _0x2fd9f4([]);})['catch'](function(_0x26a1e9){_0x2be75b(_0x26a1e9);});});};module[_0x8afa('0x29')]=function(_0x3e0cc7,_0x5f350f){var _0x18d6d2=_0x3e0cc7[_0x8afa('0x2a')];return _0x3e0cc7['define'](_0x8afa('0x2b'),attributes,{'tableName':_0x8afa('0x2c'),'charset':_0x8afa('0x2d'),'collate':_0x8afa('0x2e'),'hooks':{'beforeCreate':function(_0x5cb6b0,_0x4499e7,_0x58551f){var _0x5ea941=typeof _0x5cb6b0['userProfileId']===_0x8afa('0x2f')?BPromise[_0x8afa('0x30')](null):_0x18d6d2['UserProfile'][_0x8afa('0x31')]({'where':{'id':_0x5cb6b0[_0x8afa('0x32')]}});_0x5ea941[_0x8afa('0x27')](function(_0x4f06c0){if(_0x4f06c0){_0x5cb6b0['privacyEnabled']=_0x4f06c0['privacyEnabled'];}})[_0x8afa('0x27')](function(){_0x5cb6b0[_0x8afa('0x33')]();_0x5cb6b0[_0x8afa('0x34')](_0x58551f);})[_0x8afa('0x35')](function(_0x5d8ff0){_0x58551f(_0x5d8ff0);});},'beforeUpdate':function(_0x5f0f07,_0x4e320b,_0x354c1c){Promise[_0x8afa('0x30')]()[_0x8afa('0x27')](function(){if(_0x5f0f07['changed'](_0x8afa('0x32'))===![])return;return _0x18d6d2['UserProfile'][_0x8afa('0x31')]({'where':{'id':_0x5f0f07[_0x8afa('0x32')]}})[_0x8afa('0x27')](function(_0x349e87){if(_0x349e87)_0x5f0f07[_0x8afa('0x36')]=_0x349e87[_0x8afa('0x36')];return;});})[_0x8afa('0x27')](function(){if(_0x5f0f07['changed'](_0x8afa('0x15'))){_0x5f0f07[_0x8afa('0x33')]();return _0x5f0f07[_0x8afa('0x34')](_0x354c1c);}_0x354c1c();})[_0x8afa('0x35')](function(_0x37d96d){_0x354c1c(_0x37d96d);});},'afterCreate':function(_0x3d6155,_0x2b07f6,_0x302a7e){var _0x3b8eb9=getUserApplications(_0x3d6155,_0x3d6155[_0x8afa('0x28')]);if(_0x3d6155[_0x8afa('0x28')]!=_0x3d6155['name']){_0x3b8eb9=_0x3b8eb9[_0x8afa('0x37')](getUserApplications(_0x3d6155,_0x3d6155['name']));}return _0x18d6d2[_0x8afa('0x38')]['bulkCreate'](_0x3b8eb9)[_0x8afa('0x27')](function(){if(_0x3d6155['chanspy']){return getChanSpyPromise(_0x18d6d2,_0x3d6155);}})[_0x8afa('0x27')](function(_0x48daaf){if(_0x48daaf&&_0x48daaf['length']){return _0x18d6d2[_0x8afa('0x38')][_0x8afa('0x39')](_0x48daaf);}})[_0x8afa('0x27')](function(){_0x302a7e();})[_0x8afa('0x35')](function(_0x30287d){_0x302a7e(_0x30287d);});},'afterUpdate':function(_0x2f6e83,_0x1b84ed,_0x412a83){return BPromise[_0x8afa('0x30')]()[_0x8afa('0x27')](function(){if(_0x2f6e83[_0x8afa('0x3a')](_0x8afa('0xf'))||_0x2f6e83[_0x8afa('0x3a')](_0x8afa('0x1e'))){return _0x18d6d2['VoiceExtension'][_0x8afa('0x3b')]({'where':{'UserId':_0x2f6e83['id'],'type':_0x8afa('0x7'),'ChanSpyId':{'$ne':null}}})[_0x8afa('0x27')](function(){if(_0x2f6e83[_0x8afa('0xf')]){return getChanSpyPromise(_0x18d6d2,_0x2f6e83)[_0x8afa('0x27')](function(_0x585381){if(_0x585381&&_0x585381['length']){return _0x18d6d2[_0x8afa('0x38')][_0x8afa('0x39')](_0x585381);}});}});}})[_0x8afa('0x27')](function(){if(_0x2f6e83[_0x8afa('0x3a')](_0x8afa('0x3c'))||_0x2f6e83['changed'](_0x8afa('0x1e'))){return _0x18d6d2[_0x8afa('0x38')][_0x8afa('0x3b')]({'where':{'UserId':_0x2f6e83['id'],'type':_0x8afa('0x7'),'ChanSpyId':null}})[_0x8afa('0x27')](function(){var _0x31d096=getUserApplications(_0x2f6e83,_0x2f6e83[_0x8afa('0x28')]);if(_0x2f6e83[_0x8afa('0x28')]!=_0x2f6e83[_0x8afa('0x17')]){_0x31d096=_0x31d096[_0x8afa('0x37')](getUserApplications(_0x2f6e83,_0x2f6e83[_0x8afa('0x17')]));}return _0x18d6d2[_0x8afa('0x38')][_0x8afa('0x39')](_0x31d096);});}})['then'](function(){_0x412a83();})[_0x8afa('0x35')](function(_0x146cda){_0x412a83(_0x146cda);});},'afterDestroy':function(_0x5ca6bf,_0x2ea0fa){return _0x18d6d2[_0x8afa('0x38')]['destroy']({'where':{'UserId':_0x5ca6bf['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x9468ce,_0x21a3b5){if(!_0x21a3b5){return this[_0x8afa('0x15')]===this[_0x8afa('0x3d')](_0x9468ce);}var _0x50a9a2=this;this['encryptPassword'](_0x9468ce,function(_0x10afc0,_0x4bf8c2){if(_0x10afc0){_0x21a3b5(_0x10afc0);}if(_0x50a9a2['password']===_0x4bf8c2){_0x21a3b5(null,!![]);}else{_0x21a3b5(null,![]);}});},'makeSalt':function(_0x3548d8,_0x4453b0){var _0x29a179=0x10;if(typeof arguments[0x0]==='function'){_0x4453b0=arguments[0x0];_0x3548d8=_0x29a179;}else if(typeof arguments[0x1]===_0x8afa('0x3e')){_0x4453b0=arguments[0x1];}else{throw new Error(_0x8afa('0x3f'));}if(!_0x3548d8){_0x3548d8=_0x29a179;}return crypto['randomBytes'](_0x3548d8,function(_0x3c9767,_0x4580b5){if(_0x3c9767){_0x4453b0(_0x3c9767);}return _0x4453b0(null,_0x4580b5[_0x8afa('0x40')](_0x8afa('0x41')));});},'encryptPassword':function(_0x3a15cd,_0x965e17){if(!_0x3a15cd||!this['salt']){return _0x965e17?_0x965e17(null):null;}var _0x59b6d2=0x2710;var _0x1a06c6=0x40;var _0x5e6168=new Buffer(this[_0x8afa('0x42')],_0x8afa('0x41'));if(!_0x965e17){return crypto[_0x8afa('0x43')](_0x3a15cd,_0x5e6168,_0x59b6d2,_0x1a06c6,_0x8afa('0x44'))[_0x8afa('0x40')](_0x8afa('0x41'));}return crypto[_0x8afa('0x45')](_0x3a15cd,_0x5e6168,_0x59b6d2,_0x1a06c6,_0x8afa('0x44'),function(_0x318927,_0x135736){if(_0x318927){_0x965e17(_0x318927);}return _0x965e17(null,_0x135736[_0x8afa('0x40')](_0x8afa('0x41')));});},'updatePassword':function(_0x29eb9a){if(!this[_0x8afa('0x15')]){return _0x29eb9a(null);}if(!validatePresenceOf(this[_0x8afa('0x15')])&&authTypes[_0x8afa('0x46')](this[_0x8afa('0x47')])===-0x1){_0x29eb9a(new Error(_0x8afa('0x48')));}var _0x4b0efd=this;this['makeSalt'](function(_0x475f5c,_0x4fabbe){if(_0x475f5c){return _0x29eb9a(_0x475f5c);}_0x4b0efd[_0x8afa('0x42')]=_0x4fabbe;_0x4b0efd[_0x8afa('0x3d')](_0x4b0efd[_0x8afa('0x15')],function(_0x4b626c,_0x484303){if(_0x4b626c){_0x29eb9a(_0x4b626c);}_0x4b0efd[_0x8afa('0x15')]=_0x484303;_0x29eb9a(null);});});},'updateMd5Password':function(){this[_0x8afa('0x49')]=md5(this[_0x8afa('0x17')]+_0x8afa('0x4a')+this[_0x8afa('0x15')]);return this[_0x8afa('0x49')];}}});};