@@ -152,7 +152,7 @@ public function signIn(array $args, PKPRequest $request): void
152
152
Validation::logout ();
153
153
$ request ->redirect (null , null , 'changePassword ' , [$ user ->getUsername ()]);
154
154
}
155
- $ source = str_replace ( ' @ ' , '' , $ request ->getUserVar ('source ' ) );
155
+ $ source = $ request ->getUserVar ('source ' );
156
156
if (preg_match ('#^/\w# ' , (string ) $ source ) === 1 ) {
157
157
$ request ->redirectUrl ($ source );
158
158
}
@@ -194,7 +194,7 @@ public function signOut($args, $request)
194
194
Validation::logout ();
195
195
}
196
196
197
- $ source = str_replace ( ' @ ' , '' , $ request ->getUserVar ('source ' ) );
197
+ $ source = $ request ->getUserVar ('source ' );
198
198
if (isset ($ source ) && !empty ($ source )) {
199
199
$ request ->redirectUrl ($ request ->getProtocol () . ':// ' . $ request ->getServerHost () . $ source , false );
200
200
} else {
@@ -214,6 +214,12 @@ public function lostPassword($args, $request)
214
214
$ this ->setupTemplate ($ request );
215
215
$ templateMgr = TemplateManager::getManager ($ request );
216
216
217
+ // Check if reCAPTCHA is enabled for lost password
218
+ $ isCaptchaEnabled = Config::getVar ('captcha ' , 'captcha_on_lost_password ' ) && Config::getVar ('captcha ' , 'recaptcha ' );
219
+ if ($ isCaptchaEnabled ) {
220
+ $ templateMgr ->assign ('recaptchaPublicKey ' , Config::getVar ('captcha ' , 'recaptcha_public_key ' ));
221
+ }
222
+
217
223
$ this ->_generateAltchaComponent ('altcha_on_lost_password ' , $ templateMgr );
218
224
$ templateMgr ->display ('frontend/pages/userLostPassword.tpl ' );
219
225
}
@@ -226,8 +232,25 @@ public function requestResetPassword($args, $request)
226
232
$ this ->setupTemplate ($ request );
227
233
$ templateMgr = TemplateManager::getManager ($ request );
228
234
229
- $ altchaHasError = $ this ->_validateAltchasResponse ($ request , 'altcha_on_lost_password ' );
235
+ // Validate reCAPTCHA if enabled
236
+ $ isCaptchaEnabled = Config::getVar ('captcha ' , 'captcha_on_lost_password ' ) && Config::getVar ('captcha ' , 'recaptcha ' );
237
+ if ($ isCaptchaEnabled ) {
238
+ $ templateMgr ->assign ('recaptchaPublicKey ' , Config::getVar ('captcha ' , 'recaptcha_public_key ' ));
239
+ try {
240
+ FormValidatorReCaptcha::validateResponse ($ request ->getUserVar ('g-recaptcha-response ' ), $ request ->getRemoteAddr (), $ request ->getServerHost ());
241
+ } catch (Exception $ exception ) {
242
+ // Keep the reCAPTCHA public key in the template
243
+ $ templateMgr ->assign ([
244
+ 'recaptchaPublicKey ' => Config::getVar ('captcha ' , 'recaptcha_public_key ' ),
245
+ 'error ' => 'user.login.lostPassword.confirmationSentFailedWithReason ' ,
246
+ 'reason ' => __ ('common.captcha.error.invalid-input-response ' )
247
+ ]);
248
+ $ templateMgr ->display ('frontend/pages/userLostPassword.tpl ' );
249
+ return ;
250
+ }
251
+ }
230
252
253
+ $ altchaHasError = $ this ->_validateAltchasResponse ($ request , 'altcha_on_lost_password ' );
231
254
if ($ altchaHasError ) {
232
255
$ this ->_generateAltchaComponent ('altcha_on_lost_password ' , $ templateMgr );
233
256
@@ -491,8 +514,11 @@ public function _redirectByURL($request)
491
514
*/
492
515
protected function sendHome ($ request )
493
516
{
494
- $ pkpPageRouter = $ request ->getRouter (); /** @var \PKP\core\PKPPageRouter $pkpPageRouter */
495
- $ pkpPageRouter ->redirectHome ($ request );
517
+ if ($ request ->getContext ()) {
518
+ $ request ->redirect (null , 'submissions ' );
519
+ } else {
520
+ $ request ->redirect (null , 'user ' );
521
+ }
496
522
}
497
523
498
524
/**
@@ -510,7 +536,6 @@ private function _validateAltchasResponse($request, $altchaConfigKey): ?string
510
536
return 'common.captcha.error.missing-input-response ' ;
511
537
}
512
538
}
513
- return null ;
514
539
}
515
540
516
541
/**
0 commit comments