Built motion from commit 9d1906d1.|2.5.40
[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 _0x22c9=['_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','catch','exports','models','define','utf8','utf8_bin','userProfileId','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','resolve','changed','concat','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','pbkdf2Sync','Invalid\x20password','makeSalt','salt','md5secret','crypto','util','lodash','./user.attributes','context','from-sip','system','length','format','%s%s','merge','Set','CDR(type)=%s','chanspy','push','${UNIQUEID}.%s,a','auth','Authenticate','password','SIP/%s,%s','name','options','record','StopMixMonitor','wav','WAV','includes','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'];(function(_0xd1d4f6,_0xa2958b){var _0x169aba=function(_0x5ab97b){while(--_0x5ab97b){_0xd1d4f6['push'](_0xd1d4f6['shift']());}};_0x169aba(++_0xa2958b);}(_0x22c9,0xf3));var _0x922c=function(_0x310da1,_0x390f65){_0x310da1=_0x310da1-0x0;var _0x333d17=_0x22c9[_0x310da1];return _0x333d17;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x922c('0x0'));var util=require(_0x922c('0x1'));var md5=require('md5');var _=require(_0x922c('0x2'));var attributes=require(_0x922c('0x3'));var authTypes=['google'];var validatePresenceOf=function(_0x5ddf50){return _0x5ddf50&&_0x5ddf50['length'];};var getChanSpyApplications=function(_0x2b985a,_0x483af0,_0x2edb1e){var _0x24bd92={'context':_0x2b985a[_0x922c('0x4')]||_0x922c('0x5'),'type':_0x922c('0x6'),'isApp':![],'UserId':_0x2b985a['id']};var _0x801f42=[];for(var _0x218be7=0x0,_0x23c2d6=0x1;_0x218be7<_0x2edb1e[_0x922c('0x7')];_0x218be7++,_0x23c2d6=0x1){var _0x13cc7e={'exten':util[_0x922c('0x8')](_0x922c('0x9'),_0x2edb1e[_0x218be7]['prefix'],_0x483af0),'ChanSpyId':_0x2edb1e[_0x218be7]['id']};_0x801f42['push'](_[_0x922c('0xa')]({'app':_0x922c('0xb'),'appdata':util['format'](_0x922c('0xc'),_0x922c('0xd')),'priority':_0x23c2d6++},_0x24bd92,_0x13cc7e));if(_0x2edb1e[_0x218be7]['record']){_0x801f42[_0x922c('0xe')](_[_0x922c('0xa')]({'app':'MixMonitor','appdata':util[_0x922c('0x8')](_0x922c('0xf'),_0x2edb1e[_0x218be7]['recordingFormat']),'priority':_0x23c2d6++},_0x24bd92,_0x13cc7e));}if(_0x2edb1e[_0x218be7][_0x922c('0x10')]){_0x801f42[_0x922c('0xe')](_[_0x922c('0xa')]({'app':_0x922c('0x11'),'appdata':_0x2edb1e[_0x218be7][_0x922c('0x12')],'priority':_0x23c2d6++},_0x24bd92,_0x13cc7e));}_0x801f42['push'](_[_0x922c('0xa')]({'app':'ChanSpy','appdata':util[_0x922c('0x8')](_0x922c('0x13'),_0x2b985a[_0x922c('0x14')],_0x2edb1e[_0x218be7][_0x922c('0x15')]?_0x2edb1e[_0x218be7][_0x922c('0x15')]['join'](''):''),'priority':_0x23c2d6++},_0x24bd92,_0x13cc7e));if(_0x2edb1e[_0x218be7][_0x922c('0x16')]){_0x801f42[_0x922c('0xe')](_[_0x922c('0xa')]({'app':_0x922c('0x17'),'priority':_0x23c2d6++},_0x24bd92,_0x13cc7e));}}return _0x801f42;};var getUserApplications=function(_0x3f8403,_0x3f0e94){var _0x1ed064=[_0x922c('0x18'),_0x922c('0x19'),'gsm'];var _0x293897={'context':_0x3f8403[_0x922c('0x4')]||_0x922c('0x5'),'exten':_0x3f0e94,'type':_0x922c('0x6'),'isApp':![],'UserId':_0x3f8403['id']};var _0x118cde=[{'app':_0x922c('0xb'),'appdata':'CDR(type)=internal'}];if(_0x3f8403['extensionMonitor']&&_[_0x922c('0x1a')](_0x1ed064,_0x3f8403[_0x922c('0x1b')])){_0x118cde[_0x922c('0xe')]({'app':_0x922c('0xb'),'appdata':_0x922c('0x1c')});_0x118cde[_0x922c('0xe')]({'app':_0x922c('0xb'),'appdata':util[_0x922c('0x8')](_0x922c('0x1d'),_0x3f8403[_0x922c('0x1b')])});_0x118cde['push']({'app':_0x922c('0x1e'),'appdata':util[_0x922c('0x8')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x3f8403['name'])});}else{_0x118cde[_0x922c('0xe')]({'app':_0x922c('0x1e'),'appdata':util['format'](_0x922c('0x1f'),_0x3f8403['name'])});}_0x118cde[_0x922c('0xe')]({'app':_0x922c('0x20')});for(var _0x10bb82=0x0;_0x10bb82<_0x118cde['length'];_0x10bb82++){_0x118cde[_0x10bb82][_0x922c('0x21')]=_0x10bb82+0x1;_0x118cde[_0x10bb82]=_[_0x922c('0x22')](_0x118cde[_0x10bb82],_0x293897);}return _0x118cde;};var getChanSpyPromise=function(_0x23cfb0,_0x2b6f9d){return new BPromise(function(_0x496c1e,_0x3a402a){return _0x23cfb0[_0x922c('0x23')][_0x922c('0x24')]()[_0x922c('0x25')](function(_0x616e7d){if(_0x616e7d){var _0x5d8e11=getChanSpyApplications(_0x2b6f9d,_0x2b6f9d[_0x922c('0x26')],_0x616e7d);if(_0x2b6f9d['internal']!=_0x2b6f9d[_0x922c('0x14')]){_0x5d8e11=_0x5d8e11['concat'](getChanSpyApplications(_0x2b6f9d,_0x2b6f9d['name'],_0x616e7d));}return _0x496c1e(_0x5d8e11);}return _0x496c1e([]);})[_0x922c('0x27')](function(_0x49500b){_0x3a402a(_0x49500b);});});};module[_0x922c('0x28')]=function(_0x11e8a2,_0x518f46){var _0xb57514=_0x11e8a2[_0x922c('0x29')];return _0x11e8a2[_0x922c('0x2a')]('User',attributes,{'tableName':'users','charset':_0x922c('0x2b'),'collate':_0x922c('0x2c'),'hooks':{'beforeCreate':function(_0x28ec07,_0x59c879,_0x49f0b8){var _0x1865e5=typeof _0x28ec07[_0x922c('0x2d')]==='undefined'?BPromise['resolve'](null):_0xb57514[_0x922c('0x2e')][_0x922c('0x2f')]({'where':{'id':_0x28ec07['userProfileId']}});_0x1865e5[_0x922c('0x25')](function(_0xcbefd7){if(_0xcbefd7){_0x28ec07[_0x922c('0x30')]=_0xcbefd7[_0x922c('0x30')];}})['then'](function(){_0x28ec07[_0x922c('0x31')]();_0x28ec07[_0x922c('0x32')](_0x49f0b8);})[_0x922c('0x27')](function(_0x4e610b){_0x49f0b8(_0x4e610b);});},'beforeUpdate':function(_0x58b472,_0xeff860,_0x41235e){Promise[_0x922c('0x33')]()['then'](function(){if(_0x58b472[_0x922c('0x34')](_0x922c('0x2d'))===![])return;return _0xb57514['UserProfile'][_0x922c('0x2f')]({'where':{'id':_0x58b472['userProfileId']}})[_0x922c('0x25')](function(_0x1f63a2){if(_0x1f63a2)_0x58b472[_0x922c('0x30')]=_0x1f63a2[_0x922c('0x30')];return;});})['then'](function(){if(_0x58b472['changed'](_0x922c('0x12'))){_0x58b472[_0x922c('0x31')]();return _0x58b472[_0x922c('0x32')](_0x41235e);}_0x41235e();})[_0x922c('0x27')](function(_0x2ec675){_0x41235e(_0x2ec675);});},'afterCreate':function(_0x2dda2b,_0x663fd5,_0x3e1230){var _0x369915=getUserApplications(_0x2dda2b,_0x2dda2b[_0x922c('0x26')]);if(_0x2dda2b[_0x922c('0x26')]!=_0x2dda2b[_0x922c('0x14')]){_0x369915=_0x369915[_0x922c('0x35')](getUserApplications(_0x2dda2b,_0x2dda2b[_0x922c('0x14')]));}return _0xb57514[_0x922c('0x36')][_0x922c('0x37')](_0x369915)[_0x922c('0x25')](function(){if(_0x2dda2b[_0x922c('0xd')]){return getChanSpyPromise(_0xb57514,_0x2dda2b);}})[_0x922c('0x25')](function(_0x47277c){if(_0x47277c&&_0x47277c['length']){return _0xb57514[_0x922c('0x36')][_0x922c('0x37')](_0x47277c);}})[_0x922c('0x25')](function(){_0x3e1230();})[_0x922c('0x27')](function(_0x18a0ea){_0x3e1230(_0x18a0ea);});},'afterUpdate':function(_0x576429,_0x59572b,_0x21d392){return BPromise[_0x922c('0x33')]()[_0x922c('0x25')](function(){if(_0x576429[_0x922c('0x34')](_0x922c('0xd'))||_0x576429[_0x922c('0x34')](_0x922c('0x4'))){return _0xb57514[_0x922c('0x36')][_0x922c('0x38')]({'where':{'UserId':_0x576429['id'],'type':_0x922c('0x6'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x576429[_0x922c('0xd')]){return getChanSpyPromise(_0xb57514,_0x576429)[_0x922c('0x25')](function(_0x34eaf4){if(_0x34eaf4&&_0x34eaf4['length']){return _0xb57514[_0x922c('0x36')]['bulkCreate'](_0x34eaf4);}});}});}})[_0x922c('0x25')](function(){if(_0x576429['changed']('extensionMonitor')||_0x576429[_0x922c('0x34')](_0x922c('0x4'))){return _0xb57514['VoiceExtension'][_0x922c('0x38')]({'where':{'UserId':_0x576429['id'],'type':_0x922c('0x6'),'ChanSpyId':null}})[_0x922c('0x25')](function(){var _0x3116a7=getUserApplications(_0x576429,_0x576429[_0x922c('0x26')]);if(_0x576429[_0x922c('0x26')]!=_0x576429[_0x922c('0x14')]){_0x3116a7=_0x3116a7[_0x922c('0x35')](getUserApplications(_0x576429,_0x576429[_0x922c('0x14')]));}return _0xb57514[_0x922c('0x36')][_0x922c('0x37')](_0x3116a7);});}})[_0x922c('0x25')](function(){_0x21d392();})[_0x922c('0x27')](function(_0x4f3cfc){_0x21d392(_0x4f3cfc);});},'afterDestroy':function(_0x129056,_0x3c44d3){return _0xb57514[_0x922c('0x36')][_0x922c('0x38')]({'where':{'UserId':_0x129056['id'],'type':_0x922c('0x6')}});}},'instanceMethods':{'authenticate':function(_0x2db5dd,_0x454f91){if(!_0x454f91){return this[_0x922c('0x12')]===this[_0x922c('0x39')](_0x2db5dd);}var _0x55cb1e=this;this[_0x922c('0x39')](_0x2db5dd,function(_0x19a241,_0x4d3b2d){if(_0x19a241){_0x454f91(_0x19a241);}if(_0x55cb1e['password']===_0x4d3b2d){_0x454f91(null,!![]);}else{_0x454f91(null,![]);}});},'makeSalt':function(_0x476439,_0x35d3b9){var _0x490213=0x10;if(typeof arguments[0x0]===_0x922c('0x3a')){_0x35d3b9=arguments[0x0];_0x476439=_0x490213;}else if(typeof arguments[0x1]===_0x922c('0x3a')){_0x35d3b9=arguments[0x1];}else{throw new Error(_0x922c('0x3b'));}if(!_0x476439){_0x476439=_0x490213;}return crypto[_0x922c('0x3c')](_0x476439,function(_0x3fcb90,_0x5480b7){if(_0x3fcb90){_0x35d3b9(_0x3fcb90);}return _0x35d3b9(null,_0x5480b7[_0x922c('0x3d')](_0x922c('0x3e')));});},'encryptPassword':function(_0x161fc3,_0x3b41e2){if(!_0x161fc3||!this['salt']){return _0x3b41e2?_0x3b41e2(null):null;}var _0x571a8d=0x2710;var _0x2c1369=0x40;var _0x586835=new Buffer(this['salt'],_0x922c('0x3e'));if(!_0x3b41e2){return crypto[_0x922c('0x3f')](_0x161fc3,_0x586835,_0x571a8d,_0x2c1369,'sha1')[_0x922c('0x3d')]('base64');}return crypto['pbkdf2'](_0x161fc3,_0x586835,_0x571a8d,_0x2c1369,'sha1',function(_0x4a20ae,_0x327c93){if(_0x4a20ae){_0x3b41e2(_0x4a20ae);}return _0x3b41e2(null,_0x327c93[_0x922c('0x3d')]('base64'));});},'updatePassword':function(_0x147793){if(!this[_0x922c('0x12')]){return _0x147793(null);}if(!validatePresenceOf(this[_0x922c('0x12')])&&authTypes['indexOf'](this['provider'])===-0x1){_0x147793(new Error(_0x922c('0x40')));}var _0x4b110e=this;this[_0x922c('0x41')](function(_0x42f352,_0x4c57c9){if(_0x42f352){return _0x147793(_0x42f352);}_0x4b110e[_0x922c('0x42')]=_0x4c57c9;_0x4b110e['encryptPassword'](_0x4b110e[_0x922c('0x12')],function(_0x45c609,_0x11053f){if(_0x45c609){_0x147793(_0x45c609);}_0x4b110e[_0x922c('0x12')]=_0x11053f;_0x147793(null);});});},'updateMd5Password':function(){this[_0x922c('0x43')]=md5(this['name']+':asterisk:'+this[_0x922c('0x12')]);return this['md5secret'];}}});};