Built motion from commit (unavailable).|2.5.11
[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 _0x71ef=['merge','MixMonitor','format','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','join','record','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','Dial','SIP/%s,,tTxX','Hangup','priority','defaults','then','internal','concat','catch','exports','User','users','utf8','utf8_bin','updatePassword','changed','updateMd5Password','VoiceExtension','bulkCreate','resolve','destroy','encryptPassword','Missing\x20Callback','randomBytes','toString','salt','base64','sha1','pbkdf2','indexOf','makeSalt',':asterisk:','bluebird','crypto','util','md5','lodash','./user.attributes','google','context','from-sip','system','length','prefix','push','Set','CDR(type)=%s','chanspy'];(function(_0x39ce7d,_0x36e76b){var _0x25cbec=function(_0x2ccbda){while(--_0x2ccbda){_0x39ce7d['push'](_0x39ce7d['shift']());}};_0x25cbec(++_0x36e76b);}(_0x71ef,0x144));var _0xf71e=function(_0x209fcd,_0x1ecccc){_0x209fcd=_0x209fcd-0x0;var _0x501d5e=_0x71ef[_0x209fcd];return _0x501d5e;};'use strict';var BPromise=require(_0xf71e('0x0'));var crypto=require(_0xf71e('0x1'));var util=require(_0xf71e('0x2'));var md5=require(_0xf71e('0x3'));var _=require(_0xf71e('0x4'));var attributes=require(_0xf71e('0x5'));var authTypes=[_0xf71e('0x6')];var validatePresenceOf=function(_0x8a2943){return _0x8a2943&&_0x8a2943['length'];};var getChanSpyApplications=function(_0x5728a6,_0x3e9e1b,_0x3b52f2){var _0x44847d={'context':_0x5728a6[_0xf71e('0x7')]||_0xf71e('0x8'),'type':_0xf71e('0x9'),'isApp':![],'UserId':_0x5728a6['id']};var _0x444aca=[];for(var _0x40d3f8=0x0,_0x46cbc0=0x1;_0x40d3f8<_0x3b52f2[_0xf71e('0xa')];_0x40d3f8++,_0x46cbc0=0x1){var _0x12db72={'exten':util['format']('%s%s',_0x3b52f2[_0x40d3f8][_0xf71e('0xb')],_0x3e9e1b),'ChanSpyId':_0x3b52f2[_0x40d3f8]['id']};_0x444aca[_0xf71e('0xc')](_['merge']({'app':_0xf71e('0xd'),'appdata':util['format'](_0xf71e('0xe'),_0xf71e('0xf')),'priority':_0x46cbc0++},_0x44847d,_0x12db72));if(_0x3b52f2[_0x40d3f8]['record']){_0x444aca['push'](_[_0xf71e('0x10')]({'app':_0xf71e('0x11'),'appdata':util[_0xf71e('0x12')](_0xf71e('0x13'),_0x3b52f2[_0x40d3f8][_0xf71e('0x14')]),'priority':_0x46cbc0++},_0x44847d,_0x12db72));}if(_0x3b52f2[_0x40d3f8][_0xf71e('0x15')]){_0x444aca[_0xf71e('0xc')](_['merge']({'app':_0xf71e('0x16'),'appdata':_0x3b52f2[_0x40d3f8][_0xf71e('0x17')],'priority':_0x46cbc0++},_0x44847d,_0x12db72));}_0x444aca[_0xf71e('0xc')](_[_0xf71e('0x10')]({'app':_0xf71e('0x18'),'appdata':util[_0xf71e('0x12')](_0xf71e('0x19'),_0x5728a6[_0xf71e('0x1a')],_0x3b52f2[_0x40d3f8]['options']?_0x3b52f2[_0x40d3f8]['options'][_0xf71e('0x1b')](''):''),'priority':_0x46cbc0++},_0x44847d,_0x12db72));if(_0x3b52f2[_0x40d3f8][_0xf71e('0x1c')]){_0x444aca[_0xf71e('0xc')](_[_0xf71e('0x10')]({'app':_0xf71e('0x1d'),'priority':_0x46cbc0++},_0x44847d,_0x12db72));}}return _0x444aca;};var getUserApplications=function(_0x22a5ee,_0x20f23b){var _0xdb6369=[_0xf71e('0x1e'),_0xf71e('0x1f'),_0xf71e('0x20')];var _0x48b612={'context':_0x22a5ee['context']||'from-sip','exten':_0x20f23b,'type':_0xf71e('0x9'),'isApp':![],'UserId':_0x22a5ee['id']};var _0x1dbfcd=[{'app':_0xf71e('0xd'),'appdata':_0xf71e('0x21')}];if(_0x22a5ee[_0xf71e('0x22')]&&_[_0xf71e('0x23')](_0xdb6369,_0x22a5ee[_0xf71e('0x22')])){_0x1dbfcd[_0xf71e('0xc')]({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x1dbfcd[_0xf71e('0xc')]({'app':_0xf71e('0xd'),'appdata':util[_0xf71e('0x12')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x22a5ee[_0xf71e('0x22')])});_0x1dbfcd['push']({'app':_0xf71e('0x24'),'appdata':util[_0xf71e('0x12')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x22a5ee[_0xf71e('0x1a')])});}else{_0x1dbfcd[_0xf71e('0xc')]({'app':'Dial','appdata':util[_0xf71e('0x12')](_0xf71e('0x25'),_0x22a5ee[_0xf71e('0x1a')])});}_0x1dbfcd['push']({'app':_0xf71e('0x26')});for(var _0x16d207=0x0;_0x16d207<_0x1dbfcd[_0xf71e('0xa')];_0x16d207++){_0x1dbfcd[_0x16d207][_0xf71e('0x27')]=_0x16d207+0x1;_0x1dbfcd[_0x16d207]=_[_0xf71e('0x28')](_0x1dbfcd[_0x16d207],_0x48b612);}return _0x1dbfcd;};var getChanSpyPromise=function(_0x56f564,_0x4bfa18){return new BPromise(function(_0xade148,_0x434c34){return _0x56f564['VoiceChanSpy']['findAll']()[_0xf71e('0x29')](function(_0x548659){if(_0x548659){var _0x39b420=getChanSpyApplications(_0x4bfa18,_0x4bfa18[_0xf71e('0x2a')],_0x548659);if(_0x4bfa18['internal']!=_0x4bfa18[_0xf71e('0x1a')]){_0x39b420=_0x39b420[_0xf71e('0x2b')](getChanSpyApplications(_0x4bfa18,_0x4bfa18[_0xf71e('0x1a')],_0x548659));}return _0xade148(_0x39b420);}return _0xade148([]);})[_0xf71e('0x2c')](function(_0x5d5a83){_0x434c34(_0x5d5a83);});});};module[_0xf71e('0x2d')]=function(_0x51acec,_0x5ba9f8){var _0x51e539=_0x51acec['models'];return _0x51acec['define'](_0xf71e('0x2e'),attributes,{'tableName':_0xf71e('0x2f'),'charset':_0xf71e('0x30'),'collate':_0xf71e('0x31'),'hooks':{'beforeCreate':function(_0x44467e,_0x122a7f,_0xfcd2fb){_0x44467e['updateMd5Password']();_0x44467e[_0xf71e('0x32')](_0xfcd2fb);},'beforeUpdate':function(_0x1f5642,_0x1819a8,_0x28e2c0){if(_0x1f5642[_0xf71e('0x33')]('password')){_0x1f5642[_0xf71e('0x34')]();return _0x1f5642[_0xf71e('0x32')](_0x28e2c0);}_0x28e2c0();},'afterCreate':function(_0x31d927,_0x5cd90f,_0x157d0f){var _0x975927=getUserApplications(_0x31d927,_0x31d927[_0xf71e('0x2a')]);if(_0x31d927[_0xf71e('0x2a')]!=_0x31d927[_0xf71e('0x1a')]){_0x975927=_0x975927[_0xf71e('0x2b')](getUserApplications(_0x31d927,_0x31d927[_0xf71e('0x1a')]));}return _0x51e539[_0xf71e('0x35')][_0xf71e('0x36')](_0x975927)[_0xf71e('0x29')](function(){if(_0x31d927[_0xf71e('0xf')]){return getChanSpyPromise(_0x51e539,_0x31d927);}})[_0xf71e('0x29')](function(_0x3cde8f){if(_0x3cde8f&&_0x3cde8f[_0xf71e('0xa')]){return _0x51e539[_0xf71e('0x35')][_0xf71e('0x36')](_0x3cde8f);}})[_0xf71e('0x29')](function(){_0x157d0f();})[_0xf71e('0x2c')](function(_0x22902c){_0x157d0f(_0x22902c);});},'afterUpdate':function(_0x1b244a,_0x392457,_0x623277){return BPromise[_0xf71e('0x37')]()['then'](function(){if(_0x1b244a[_0xf71e('0x33')]('chanspy')||_0x1b244a[_0xf71e('0x33')]('context')){return _0x51e539[_0xf71e('0x35')][_0xf71e('0x38')]({'where':{'UserId':_0x1b244a['id'],'type':_0xf71e('0x9'),'ChanSpyId':{'$ne':null}}})[_0xf71e('0x29')](function(){if(_0x1b244a['chanspy']){return getChanSpyPromise(_0x51e539,_0x1b244a)['then'](function(_0x185e5b){if(_0x185e5b&&_0x185e5b[_0xf71e('0xa')]){return _0x51e539['VoiceExtension'][_0xf71e('0x36')](_0x185e5b);}});}});}})[_0xf71e('0x29')](function(){if(_0x1b244a[_0xf71e('0x33')]('extensionMonitor')||_0x1b244a[_0xf71e('0x33')](_0xf71e('0x7'))){return _0x51e539[_0xf71e('0x35')]['destroy']({'where':{'UserId':_0x1b244a['id'],'type':_0xf71e('0x9'),'ChanSpyId':null}})['then'](function(){var _0x32029e=getUserApplications(_0x1b244a,_0x1b244a[_0xf71e('0x2a')]);if(_0x1b244a[_0xf71e('0x2a')]!=_0x1b244a['name']){_0x32029e=_0x32029e['concat'](getUserApplications(_0x1b244a,_0x1b244a[_0xf71e('0x1a')]));}return _0x51e539['VoiceExtension'][_0xf71e('0x36')](_0x32029e);});}})[_0xf71e('0x29')](function(){_0x623277();})[_0xf71e('0x2c')](function(_0x2de922){_0x623277(_0x2de922);});},'afterDestroy':function(_0x255346,_0x3dc089){return _0x51e539['VoiceExtension'][_0xf71e('0x38')]({'where':{'UserId':_0x255346['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x825941,_0x8da0bd){if(!_0x8da0bd){return this[_0xf71e('0x17')]===this[_0xf71e('0x39')](_0x825941);}var _0x3bc73c=this;this[_0xf71e('0x39')](_0x825941,function(_0x15cc49,_0x2c9fb1){if(_0x15cc49){_0x8da0bd(_0x15cc49);}if(_0x3bc73c['password']===_0x2c9fb1){_0x8da0bd(null,!![]);}else{_0x8da0bd(null,![]);}});},'makeSalt':function(_0x46ca25,_0x94fd6){var _0xbc6499=0x10;if(typeof arguments[0x0]==='function'){_0x94fd6=arguments[0x0];_0x46ca25=_0xbc6499;}else if(typeof arguments[0x1]==='function'){_0x94fd6=arguments[0x1];}else{throw new Error(_0xf71e('0x3a'));}if(!_0x46ca25){_0x46ca25=_0xbc6499;}return crypto[_0xf71e('0x3b')](_0x46ca25,function(_0x4058de,_0x14951b){if(_0x4058de){_0x94fd6(_0x4058de);}return _0x94fd6(null,_0x14951b[_0xf71e('0x3c')]('base64'));});},'encryptPassword':function(_0x1cb03c,_0x51daee){if(!_0x1cb03c||!this[_0xf71e('0x3d')]){return _0x51daee?_0x51daee(null):null;}var _0x583246=0x2710;var _0x3f44a7=0x40;var _0x135952=new Buffer(this[_0xf71e('0x3d')],_0xf71e('0x3e'));if(!_0x51daee){return crypto['pbkdf2Sync'](_0x1cb03c,_0x135952,_0x583246,_0x3f44a7,_0xf71e('0x3f'))[_0xf71e('0x3c')](_0xf71e('0x3e'));}return crypto[_0xf71e('0x40')](_0x1cb03c,_0x135952,_0x583246,_0x3f44a7,'sha1',function(_0x5b24bc,_0x112033){if(_0x5b24bc){_0x51daee(_0x5b24bc);}return _0x51daee(null,_0x112033[_0xf71e('0x3c')](_0xf71e('0x3e')));});},'updatePassword':function(_0x56622a){if(!this['password']){return _0x56622a(null);}if(!validatePresenceOf(this[_0xf71e('0x17')])&&authTypes[_0xf71e('0x41')](this['provider'])===-0x1){_0x56622a(new Error('Invalid\x20password'));}var _0x2191a5=this;this[_0xf71e('0x42')](function(_0x3dcdf3,_0x487244){if(_0x3dcdf3){return _0x56622a(_0x3dcdf3);}_0x2191a5[_0xf71e('0x3d')]=_0x487244;_0x2191a5['encryptPassword'](_0x2191a5[_0xf71e('0x17')],function(_0x3f7172,_0x59c08d){if(_0x3f7172){_0x56622a(_0x3f7172);}_0x2191a5['password']=_0x59c08d;_0x56622a(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xf71e('0x1a')]+_0xf71e('0x43')+this[_0xf71e('0x17')]);return this['md5secret'];}}});};