Built motion from commit (unavailable).|2.5.21
[motion2.git] / server / api / authLocal / authLocal.controller.js
index 4842d78..35490e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d72=['../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','findOne','allowedLoginAttempts','name','password','salt','blocked','loginAttempts','admin','agent','then','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','disabled','blockDuration','blockedAt','add','minutes','clearBlockUser','getLicense','catch','find','email','MailServerOut','service','Smtp','host','port','secure','authentication','user','pass','\x22%s\x22\x20<%s>','request','SendMail','error','format','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','signToken','json','online','body','generate','toLowerCase','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','save','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','headers','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','User','params','token','now','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordHistory','previousPasswords','resetPasswordExpires','Password\x20reset!','use','util','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','moment'];(function(_0x4b94d7,_0x483a68){var _0x40edd4=function(_0x53965b){while(--_0x53965b){_0x4b94d7['push'](_0x4b94d7['shift']());}};_0x40edd4(++_0x483a68);}(_0x2d72,0xa8));var _0x22d7=function(_0x318655,_0x356c7){_0x318655=_0x318655-0x0;var _0x361cf3=_0x2d72[_0x318655];return _0x361cf3;};'use strict';var util=require(_0x22d7('0x0'));var passport=require(_0x22d7('0x1'));var LocalStrategy=require(_0x22d7('0x2'))[_0x22d7('0x3')];var jayson=require(_0x22d7('0x4'));var _=require(_0x22d7('0x5'));var rs=require(_0x22d7('0x6'));var moment=require(_0x22d7('0x7'));var db=require(_0x22d7('0x8'))['db'];var authService=require(_0x22d7('0x9'));var utils=require(_0x22d7('0xa'));var client=jayson[_0x22d7('0xb')][_0x22d7('0xc')]({'port':0x232b});function localAuthenticate(_0x100426,_0x52a3e3,_0x23a731,_0x3791d6){var _0x492ca8,_0x3b12cd;return db[_0x22d7('0xd')][_0x22d7('0xe')]({'where':{'id':0x1},'attributes':[_0x22d7('0xf'),'blockDuration'],'raw':!![]})['then'](function(_0x1810b8){_0x492ca8=_0x1810b8;return _0x100426[_0x22d7('0xe')]({'attributes':['id',_0x22d7('0x10'),_0x22d7('0x11'),_0x22d7('0x12'),'role','disabled',_0x22d7('0x13'),'blockedAt',_0x22d7('0x14')],'where':{'name':_0x52a3e3,'role':{'$or':[_0x22d7('0x15'),'user',_0x22d7('0x16')]}}});})[_0x22d7('0x17')](function(_0x204439){if(!_0x204439||_0x204439&&_0x204439[_0x22d7('0x10')]!==_0x52a3e3){throw new Error(_0x22d7('0x18'));}else{_0x3b12cd=_0x204439;return _0x3b12cd;}})[_0x22d7('0x17')](function(){_0x3b12cd[_0x22d7('0x19')](_0x23a731,function(_0x286a87,_0x534223){var _0x352a78=_0x3b12cd[_0x22d7('0x14')]+0x1;if(_0x286a87){return _0x3791d6(_0x286a87);}else if(!_0x534223){if(_0x3b12cd[_0x22d7('0x1a')]){return _0x3791d6(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x492ca8['allowedLoginAttempts']>0x0){if(_0x3b12cd['blocked']){if(_0x492ca8[_0x22d7('0x1b')]>0x0){if(moment(_0x3b12cd[_0x22d7('0x1c')])[_0x22d7('0x1d')](_0x492ca8[_0x22d7('0x1b')],_0x22d7('0x1e'))>moment()){return _0x3791d6(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x22d7('0x1f')](_0x3b12cd,_0x352a78,![],null)[_0x22d7('0x17')](function(){return _0x3791d6(null,![],{'message':_0x22d7('0x18')});});}}else{return _0x3791d6(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x352a78>=_0x492ca8[_0x22d7('0xf')]){return utils[_0x22d7('0x1f')](_0x3b12cd,0x0,!![],moment())[_0x22d7('0x17')](function(){return _0x3791d6(null,![],{'message':_0x22d7('0x18')});});}else{return utils[_0x22d7('0x1f')](_0x3b12cd,_0x352a78,![],null)['then'](function(){return _0x3791d6(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x3791d6(null,![],{'message':_0x22d7('0x18')});}}else{if(_0x3b12cd[_0x22d7('0x1a')]){return _0x3791d6(null,![],{'message':_0x22d7('0x18')});}else if(_0x492ca8[_0x22d7('0xf')]>0x0){if(_0x3b12cd['blocked']){if(_0x492ca8[_0x22d7('0x1b')]>0x0){if(moment(_0x3b12cd[_0x22d7('0x1c')])[_0x22d7('0x1d')](_0x492ca8['blockDuration'],_0x22d7('0x1e'))>moment()){return _0x3791d6(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x22d7('0x1f')](_0x3b12cd,0x0,![],null)[_0x22d7('0x17')](function(){return utils[_0x22d7('0x20')](_0x3b12cd);})['then'](function(){return _0x3791d6(null,_0x3b12cd);});}}else{return _0x3791d6(null,![],{'message':_0x22d7('0x18')});}}else{return utils['clearBlockUser'](_0x3b12cd,0x0,![],null)['then'](function(){return utils[_0x22d7('0x20')](_0x3b12cd);})[_0x22d7('0x17')](function(){return _0x3791d6(null,_0x3b12cd);})[_0x22d7('0x21')](function(_0x27998a){return _0x3791d6(null,![],_0x27998a);});}}else{if(_0x3b12cd[_0x22d7('0x13')]){return _0x3791d6(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x22d7('0x20')](_0x3b12cd)[_0x22d7('0x17')](function(){return _0x3791d6(null,_0x3b12cd);});}}}});})[_0x22d7('0x21')](function(_0xce7f15){return _0x3791d6(null,![],_0xce7f15);});}function sendServiceMail(_0x45dc29){return db['MailAccount'][_0x22d7('0x22')]({'where':{'service':!![]},'attributes':['id',_0x22d7('0x10'),_0x22d7('0x23')],'include':[{'model':db[_0x22d7('0x24')],'as':'Smtp'}]})[_0x22d7('0x17')](function(_0x21c334){if(!_0x21c334){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x5a672d={'tls':{'rejectUnauthorized':![]}};if(_0x21c334['Smtp'][_0x22d7('0x25')]){_0x5a672d[_0x22d7('0x25')]=_0x21c334[_0x22d7('0x26')]['service'];}else{_0x5a672d[_0x22d7('0x27')]=_0x21c334['Smtp'][_0x22d7('0x27')];_0x5a672d[_0x22d7('0x28')]=_0x21c334[_0x22d7('0x26')][_0x22d7('0x28')];_0x5a672d[_0x22d7('0x29')]=_0x21c334[_0x22d7('0x26')]['secure'];}if(_0x21c334['Smtp'][_0x22d7('0x2a')]){_0x5a672d['auth']={'user':_0x21c334[_0x22d7('0x26')][_0x22d7('0x2b')],'pass':_0x21c334[_0x22d7('0x26')][_0x22d7('0x2c')]};}var _0x3b8d37={'account':_0x5a672d,'message':_['merge']({'from':util['format'](_0x22d7('0x2d'),_0x21c334['name'],_0x21c334['email']||_0x21c334[_0x22d7('0x26')]['user'])},_0x45dc29)};return client[_0x22d7('0x2e')](_0x22d7('0x2f'),_0x3b8d37);})[_0x22d7('0x17')](function(_0x5976d6){if(_0x5976d6[_0x22d7('0x30')]){throw new Error(util[_0x22d7('0x31')](_0x22d7('0x32'),_0x5976d6[_0x22d7('0x30')][_0x22d7('0x33')]||JSON[_0x22d7('0x34')](_0x5976d6[_0x22d7('0x30')])));}return!![];});}function handleError(_0x158ccd,_0x4f487d,_0x52e1ae){return _0x158ccd[_0x22d7('0x35')](_0x4f487d||0x1f4)[_0x22d7('0x36')]({'message':_0x52e1ae?_0x52e1ae[_0x22d7('0x33')]||_0x52e1ae:''});}exports[_0x22d7('0x37')]=function(_0x4bc6cc,_0x33239e,_0x5191d1){passport['authenticate'](_0x22d7('0x38'),function(_0x296ad3,_0x3b7808,_0x431592){var _0x798f9a=_0x296ad3||_0x431592;if(_0x798f9a){return handleError(_0x33239e,0x191,_0x798f9a);}if(!_0x3b7808){return handleError(_0x33239e,0x194,{'message':_0x22d7('0x39')});}else{var _0x33d434={'payload':{'id':_0x3b7808['id'],'role':_0x3b7808[_0x22d7('0x3a')]},'options':{'expiresIn':0x15180}};return authService[_0x22d7('0x3b')](_0x33d434)[_0x22d7('0x17')](function(_0x3b30b5){_0x33239e[_0x22d7('0x3c')]({'id':_0x3b7808['id'],'token':_0x3b30b5,'statusCall':'','isAlreadyLogged':_0x3b7808[_0x22d7('0x3d')]});});}})(_0x4bc6cc,_0x33239e,_0x5191d1);};exports['forgot']=function(_0x3f2cdb,_0x1033a2,_0x1aa4d8){if(!_0x3f2cdb[_0x22d7('0x3e')][_0x22d7('0x23')]){return handleError(_0x1033a2,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0x53b10f=rs[_0x22d7('0x3f')]();_0x3f2cdb[_0x22d7('0x3e')][_0x22d7('0x23')]=_0x3f2cdb[_0x22d7('0x3e')]['email']['trim']()[_0x22d7('0x40')]();var _0x4613b2;return db['Setting'][_0x22d7('0xe')]({'where':{'id':0x1},'attributes':[_0x22d7('0xf'),_0x22d7('0x1b')],'raw':!![]})[_0x22d7('0x17')](function(_0x32f8ef){_0x4613b2=_0x32f8ef;return db['User']['find']({'where':{'email':_0x3f2cdb['body'][_0x22d7('0x23')]}});})[_0x22d7('0x17')](function(_0xbdc416){if(!_0xbdc416){throw new Error(_0x22d7('0x41'));}if(_0xbdc416[_0x22d7('0x1a')]){throw new Error(_0x22d7('0x42'));}if(_0xbdc416[_0x22d7('0x13')]){if(moment(_0xbdc416[_0x22d7('0x1c')])['add'](_0x4613b2[_0x22d7('0x1b')],'minutes')>moment()){throw new Error(_0x22d7('0x43'));}else{_0xbdc416[_0x22d7('0x13')]=![];_0xbdc416[_0x22d7('0x1c')]=null;}}_0xbdc416[_0x22d7('0x44')]=_0x53b10f;_0xbdc416['resetPasswordExpires']=Date['now']()+0x36ee80;return _0xbdc416[_0x22d7('0x45')]();})[_0x22d7('0x17')](function(){return sendServiceMail({'to':_0x3f2cdb[_0x22d7('0x3e')][_0x22d7('0x23')],'subject':'xCally\x20Motion\x20Password\x20Reset','text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0x22d7('0x46')+'https://'+_0x3f2cdb[_0x22d7('0x47')][_0x22d7('0x27')]+'/reset/'+_0x53b10f+'\x0a\x0a'+_0x22d7('0x48')});})[_0x22d7('0x17')](function(){_0x1033a2[_0x22d7('0x35')](0xc8)[_0x22d7('0x36')]({'message':_0x22d7('0x49')});})['catch'](function(_0x2e9dcf){return handleError(_0x1033a2,0x1f4,_0x2e9dcf);});};exports[_0x22d7('0x4a')]=function(_0x43edb0,_0x447938,_0x35206a){return db[_0x22d7('0x4b')][_0x22d7('0x22')]({'where':{'resetPasswordToken':_0x43edb0[_0x22d7('0x4c')][_0x22d7('0x4d')],'resetPasswordExpires':{'$gt':Date[_0x22d7('0x4e')]()}}})[_0x22d7('0x17')](function(_0x4c4a7d){if(!_0x4c4a7d){throw new Error(_0x22d7('0x4f'));}return db[_0x22d7('0xd')][_0x22d7('0xe')]({'attributes':['id',_0x22d7('0x50'),_0x22d7('0x51'),_0x22d7('0x52')]})[_0x22d7('0x17')](function(_0xf7e694){if(_0xf7e694[_0x22d7('0x50')])authService['validatePasswordPattern'](_0x43edb0[_0x22d7('0x3e')][_0x22d7('0x11')]);if(!_0xf7e694[_0x22d7('0x51')]||!_0x4c4a7d['previousPasswords'])return _0x4c4a7d;authService[_0x22d7('0x53')](_0x43edb0['body'][_0x22d7('0x11')],_0x4c4a7d[_0x22d7('0x54')],_0xf7e694[_0x22d7('0x52')]);return _0x4c4a7d;})['then'](function(){_0x4c4a7d[_0x22d7('0x11')]=_0x43edb0['body'][_0x22d7('0x11')];_0x4c4a7d[_0x22d7('0x44')]=null;_0x4c4a7d[_0x22d7('0x55')]=null;return _0x4c4a7d[_0x22d7('0x45')]();});})['then'](function(){_0x447938[_0x22d7('0x35')](0xc8)[_0x22d7('0x36')]({'message':_0x22d7('0x56')});})['catch'](function(_0x22d330){return handleError(_0x447938,0x1f4,_0x22d330);});};passport[_0x22d7('0x57')](new LocalStrategy({'usernameField':'name','passwordField':'password'},function(_0x221542,_0x1c20ca,_0x3ee60f){return localAuthenticate(db[_0x22d7('0x4b')],_0x221542,_0x1c20ca,_0x3ee60f);}));
\ No newline at end of file
+var _0x0295=['resetPasswordToken','now','save','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','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','status','send','Reset\x20Email\x20sent!','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','securePassword','validatePasswordPattern','previousPasswords','password','resetPasswordExpires','util','Strategy','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','findOne','blockDuration','name','salt','role','disabled','blockedAt','loginAttempts','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','then','authenticate','allowedLoginAttempts','blocked','minutes','clearBlockUser','add','catch','getLicense','MailAccount','email','MailServerOut','Smtp','service','host','port','user','merge','format','\x22%s\x22\x20<%s>','request','error','message','stringify','login','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','online','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','Setting','User','find','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.'];(function(_0x1e35bd,_0x40ee90){var _0x2c379d=function(_0x347fa7){while(--_0x347fa7){_0x1e35bd['push'](_0x1e35bd['shift']());}};_0x2c379d(++_0x40ee90);}(_0x0295,0x1f0));var _0x5029=function(_0x47acac,_0x3b8af6){_0x47acac=_0x47acac-0x0;var _0xebed16=_0x0295[_0x47acac];return _0xebed16;};'use strict';var util=require(_0x5029('0x0'));var passport=require('passport');var LocalStrategy=require('passport-local')[_0x5029('0x1')];var jayson=require('jayson/promise');var _=require('lodash');var rs=require(_0x5029('0x2'));var moment=require(_0x5029('0x3'));var db=require(_0x5029('0x4'))['db'];var authService=require(_0x5029('0x5'));var utils=require(_0x5029('0x6'));var client=jayson[_0x5029('0x7')][_0x5029('0x8')]({'port':0x232b});function localAuthenticate(_0x215955,_0x5b3cd,_0x502a62,_0x54978f){var _0x4ee867,_0xf4459b;return db['Setting'][_0x5029('0x9')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x5029('0xa')],'raw':!![]})['then'](function(_0x222ddb){_0x4ee867=_0x222ddb;return _0x215955[_0x5029('0x9')]({'attributes':['id',_0x5029('0xb'),'password',_0x5029('0xc'),_0x5029('0xd'),_0x5029('0xe'),'blocked',_0x5029('0xf'),_0x5029('0x10')],'where':{'name':_0x5b3cd,'role':{'$or':['admin','user','agent']}}});})['then'](function(_0x2484ac){if(!_0x2484ac||_0x2484ac&&_0x2484ac[_0x5029('0xb')]!==_0x5b3cd){throw new Error(_0x5029('0x11'));}else{_0xf4459b=_0x2484ac;return _0xf4459b;}})[_0x5029('0x12')](function(){_0xf4459b[_0x5029('0x13')](_0x502a62,function(_0x11c24b,_0xe278b7){var _0x317c20=_0xf4459b[_0x5029('0x10')]+0x1;if(_0x11c24b){return _0x54978f(_0x11c24b);}else if(!_0xe278b7){if(_0xf4459b[_0x5029('0xe')]){return _0x54978f(null,![],{'message':_0x5029('0x11')});}else if(_0x4ee867[_0x5029('0x14')]>0x0){if(_0xf4459b[_0x5029('0x15')]){if(_0x4ee867[_0x5029('0xa')]>0x0){if(moment(_0xf4459b[_0x5029('0xf')])['add'](_0x4ee867[_0x5029('0xa')],_0x5029('0x16'))>moment()){return _0x54978f(null,![],{'message':_0x5029('0x11')});}else{return utils[_0x5029('0x17')](_0xf4459b,_0x317c20,![],null)[_0x5029('0x12')](function(){return _0x54978f(null,![],{'message':_0x5029('0x11')});});}}else{return _0x54978f(null,![],{'message':_0x5029('0x11')});}}else{if(_0x317c20>=_0x4ee867['allowedLoginAttempts']){return utils[_0x5029('0x17')](_0xf4459b,0x0,!![],moment())['then'](function(){return _0x54978f(null,![],{'message':_0x5029('0x11')});});}else{return utils[_0x5029('0x17')](_0xf4459b,_0x317c20,![],null)[_0x5029('0x12')](function(){return _0x54978f(null,![],{'message':_0x5029('0x11')});});}}}else{return _0x54978f(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0xf4459b['disabled']){return _0x54978f(null,![],{'message':_0x5029('0x11')});}else if(_0x4ee867['allowedLoginAttempts']>0x0){if(_0xf4459b[_0x5029('0x15')]){if(_0x4ee867[_0x5029('0xa')]>0x0){if(moment(_0xf4459b[_0x5029('0xf')])[_0x5029('0x18')](_0x4ee867[_0x5029('0xa')],_0x5029('0x16'))>moment()){return _0x54978f(null,![],{'message':_0x5029('0x11')});}else{return utils[_0x5029('0x17')](_0xf4459b,0x0,![],null)[_0x5029('0x12')](function(){return utils['getLicense'](_0xf4459b);})['then'](function(){return _0x54978f(null,_0xf4459b);});}}else{return _0x54978f(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0x5029('0x17')](_0xf4459b,0x0,![],null)[_0x5029('0x12')](function(){return utils['getLicense'](_0xf4459b);})['then'](function(){return _0x54978f(null,_0xf4459b);})[_0x5029('0x19')](function(_0x1e7e61){return _0x54978f(null,![],_0x1e7e61);});}}else{if(_0xf4459b[_0x5029('0x15')]){return _0x54978f(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x5029('0x1a')](_0xf4459b)[_0x5029('0x12')](function(){return _0x54978f(null,_0xf4459b);});}}}});})['catch'](function(_0x2b6d99){return _0x54978f(null,![],_0x2b6d99);});}function sendServiceMail(_0x31f0a0){return db[_0x5029('0x1b')]['find']({'where':{'service':!![]},'attributes':['id',_0x5029('0xb'),_0x5029('0x1c')],'include':[{'model':db[_0x5029('0x1d')],'as':'Smtp'}]})[_0x5029('0x12')](function(_0x2bb398){if(!_0x2bb398){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x1d79b9={'tls':{'rejectUnauthorized':![]}};if(_0x2bb398[_0x5029('0x1e')][_0x5029('0x1f')]){_0x1d79b9[_0x5029('0x1f')]=_0x2bb398[_0x5029('0x1e')][_0x5029('0x1f')];}else{_0x1d79b9[_0x5029('0x20')]=_0x2bb398[_0x5029('0x1e')][_0x5029('0x20')];_0x1d79b9[_0x5029('0x21')]=_0x2bb398[_0x5029('0x1e')][_0x5029('0x21')];_0x1d79b9['secure']=_0x2bb398[_0x5029('0x1e')]['secure'];}if(_0x2bb398[_0x5029('0x1e')]['authentication']){_0x1d79b9['auth']={'user':_0x2bb398[_0x5029('0x1e')][_0x5029('0x22')],'pass':_0x2bb398[_0x5029('0x1e')]['pass']};}var _0x2a1535={'account':_0x1d79b9,'message':_[_0x5029('0x23')]({'from':util[_0x5029('0x24')](_0x5029('0x25'),_0x2bb398[_0x5029('0xb')],_0x2bb398[_0x5029('0x1c')]||_0x2bb398[_0x5029('0x1e')][_0x5029('0x22')])},_0x31f0a0)};return client[_0x5029('0x26')]('SendMail',_0x2a1535);})[_0x5029('0x12')](function(_0xa4a432){if(_0xa4a432[_0x5029('0x27')]){throw new Error(util[_0x5029('0x24')]('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0xa4a432[_0x5029('0x27')][_0x5029('0x28')]||JSON[_0x5029('0x29')](_0xa4a432['error'])));}return!![];});}function handleError(_0x4904cc,_0x2d1ccb,_0x17756b){return _0x4904cc['status'](_0x2d1ccb||0x1f4)['send']({'message':_0x17756b?_0x17756b[_0x5029('0x28')]||_0x17756b:''});}exports[_0x5029('0x2a')]=function(_0x270d66,_0x3210cb,_0x33c8c3){passport[_0x5029('0x13')](_0x5029('0x2b'),function(_0x2f13b1,_0x10eb75,_0x3effa4){var _0x3e5b67=_0x2f13b1||_0x3effa4;if(_0x3e5b67){return handleError(_0x3210cb,0x191,_0x3e5b67);}if(!_0x10eb75){return handleError(_0x3210cb,0x194,{'message':_0x5029('0x2c')});}else{var _0x46314a={'payload':{'id':_0x10eb75['id'],'role':_0x10eb75[_0x5029('0xd')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x46314a)['then'](function(_0x73797c){_0x3210cb[_0x5029('0x2d')]({'id':_0x10eb75['id'],'token':_0x73797c,'statusCall':'','isAlreadyLogged':_0x10eb75[_0x5029('0x2e')]});});}})(_0x270d66,_0x3210cb,_0x33c8c3);};exports['forgot']=function(_0x32d8a3,_0x39b216,_0x52572a){if(!_0x32d8a3[_0x5029('0x2f')]['email']){return handleError(_0x39b216,0x1f4,{'message':_0x5029('0x30')});}var _0x5653cb=rs[_0x5029('0x31')]();_0x32d8a3[_0x5029('0x2f')][_0x5029('0x1c')]=_0x32d8a3[_0x5029('0x2f')][_0x5029('0x1c')][_0x5029('0x32')]()[_0x5029('0x33')]();var _0x1021ea;return db[_0x5029('0x34')]['findOne']({'where':{'id':0x1},'attributes':[_0x5029('0x14'),_0x5029('0xa')],'raw':!![]})[_0x5029('0x12')](function(_0x1edc00){_0x1021ea=_0x1edc00;return db[_0x5029('0x35')][_0x5029('0x36')]({'where':{'email':_0x32d8a3['body'][_0x5029('0x1c')]}});})[_0x5029('0x12')](function(_0x9434ed){if(!_0x9434ed){throw new Error(_0x5029('0x37'));}if(_0x9434ed[_0x5029('0xe')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x9434ed[_0x5029('0x15')]){if(moment(_0x9434ed[_0x5029('0xf')])[_0x5029('0x18')](_0x1021ea[_0x5029('0xa')],_0x5029('0x16'))>moment()){throw new Error(_0x5029('0x38'));}else{_0x9434ed[_0x5029('0x15')]=![];_0x9434ed[_0x5029('0xf')]=null;}}_0x9434ed[_0x5029('0x39')]=_0x5653cb;_0x9434ed['resetPasswordExpires']=Date[_0x5029('0x3a')]()+0x36ee80;return _0x9434ed[_0x5029('0x3b')]();})[_0x5029('0x12')](function(){return sendServiceMail({'to':_0x32d8a3[_0x5029('0x2f')]['email'],'subject':'xCally\x20Motion\x20Password\x20Reset','text':_0x5029('0x3c')+_0x5029('0x3d')+_0x5029('0x3e')+_0x32d8a3[_0x5029('0x3f')][_0x5029('0x20')]+_0x5029('0x40')+_0x5653cb+'\x0a\x0a'+_0x5029('0x41')});})[_0x5029('0x12')](function(){_0x39b216[_0x5029('0x42')](0xc8)[_0x5029('0x43')]({'message':_0x5029('0x44')});})[_0x5029('0x19')](function(_0x449ef5){return handleError(_0x39b216,0x1f4,_0x449ef5);});};exports[_0x5029('0x45')]=function(_0x3168bd,_0x175cc0,_0x10fc07){return db[_0x5029('0x35')][_0x5029('0x36')]({'where':{'resetPasswordToken':_0x3168bd[_0x5029('0x46')][_0x5029('0x47')],'resetPasswordExpires':{'$gt':Date['now']()}}})[_0x5029('0x12')](function(_0x5e1bcb){if(!_0x5e1bcb){throw new Error(_0x5029('0x48'));}return db[_0x5029('0x34')]['findOne']({'attributes':['id','securePassword',_0x5029('0x49'),'passwordHistoryLimit']})['then'](function(_0xe8c35a){if(_0xe8c35a[_0x5029('0x4a')])authService[_0x5029('0x4b')](_0x3168bd['body']['password']);if(!_0xe8c35a[_0x5029('0x49')]||!_0x5e1bcb[_0x5029('0x4c')])return _0x5e1bcb;authService['validatePasswordHistory'](_0x3168bd[_0x5029('0x2f')]['password'],_0x5e1bcb[_0x5029('0x4c')],_0xe8c35a['passwordHistoryLimit']);return _0x5e1bcb;})[_0x5029('0x12')](function(){_0x5e1bcb[_0x5029('0x4d')]=_0x3168bd[_0x5029('0x2f')][_0x5029('0x4d')];_0x5e1bcb[_0x5029('0x39')]=null;_0x5e1bcb[_0x5029('0x4e')]=null;return _0x5e1bcb[_0x5029('0x3b')]();});})[_0x5029('0x12')](function(){_0x175cc0['status'](0xc8)[_0x5029('0x43')]({'message':'Password\x20reset!'});})[_0x5029('0x19')](function(_0x3c4ecd){return handleError(_0x175cc0,0x1f4,_0x3c4ecd);});};passport['use'](new LocalStrategy({'usernameField':_0x5029('0xb'),'passwordField':'password'},function(_0x58928f,_0x55c57c,_0x34e93a){return localAuthenticate(db['User'],_0x58928f,_0x55c57c,_0x34e93a);}));
\ No newline at end of file