Built motion from commit (unavailable).|2.5.0
[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 _0x7177=['exports','models','define','users','updateMd5Password','updatePassword','changed','password','VoiceExtension','resolve','destroy','bulkCreate','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','lodash','./user.attributes','google','length','from-sip','system','format','prefix','push','merge','CDR(type)=%s','chanspy','record','MixMonitor','Authenticate','SIP/%s,%s','options','join','StopMixMonitor','wav','WAV','gsm','context','Set','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','Dial','SIP/%s,,tTxX','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch'];(function(_0x24139b,_0x1f2b6a){var _0x3e18f2=function(_0x196bbd){while(--_0x196bbd){_0x24139b['push'](_0x24139b['shift']());}};_0x3e18f2(++_0x1f2b6a);}(_0x7177,0x1ac));var _0x7717=function(_0x948e6c,_0x21ba9c){_0x948e6c=_0x948e6c-0x0;var _0x1302c5=_0x7177[_0x948e6c];return _0x1302c5;};'use strict';var BPromise=require('bluebird');var crypto=require('crypto');var util=require('util');var md5=require('md5');var _=require(_0x7717('0x0'));var attributes=require(_0x7717('0x1'));var authTypes=[_0x7717('0x2')];var validatePresenceOf=function(_0x4c83bc){return _0x4c83bc&&_0x4c83bc[_0x7717('0x3')];};var getChanSpyApplications=function(_0x25b8b4,_0x4cab68,_0x44b15b){var _0x4d06ea={'context':_0x25b8b4['context']||_0x7717('0x4'),'type':_0x7717('0x5'),'isApp':![],'UserId':_0x25b8b4['id']};var _0x5ceee8=[];for(var _0x1267c5=0x0,_0x43d694=0x1;_0x1267c5<_0x44b15b[_0x7717('0x3')];_0x1267c5++,_0x43d694=0x1){var _0x579f85={'exten':util[_0x7717('0x6')]('%s%s',_0x44b15b[_0x1267c5][_0x7717('0x7')],_0x4cab68),'ChanSpyId':_0x44b15b[_0x1267c5]['id']};_0x5ceee8[_0x7717('0x8')](_[_0x7717('0x9')]({'app':'Set','appdata':util[_0x7717('0x6')](_0x7717('0xa'),_0x7717('0xb')),'priority':_0x43d694++},_0x4d06ea,_0x579f85));if(_0x44b15b[_0x1267c5][_0x7717('0xc')]){_0x5ceee8[_0x7717('0x8')](_['merge']({'app':_0x7717('0xd'),'appdata':util[_0x7717('0x6')]('${UNIQUEID}.%s,a',_0x44b15b[_0x1267c5]['recordingFormat']),'priority':_0x43d694++},_0x4d06ea,_0x579f85));}if(_0x44b15b[_0x1267c5]['auth']){_0x5ceee8[_0x7717('0x8')](_['merge']({'app':_0x7717('0xe'),'appdata':_0x44b15b[_0x1267c5]['password'],'priority':_0x43d694++},_0x4d06ea,_0x579f85));}_0x5ceee8[_0x7717('0x8')](_[_0x7717('0x9')]({'app':'ChanSpy','appdata':util[_0x7717('0x6')](_0x7717('0xf'),_0x25b8b4['name'],_0x44b15b[_0x1267c5][_0x7717('0x10')]?_0x44b15b[_0x1267c5][_0x7717('0x10')][_0x7717('0x11')](''):''),'priority':_0x43d694++},_0x4d06ea,_0x579f85));if(_0x44b15b[_0x1267c5][_0x7717('0xc')]){_0x5ceee8[_0x7717('0x8')](_['merge']({'app':_0x7717('0x12'),'priority':_0x43d694++},_0x4d06ea,_0x579f85));}}return _0x5ceee8;};var getUserApplications=function(_0x2089a6,_0x37ada9){var _0x1d5563=[_0x7717('0x13'),_0x7717('0x14'),_0x7717('0x15')];var _0x1cd3f1={'context':_0x2089a6[_0x7717('0x16')]||_0x7717('0x4'),'exten':_0x37ada9,'type':_0x7717('0x5'),'isApp':![],'UserId':_0x2089a6['id']};var _0x2f6ca8=[{'app':_0x7717('0x17'),'appdata':_0x7717('0x18')}];if(_0x2089a6[_0x7717('0x19')]&&_[_0x7717('0x1a')](_0x1d5563,_0x2089a6[_0x7717('0x19')])){_0x2f6ca8[_0x7717('0x8')]({'app':'Set','appdata':_0x7717('0x1b')});_0x2f6ca8[_0x7717('0x8')]({'app':'Set','appdata':util[_0x7717('0x6')](_0x7717('0x1c'),_0x2089a6[_0x7717('0x19')])});_0x2f6ca8[_0x7717('0x8')]({'app':'Dial','appdata':util['format'](_0x7717('0x1d'),_0x2089a6[_0x7717('0x1e')])});}else{_0x2f6ca8[_0x7717('0x8')]({'app':_0x7717('0x1f'),'appdata':util[_0x7717('0x6')](_0x7717('0x20'),_0x2089a6[_0x7717('0x1e')])});}_0x2f6ca8[_0x7717('0x8')]({'app':'Hangup'});for(var _0x282c35=0x0;_0x282c35<_0x2f6ca8[_0x7717('0x3')];_0x282c35++){_0x2f6ca8[_0x282c35][_0x7717('0x21')]=_0x282c35+0x1;_0x2f6ca8[_0x282c35]=_[_0x7717('0x22')](_0x2f6ca8[_0x282c35],_0x1cd3f1);}return _0x2f6ca8;};var getChanSpyPromise=function(_0x186461,_0x2fd2cb){return new BPromise(function(_0x3d124a,_0x21706f){return _0x186461[_0x7717('0x23')][_0x7717('0x24')]()[_0x7717('0x25')](function(_0x56c1a2){if(_0x56c1a2){var _0x587e0c=getChanSpyApplications(_0x2fd2cb,_0x2fd2cb[_0x7717('0x26')],_0x56c1a2);if(_0x2fd2cb[_0x7717('0x26')]!=_0x2fd2cb[_0x7717('0x1e')]){_0x587e0c=_0x587e0c[_0x7717('0x27')](getChanSpyApplications(_0x2fd2cb,_0x2fd2cb[_0x7717('0x1e')],_0x56c1a2));}return _0x3d124a(_0x587e0c);}return _0x3d124a([]);})[_0x7717('0x28')](function(_0x471200){_0x21706f(_0x471200);});});};module[_0x7717('0x29')]=function(_0x59bcf9,_0x4f35aa){var _0x575832=_0x59bcf9[_0x7717('0x2a')];return _0x59bcf9[_0x7717('0x2b')]('User',attributes,{'tableName':_0x7717('0x2c'),'charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0x1b7766,_0x2221c7,_0x52e744){_0x1b7766[_0x7717('0x2d')]();_0x1b7766[_0x7717('0x2e')](_0x52e744);},'beforeUpdate':function(_0x59e45a,_0x520e83,_0xd0f75a){if(_0x59e45a[_0x7717('0x2f')](_0x7717('0x30'))){_0x59e45a[_0x7717('0x2d')]();return _0x59e45a['updatePassword'](_0xd0f75a);}_0xd0f75a();},'afterCreate':function(_0x44c180,_0x168b48,_0x215a49){var _0x367477=getUserApplications(_0x44c180,_0x44c180[_0x7717('0x26')]);if(_0x44c180['internal']!=_0x44c180['name']){_0x367477=_0x367477[_0x7717('0x27')](getUserApplications(_0x44c180,_0x44c180[_0x7717('0x1e')]));}return _0x575832[_0x7717('0x31')]['bulkCreate'](_0x367477)['then'](function(){if(_0x44c180['chanspy']){return getChanSpyPromise(_0x575832,_0x44c180);}})[_0x7717('0x25')](function(_0x2569c6){if(_0x2569c6&&_0x2569c6['length']){return _0x575832[_0x7717('0x31')]['bulkCreate'](_0x2569c6);}})['then'](function(){_0x215a49();})[_0x7717('0x28')](function(_0xb786b8){_0x215a49(_0xb786b8);});},'afterUpdate':function(_0x1cbfd2,_0x4bcf4f,_0x3181dd){return BPromise[_0x7717('0x32')]()['then'](function(){if(_0x1cbfd2[_0x7717('0x2f')]('chanspy')||_0x1cbfd2['changed'](_0x7717('0x16'))){return _0x575832[_0x7717('0x31')][_0x7717('0x33')]({'where':{'UserId':_0x1cbfd2['id'],'type':_0x7717('0x5'),'ChanSpyId':{'$ne':null}}})[_0x7717('0x25')](function(){if(_0x1cbfd2['chanspy']){return getChanSpyPromise(_0x575832,_0x1cbfd2)[_0x7717('0x25')](function(_0xaf825d){if(_0xaf825d&&_0xaf825d['length']){return _0x575832['VoiceExtension'][_0x7717('0x34')](_0xaf825d);}});}});}})['then'](function(){if(_0x1cbfd2['changed'](_0x7717('0x19'))||_0x1cbfd2['changed']('context')){return _0x575832[_0x7717('0x31')][_0x7717('0x33')]({'where':{'UserId':_0x1cbfd2['id'],'type':_0x7717('0x5'),'ChanSpyId':null}})['then'](function(){var _0x26eb6e=getUserApplications(_0x1cbfd2,_0x1cbfd2['internal']);if(_0x1cbfd2['internal']!=_0x1cbfd2[_0x7717('0x1e')]){_0x26eb6e=_0x26eb6e[_0x7717('0x27')](getUserApplications(_0x1cbfd2,_0x1cbfd2['name']));}return _0x575832[_0x7717('0x31')][_0x7717('0x34')](_0x26eb6e);});}})[_0x7717('0x25')](function(){_0x3181dd();})[_0x7717('0x28')](function(_0x29db2f){_0x3181dd(_0x29db2f);});},'afterDestroy':function(_0x3831d8,_0x1a2e26){return _0x575832[_0x7717('0x31')]['destroy']({'where':{'UserId':_0x3831d8['id'],'type':_0x7717('0x5')}});}},'instanceMethods':{'authenticate':function(_0x5ae8a6,_0x455c01){if(!_0x455c01){return this['password']===this[_0x7717('0x35')](_0x5ae8a6);}var _0x181f45=this;this['encryptPassword'](_0x5ae8a6,function(_0x2ade1f,_0x273841){if(_0x2ade1f){_0x455c01(_0x2ade1f);}if(_0x181f45['password']===_0x273841){_0x455c01(null,!![]);}else{_0x455c01(null,![]);}});},'makeSalt':function(_0x26a9d0,_0x3b6226){var _0x3c6351=0x10;if(typeof arguments[0x0]===_0x7717('0x36')){_0x3b6226=arguments[0x0];_0x26a9d0=_0x3c6351;}else if(typeof arguments[0x1]===_0x7717('0x36')){_0x3b6226=arguments[0x1];}else{throw new Error(_0x7717('0x37'));}if(!_0x26a9d0){_0x26a9d0=_0x3c6351;}return crypto[_0x7717('0x38')](_0x26a9d0,function(_0x3f6b95,_0x11ebe2){if(_0x3f6b95){_0x3b6226(_0x3f6b95);}return _0x3b6226(null,_0x11ebe2[_0x7717('0x39')](_0x7717('0x3a')));});},'encryptPassword':function(_0x1e85a3,_0x28873d){if(!_0x1e85a3||!this[_0x7717('0x3b')]){return _0x28873d?_0x28873d(null):null;}var _0x4003e5=0x2710;var _0xd695b2=0x40;var _0x82139f=new Buffer(this[_0x7717('0x3b')],'base64');if(!_0x28873d){return crypto[_0x7717('0x3c')](_0x1e85a3,_0x82139f,_0x4003e5,_0xd695b2,_0x7717('0x3d'))[_0x7717('0x39')](_0x7717('0x3a'));}return crypto['pbkdf2'](_0x1e85a3,_0x82139f,_0x4003e5,_0xd695b2,_0x7717('0x3d'),function(_0x417c6b,_0x421dbf){if(_0x417c6b){_0x28873d(_0x417c6b);}return _0x28873d(null,_0x421dbf[_0x7717('0x39')]('base64'));});},'updatePassword':function(_0x5796e3){if(!this[_0x7717('0x30')]){return _0x5796e3(null);}if(!validatePresenceOf(this['password'])&&authTypes['indexOf'](this[_0x7717('0x3e')])===-0x1){_0x5796e3(new Error(_0x7717('0x3f')));}var _0x1fd057=this;this[_0x7717('0x40')](function(_0x772552,_0x6fc598){if(_0x772552){return _0x5796e3(_0x772552);}_0x1fd057['salt']=_0x6fc598;_0x1fd057[_0x7717('0x35')](_0x1fd057[_0x7717('0x30')],function(_0x51dcf1,_0x3dc2ba){if(_0x51dcf1){_0x5796e3(_0x51dcf1);}_0x1fd057[_0x7717('0x30')]=_0x3dc2ba;_0x5796e3(null);});});},'updateMd5Password':function(){this[_0x7717('0x41')]=md5(this[_0x7717('0x1e')]+_0x7717('0x42')+this['password']);return this[_0x7717('0x41')];}}});};