Built motion from commit ba71417a.|2.6.28
[motion2.git] / server / api / authLocal / authLocal.controller.js
index c56ff6a..3e0748b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1674=['securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','Password\x20reset!','use','User','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','findOne','allowedLoginAttempts','blockDuration','then','name','password','salt','role','disabled','blocked','blockedAt','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','clearBlockUser','add','getLicense','catch','MailAccount','email','MailServerOut','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','format','\x22%s\x22\x20<%s>','SendMail','error','message','status','login','local-login','json','online','Email\x20parameter\x20is\x20missing','body','find','minutes','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','send','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1674,0x14d));var _0x4167=function(_0x1386a3,_0x13087c){_0x1386a3=_0x1386a3-0x0;var _0x3ba3c9=_0x1674[_0x1386a3];return _0x3ba3c9;};'use strict';var util=require('util');var passport=require(_0x4167('0x0'));var LocalStrategy=require(_0x4167('0x1'))[_0x4167('0x2')];var jayson=require(_0x4167('0x3'));var _=require(_0x4167('0x4'));var rs=require(_0x4167('0x5'));var moment=require('moment');var db=require(_0x4167('0x6'))['db'];var authService=require(_0x4167('0x7'));var utils=require(_0x4167('0x8'));var client=jayson[_0x4167('0x9')][_0x4167('0xa')]({'port':0x232b});function localAuthenticate(_0x19e17e,_0x35c02b,_0x3f79ae,_0x3963d1){var _0x312732,_0x4cdcb0;return db[_0x4167('0xb')][_0x4167('0xc')]({'where':{'id':0x1},'attributes':[_0x4167('0xd'),_0x4167('0xe')],'raw':!![]})[_0x4167('0xf')](function(_0x1db925){_0x312732=_0x1db925;return _0x19e17e[_0x4167('0xc')]({'attributes':['id',_0x4167('0x10'),_0x4167('0x11'),_0x4167('0x12'),_0x4167('0x13'),_0x4167('0x14'),_0x4167('0x15'),_0x4167('0x16'),'loginAttempts'],'where':{'name':_0x35c02b,'role':{'$or':[_0x4167('0x17'),_0x4167('0x18'),_0x4167('0x19')]}}});})[_0x4167('0xf')](function(_0x3d9ff6){if(!_0x3d9ff6||_0x3d9ff6&&_0x3d9ff6[_0x4167('0x10')]!==_0x35c02b){throw new Error(_0x4167('0x1a'));}else{_0x4cdcb0=_0x3d9ff6;return _0x4cdcb0;}})['then'](function(){_0x4cdcb0[_0x4167('0x1b')](_0x3f79ae,function(_0x57a7e5,_0xec70f6){var _0x2fe3e9=_0x4cdcb0['loginAttempts']+0x1;if(_0x57a7e5){return _0x3963d1(_0x57a7e5);}else if(!_0xec70f6){if(_0x4cdcb0[_0x4167('0x14')]){return _0x3963d1(null,![],{'message':_0x4167('0x1a')});}else if(_0x312732[_0x4167('0xd')]>0x0){if(_0x4cdcb0['blocked']){if(_0x312732['blockDuration']>0x0){if(moment(_0x4cdcb0['blockedAt'])['add'](_0x312732[_0x4167('0xe')],'minutes')>moment()){return _0x3963d1(null,![],{'message':_0x4167('0x1a')});}else{return utils[_0x4167('0x1c')](_0x4cdcb0,_0x2fe3e9,![],null)[_0x4167('0xf')](function(){return _0x3963d1(null,![],{'message':_0x4167('0x1a')});});}}else{return _0x3963d1(null,![],{'message':_0x4167('0x1a')});}}else{if(_0x2fe3e9>=_0x312732[_0x4167('0xd')]){return utils[_0x4167('0x1c')](_0x4cdcb0,0x0,!![],moment())[_0x4167('0xf')](function(){return _0x3963d1(null,![],{'message':_0x4167('0x1a')});});}else{return utils[_0x4167('0x1c')](_0x4cdcb0,_0x2fe3e9,![],null)[_0x4167('0xf')](function(){return _0x3963d1(null,![],{'message':_0x4167('0x1a')});});}}}else{return _0x3963d1(null,![],{'message':_0x4167('0x1a')});}}else{if(_0x4cdcb0[_0x4167('0x14')]){return _0x3963d1(null,![],{'message':_0x4167('0x1a')});}else if(_0x312732[_0x4167('0xd')]>0x0){if(_0x4cdcb0[_0x4167('0x15')]){if(_0x312732[_0x4167('0xe')]>0x0){if(moment(_0x4cdcb0[_0x4167('0x16')])[_0x4167('0x1d')](_0x312732[_0x4167('0xe')],'minutes')>moment()){return _0x3963d1(null,![],{'message':_0x4167('0x1a')});}else{return utils[_0x4167('0x1c')](_0x4cdcb0,0x0,![],null)[_0x4167('0xf')](function(){return utils[_0x4167('0x1e')](_0x4cdcb0);})['then'](function(){return _0x3963d1(null,_0x4cdcb0);});}}else{return _0x3963d1(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils['clearBlockUser'](_0x4cdcb0,0x0,![],null)[_0x4167('0xf')](function(){return utils[_0x4167('0x1e')](_0x4cdcb0);})[_0x4167('0xf')](function(){return _0x3963d1(null,_0x4cdcb0);})['catch'](function(_0xacd70a){return _0x3963d1(null,![],_0xacd70a);});}}else{if(_0x4cdcb0['blocked']){return _0x3963d1(null,![],{'message':_0x4167('0x1a')});}else{return utils[_0x4167('0x1e')](_0x4cdcb0)[_0x4167('0xf')](function(){return _0x3963d1(null,_0x4cdcb0);});}}}});})[_0x4167('0x1f')](function(_0xa36dcf){return _0x3963d1(null,![],_0xa36dcf);});}function sendServiceMail(_0x978ed4){return db[_0x4167('0x20')]['find']({'where':{'service':!![]},'attributes':['id',_0x4167('0x10'),_0x4167('0x21')],'include':[{'model':db[_0x4167('0x22')],'as':_0x4167('0x23'),'include':[{'model':db['CloudProvider'],'as':_0x4167('0x24')}]}]})[_0x4167('0xf')](function(_0x1a6639){if(!_0x1a6639){throw new Error(_0x4167('0x25'));}var _0xf72ce2=_0x1a6639[_0x4167('0x26')]();var _0x58f7d2={'account':_0xf72ce2,'message':_[_0x4167('0x27')]({'from':util[_0x4167('0x28')](_0x4167('0x29'),_0x1a6639[_0x4167('0x10')],_0x1a6639['email']||_0x1a6639[_0x4167('0x23')][_0x4167('0x18')])},_0x978ed4)};return client['request'](_0x4167('0x2a'),_0x58f7d2);})[_0x4167('0xf')](function(_0x20aa13){if(_0x20aa13['error']){throw new Error(util[_0x4167('0x28')]('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x20aa13[_0x4167('0x2b')][_0x4167('0x2c')]||JSON['stringify'](_0x20aa13[_0x4167('0x2b')])));}return!![];});}function handleError(_0x212aac,_0x1ba691,_0x46675a){return _0x212aac[_0x4167('0x2d')](_0x1ba691||0x1f4)['send']({'message':_0x46675a?_0x46675a[_0x4167('0x2c')]||_0x46675a:''});}exports[_0x4167('0x2e')]=function(_0x94aff,_0x198ac6,_0x2ecb03){passport[_0x4167('0x1b')](_0x4167('0x2f'),function(_0x26558d,_0x4adbdd,_0x4afc57){var _0x3efd32=_0x26558d||_0x4afc57;if(_0x3efd32){return handleError(_0x198ac6,0x191,_0x3efd32);}if(!_0x4adbdd){return handleError(_0x198ac6,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x1c8cc9={'payload':{'id':_0x4adbdd['id'],'role':_0x4adbdd['role']},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x1c8cc9)[_0x4167('0xf')](function(_0x336d59){_0x198ac6[_0x4167('0x30')]({'id':_0x4adbdd['id'],'token':_0x336d59,'statusCall':'','isAlreadyLogged':_0x4adbdd[_0x4167('0x31')]});});}})(_0x94aff,_0x198ac6,_0x2ecb03);};exports['forgot']=function(_0x23a225,_0x22eb88){if(!_0x23a225['body']['email']){return handleError(_0x22eb88,0x1f4,{'message':_0x4167('0x32')});}var _0x2478ba=rs['generate']();_0x23a225[_0x4167('0x33')]['email']=_0x23a225['body'][_0x4167('0x21')]['trim']()['toLowerCase']();var _0x42fede;return db[_0x4167('0xb')][_0x4167('0xc')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts','blockDuration'],'raw':!![]})[_0x4167('0xf')](function(_0x3f0a23){_0x42fede=_0x3f0a23;return db['User'][_0x4167('0x34')]({'where':{'email':_0x23a225['body']['email']}});})[_0x4167('0xf')](function(_0x2f113e){if(!_0x2f113e){throw new Error('This\x20email\x20is\x20not\x20registered.');}if(_0x2f113e[_0x4167('0x14')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x2f113e[_0x4167('0x15')]){if(moment(_0x2f113e[_0x4167('0x16')])[_0x4167('0x1d')](_0x42fede[_0x4167('0xe')],_0x4167('0x35'))>moment()){throw new Error(_0x4167('0x36'));}else{_0x2f113e[_0x4167('0x15')]=![];_0x2f113e[_0x4167('0x16')]=null;}}_0x2f113e[_0x4167('0x37')]=_0x2478ba;_0x2f113e[_0x4167('0x38')]=Date[_0x4167('0x39')]()+0x36ee80;return _0x2f113e[_0x4167('0x3a')]();})[_0x4167('0xf')](function(){return sendServiceMail({'to':_0x23a225[_0x4167('0x33')][_0x4167('0x21')],'subject':_0x4167('0x3b'),'text':_0x4167('0x3c')+_0x4167('0x3d')+_0x4167('0x3e')+_0x23a225[_0x4167('0x3f')][_0x4167('0x40')]+_0x4167('0x41')+_0x2478ba+'\x0a\x0a'+_0x4167('0x42')});})[_0x4167('0xf')](function(){_0x22eb88[_0x4167('0x2d')](0xc8)[_0x4167('0x43')]({'message':'Reset\x20Email\x20sent!'});})[_0x4167('0x1f')](function(_0x47a5e4){return handleError(_0x22eb88,0x1f4,_0x47a5e4);});};exports[_0x4167('0x44')]=function(_0x1a8d53,_0x24a43c){return db['User']['find']({'where':{'resetPasswordToken':_0x1a8d53[_0x4167('0x45')][_0x4167('0x46')],'resetPasswordExpires':{'$gt':Date['now']()}}})[_0x4167('0xf')](function(_0x4040af){if(!_0x4040af){throw new Error(_0x4167('0x47'));}return db[_0x4167('0xb')][_0x4167('0xc')]({'attributes':['id',_0x4167('0x48'),_0x4167('0x49'),_0x4167('0x4a')]})['then'](function(_0x2690a7){if(_0x2690a7[_0x4167('0x48')])authService[_0x4167('0x4b')](_0x1a8d53[_0x4167('0x33')][_0x4167('0x11')]);if(!_0x2690a7[_0x4167('0x49')]||!_0x4040af[_0x4167('0x4c')])return _0x4040af;authService[_0x4167('0x4d')](_0x1a8d53[_0x4167('0x33')][_0x4167('0x11')],_0x4040af[_0x4167('0x4c')],_0x2690a7['passwordHistoryLimit']);return _0x4040af;})['then'](function(){_0x4040af[_0x4167('0x11')]=_0x1a8d53[_0x4167('0x33')][_0x4167('0x11')];_0x4040af[_0x4167('0x37')]=null;_0x4040af[_0x4167('0x38')]=null;return _0x4040af[_0x4167('0x3a')]();});})[_0x4167('0xf')](function(){_0x24a43c['status'](0xc8)[_0x4167('0x43')]({'message':_0x4167('0x4e')});})[_0x4167('0x1f')](function(_0x531ad7){return handleError(_0x24a43c,0x1f4,_0x531ad7);});};passport[_0x4167('0x4f')](_0x4167('0x2f'),new LocalStrategy({'usernameField':_0x4167('0x10'),'passwordField':_0x4167('0x11')},function(_0x15d8b8,_0x231487,_0x391ff4){return localAuthenticate(db[_0x4167('0x50')],_0x15d8b8,_0x231487,_0x391ff4);}));
\ No newline at end of file
+var _0x1128=['findOne','allowedLoginAttempts','blockDuration','name','password','salt','role','blocked','blockedAt','loginAttempts','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','then','authenticate','disabled','add','clearBlockUser','getLicense','catch','email','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','\x22%s\x22\x20<%s>','request','SendMail','error','format','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login','local-login','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','User','find','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','enforcePasswordHistory','securePassword','validatePasswordPattern','previousPasswords','passwordHistoryLimit','use','util','passport','Strategy','lodash','../../config/utils','http','Setting'];(function(_0x225e15,_0x44c793){var _0x2a94d1=function(_0x1243fa){while(--_0x1243fa){_0x225e15['push'](_0x225e15['shift']());}};_0x2a94d1(++_0x44c793);}(_0x1128,0xd7));var _0x8112=function(_0x52d8f3,_0x284575){_0x52d8f3=_0x52d8f3-0x0;var _0xc93307=_0x1128[_0x52d8f3];return _0xc93307;};'use strict';var util=require(_0x8112('0x0'));var passport=require(_0x8112('0x1'));var LocalStrategy=require('passport-local')[_0x8112('0x2')];var jayson=require('jayson/promise');var _=require(_0x8112('0x3'));var rs=require('randomstring');var moment=require('moment');var db=require('../../mysqldb')['db'];var authService=require('../../components/auth/service');var utils=require(_0x8112('0x4'));var client=jayson['client'][_0x8112('0x5')]({'port':0x232b});function localAuthenticate(_0x5dd63a,_0xa1b7a7,_0x3ec6a6,_0x2f2842){var _0x119b87,_0x4326b8;return db[_0x8112('0x6')][_0x8112('0x7')]({'where':{'id':0x1},'attributes':[_0x8112('0x8'),_0x8112('0x9')],'raw':!![]})['then'](function(_0x68cdd6){_0x119b87=_0x68cdd6;return _0x5dd63a[_0x8112('0x7')]({'attributes':['id',_0x8112('0xa'),_0x8112('0xb'),_0x8112('0xc'),_0x8112('0xd'),'disabled',_0x8112('0xe'),_0x8112('0xf'),_0x8112('0x10')],'where':{'name':_0xa1b7a7,'role':{'$or':[_0x8112('0x11'),_0x8112('0x12'),_0x8112('0x13')]}}});})['then'](function(_0x4e6224){if(!_0x4e6224||_0x4e6224&&_0x4e6224[_0x8112('0xa')]!==_0xa1b7a7){throw new Error(_0x8112('0x14'));}else{_0x4326b8=_0x4e6224;return _0x4326b8;}})[_0x8112('0x15')](function(){_0x4326b8[_0x8112('0x16')](_0x3ec6a6,function(_0x10b4fc,_0x58a720){var _0x3fc45f=_0x4326b8[_0x8112('0x10')]+0x1;if(_0x10b4fc){return _0x2f2842(_0x10b4fc);}else if(!_0x58a720){if(_0x4326b8[_0x8112('0x17')]){return _0x2f2842(null,![],{'message':_0x8112('0x14')});}else if(_0x119b87[_0x8112('0x8')]>0x0){if(_0x4326b8['blocked']){if(_0x119b87[_0x8112('0x9')]>0x0){if(moment(_0x4326b8[_0x8112('0xf')])[_0x8112('0x18')](_0x119b87['blockDuration'],'minutes')>moment()){return _0x2f2842(null,![],{'message':_0x8112('0x14')});}else{return utils[_0x8112('0x19')](_0x4326b8,_0x3fc45f,![],null)[_0x8112('0x15')](function(){return _0x2f2842(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x2f2842(null,![],{'message':_0x8112('0x14')});}}else{if(_0x3fc45f>=_0x119b87[_0x8112('0x8')]){return utils[_0x8112('0x19')](_0x4326b8,0x0,!![],moment())[_0x8112('0x15')](function(){return _0x2f2842(null,![],{'message':_0x8112('0x14')});});}else{return utils[_0x8112('0x19')](_0x4326b8,_0x3fc45f,![],null)[_0x8112('0x15')](function(){return _0x2f2842(null,![],{'message':_0x8112('0x14')});});}}}else{return _0x2f2842(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x4326b8['disabled']){return _0x2f2842(null,![],{'message':_0x8112('0x14')});}else if(_0x119b87[_0x8112('0x8')]>0x0){if(_0x4326b8['blocked']){if(_0x119b87[_0x8112('0x9')]>0x0){if(moment(_0x4326b8[_0x8112('0xf')])[_0x8112('0x18')](_0x119b87[_0x8112('0x9')],'minutes')>moment()){return _0x2f2842(null,![],{'message':_0x8112('0x14')});}else{return utils[_0x8112('0x19')](_0x4326b8,0x0,![],null)['then'](function(){return utils[_0x8112('0x1a')](_0x4326b8);})['then'](function(){return _0x2f2842(null,_0x4326b8);});}}else{return _0x2f2842(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils['clearBlockUser'](_0x4326b8,0x0,![],null)[_0x8112('0x15')](function(){return utils[_0x8112('0x1a')](_0x4326b8);})[_0x8112('0x15')](function(){return _0x2f2842(null,_0x4326b8);})[_0x8112('0x1b')](function(_0xed6d52){return _0x2f2842(null,![],_0xed6d52);});}}else{if(_0x4326b8[_0x8112('0xe')]){return _0x2f2842(null,![],{'message':_0x8112('0x14')});}else{return utils[_0x8112('0x1a')](_0x4326b8)[_0x8112('0x15')](function(){return _0x2f2842(null,_0x4326b8);});}}}});})[_0x8112('0x1b')](function(_0x377abb){return _0x2f2842(null,![],_0x377abb);});}function sendServiceMail(_0xbf884){return db['MailAccount']['find']({'where':{'service':!![]},'attributes':['id',_0x8112('0xa'),_0x8112('0x1c')],'include':[{'model':db['MailServerOut'],'as':_0x8112('0x1d'),'include':[{'model':db['CloudProvider'],'as':_0x8112('0x1e')}]}]})['then'](function(_0x521f8a){if(!_0x521f8a){throw new Error(_0x8112('0x1f'));}var _0x371f8c=_0x521f8a['getSmtpOptions']();var _0x1cf690={'account':_0x371f8c,'message':_['merge']({'from':util['format'](_0x8112('0x20'),_0x521f8a[_0x8112('0xa')],_0x521f8a[_0x8112('0x1c')]||_0x521f8a['Smtp'][_0x8112('0x12')])},_0xbf884)};return client[_0x8112('0x21')](_0x8112('0x22'),_0x1cf690);})[_0x8112('0x15')](function(_0x53e29c){if(_0x53e29c[_0x8112('0x23')]){throw new Error(util[_0x8112('0x24')](_0x8112('0x25'),_0x53e29c[_0x8112('0x23')][_0x8112('0x26')]||JSON[_0x8112('0x27')](_0x53e29c[_0x8112('0x23')])));}return!![];});}function handleError(_0x4b001e,_0x56d5dd,_0x36fb96){return _0x4b001e[_0x8112('0x28')](_0x56d5dd||0x1f4)[_0x8112('0x29')]({'message':_0x36fb96?_0x36fb96[_0x8112('0x26')]||_0x36fb96:''});}exports[_0x8112('0x2a')]=function(_0x263936,_0x5bd291,_0x4a9b7c){passport[_0x8112('0x16')](_0x8112('0x2b'),function(_0x22f111,_0x41f153,_0x42e089){var _0x4cd179=_0x22f111||_0x42e089;if(_0x4cd179){return handleError(_0x5bd291,0x191,_0x4cd179);}if(!_0x41f153){return handleError(_0x5bd291,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x362307={'payload':{'id':_0x41f153['id'],'role':_0x41f153[_0x8112('0xd')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x362307)[_0x8112('0x15')](function(_0xef01f4){_0x5bd291['json']({'id':_0x41f153['id'],'token':_0xef01f4,'statusCall':'','isAlreadyLogged':_0x41f153[_0x8112('0x2c')]});});}})(_0x263936,_0x5bd291,_0x4a9b7c);};exports[_0x8112('0x2d')]=function(_0x5752c3,_0x1598bf){if(!_0x5752c3[_0x8112('0x2e')]['email']){return handleError(_0x1598bf,0x1f4,{'message':_0x8112('0x2f')});}var _0x3badec=rs[_0x8112('0x30')]();_0x5752c3[_0x8112('0x2e')][_0x8112('0x1c')]=_0x5752c3[_0x8112('0x2e')][_0x8112('0x1c')][_0x8112('0x31')]()[_0x8112('0x32')]();var _0x1e87b2;return db[_0x8112('0x6')][_0x8112('0x7')]({'where':{'id':0x1},'attributes':[_0x8112('0x8'),'blockDuration'],'raw':!![]})[_0x8112('0x15')](function(_0x35ebb5){_0x1e87b2=_0x35ebb5;return db[_0x8112('0x33')][_0x8112('0x34')]({'where':{'email':_0x5752c3[_0x8112('0x2e')]['email']}});})[_0x8112('0x15')](function(_0x2e184a){if(!_0x2e184a){throw new Error(_0x8112('0x35'));}if(_0x2e184a[_0x8112('0x17')]){throw new Error(_0x8112('0x36'));}if(_0x2e184a[_0x8112('0xe')]){if(moment(_0x2e184a['blockedAt'])[_0x8112('0x18')](_0x1e87b2['blockDuration'],'minutes')>moment()){throw new Error(_0x8112('0x37'));}else{_0x2e184a[_0x8112('0xe')]=![];_0x2e184a[_0x8112('0xf')]=null;}}_0x2e184a[_0x8112('0x38')]=_0x3badec;_0x2e184a[_0x8112('0x39')]=Date[_0x8112('0x3a')]()+0x36ee80;return _0x2e184a[_0x8112('0x3b')]();})['then'](function(){return sendServiceMail({'to':_0x5752c3[_0x8112('0x2e')][_0x8112('0x1c')],'subject':_0x8112('0x3c'),'text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0x8112('0x3d')+_0x8112('0x3e')+_0x5752c3[_0x8112('0x3f')][_0x8112('0x40')]+_0x8112('0x41')+_0x3badec+'\x0a\x0a'+_0x8112('0x42')});})['then'](function(){_0x1598bf[_0x8112('0x28')](0xc8)[_0x8112('0x29')]({'message':_0x8112('0x43')});})[_0x8112('0x1b')](function(_0x1e2926){return handleError(_0x1598bf,0x1f4,_0x1e2926);});};exports['reset']=function(_0x22edde,_0x1a455c){return db[_0x8112('0x33')][_0x8112('0x34')]({'where':{'resetPasswordToken':_0x22edde['params']['token'],'resetPasswordExpires':{'$gt':Date[_0x8112('0x3a')]()}}})[_0x8112('0x15')](function(_0x3b0ee8){if(!_0x3b0ee8){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db[_0x8112('0x6')][_0x8112('0x7')]({'attributes':['id','securePassword',_0x8112('0x44'),'passwordHistoryLimit']})['then'](function(_0x54b530){if(_0x54b530[_0x8112('0x45')])authService[_0x8112('0x46')](_0x22edde[_0x8112('0x2e')][_0x8112('0xb')]);if(!_0x54b530[_0x8112('0x44')]||!_0x3b0ee8['previousPasswords'])return _0x3b0ee8;authService['validatePasswordHistory'](_0x22edde['body'][_0x8112('0xb')],_0x3b0ee8[_0x8112('0x47')],_0x54b530[_0x8112('0x48')]);return _0x3b0ee8;})[_0x8112('0x15')](function(){_0x3b0ee8[_0x8112('0xb')]=_0x22edde[_0x8112('0x2e')][_0x8112('0xb')];_0x3b0ee8[_0x8112('0x38')]=null;_0x3b0ee8['resetPasswordExpires']=null;return _0x3b0ee8[_0x8112('0x3b')]();});})[_0x8112('0x15')](function(){_0x1a455c[_0x8112('0x28')](0xc8)[_0x8112('0x29')]({'message':'Password\x20reset!'});})[_0x8112('0x1b')](function(_0x4535cd){return handleError(_0x1a455c,0x1f4,_0x4535cd);});};passport[_0x8112('0x49')](_0x8112('0x2b'),new LocalStrategy({'usernameField':_0x8112('0xa'),'passwordField':'password'},function(_0xb4d237,_0x447ee1,_0x5702f4){return localAuthenticate(db[_0x8112('0x33')],_0xb4d237,_0x447ee1,_0x5702f4);}));
\ No newline at end of file