Password reset link not working

The issue I’m facing is related to that reported at Unable to reset password - OJS 3.1.1.2 with postgres. I’m running OJS v3.3.0.8 and when I ask for an account password to be reset, I successfully receive a password reset email with a link. Clicking on the link though, just takes me to a blank page with the PKP favicon on the tab, instead of my journal’s favicon (screenshot below). I’m thus unable to reset account passwords. Any help/advice would be much appreciated. Thanks!

Screenshot from 2022-02-16 10-54-42

Hi @reagan,

Would you be able to check your PHP error logs and report any relevant errors from there?
That might help to pinpoint where the issue is occurring further.

Best regards,

Roger
PKP Team

@rcgillis - Thanks for your response. I looked through the PHP error log and found this at the time I click on the password reset link:

PHP Deprecated: Non-static method PKPRequest::getRequestedArgs() should not be called statically in /plugins/generic/betterPassword/BetterPasswordPlugin.inc.php on line 280
PHP Fatal error: Uncaught Error: Using $this when not in object context in /lib/pkp/classes/core/PKPRequest.inc.php:706
Stack trace:
#0 /plugins/generic/betterPassword/BetterPasswordPlugin.inc.php(280): PKPRequest::getRequestedArgs()
#1 /lib/pkp/classes/plugins/HookRegistry.inc.php(107): betterPasswordPlugin->callbackLoadHandler(‘LoadHandler’, Array)
#2 /lib/pkp/classes/core/PKPPageRouter.inc.php(202): HookRegistry::call(‘LoadHandler’, Array)
#3 /lib/pkp/classes/core/Dispatcher.inc.php(144): PKPPageRouter->route(Object(Request))
#4 /lib/pkp/classes/core/PKPApplication.inc.php(362): Dispatcher->dispatch(Object(Request))
#5 /index.php(68): PKPApplication->execute()
#6 {main}
thrown in /lib/pkp/classes/core/PKPRequest.inc.php on line 706

This appears to be related to the Better Password plugin. I remember now that I had installed this plugin manually by copying the contents of the GitHub - ulsdevteam/pkp-betterPassword: Plugin to implement password requirements for PKP OJS/OMP repository to /plugins/generic/betterPassword. I could see now that some new commits have been made to this repository, so downloaded a newer version of it and extracted it to the same folder. I still get the following error though:

PHP Deprecated: Non-static method Application::getContextList() should not be called statically in /lib/pkp/classes/core/PKPRequest.inc.php on line 293
PHP Fatal error: Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘.badpw_failedlogins’ doesn’t exist in /lib/pkp/lib/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:78
Stack trace:
#0 /lib/pkp/lib/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(78): PDO->prepare(‘\n\t\t\tSELECT *\n\t\t…’, Array)
#1 /lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(361): Doctrine\DBAL\Driver\PDOConnection->prepare(Object(Illuminate\Database\Query\Expression))
#2 /lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(664): Illuminate\Database\Connection->Illuminate\Database{closure}(Object(Illuminate\Database\Query\Expression), Array)
#3 /lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(631): Illuminate\Database\Co in /lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 671

I then went ahead and disabled this plugin, and the password reset link now works just fine. It is, however, really important for us to be able to use this plugin to avoid users creating simple passwords which pose a security threat to our site. I couldn’t find this plugin in the Plugin Gallery.

@ctgraham - Could you please confirm if this plugin is meant to be available via the Plugin Gallery at the moment?

Thanks!

The release of betterPassword compatible with 3.3 was just released this week:

We have requested that it be added to the Plugin Gallery.

If you install a plugin manually, be sure to run the upgrade or plugin installation script to register it (e.g. php lib/pkp/tools/installPluginVersion.php plugins/generic/betterPassword/version.xml). It sounds like a required database table is missing in the last error message you reported. This table should be created when the OJS upgrade or plugin installation tool is run.

2 Likes

@ctgraham - Thanks a lot for the response! I’ll just wait for this plugin to become available in the Plugin Gallery. If not available in the next few days, I’ll go ahead and try to register the plugin as you suggest. This is clearly something I didn’t know I had to do before. Cheers!

Thanks for the plugin.
When I wanted to translate the plugin into Turkish, I encountered an error in the language file.
The same line is entered 3 times.

msgid "plugins.generic.betterPassword.manager.settings.betterPasswordInvalidationMininumWarningDays"
msgstr "Number of days, before the expiration, to start warning the user daily about the password expiration."

msgid "plugins.generic.betterPassword.manager.settings.betterPasswordInvalidationMininumWarningDays"
msgstr "Number of last passwords that should be blocked for reuse must be numeric."

msgid "plugins.generic.betterPassword.manager.settings.betterPasswordInvalidationMininumWarningDays"
msgstr "Number of days, before the expiration, to start warning the user daily about the password expiration must be numeric."

Thanks, @kerimsarigul , I have opened an issue with the problem you found here:

I deleted the second key, and renamed the third, which I think corrects the problem. Can you look at the updated file and confirm?

I’ve tried. The plugin works fine.
I translated the language file into Turkish.
How can I share it to be added to the plugin?

Thanks!

If you have not used GitHub before, you can Private Message the file to me in this forum.

The preferred method is to use GitHub to create a Pull Request against the pkp-betterPassword repository.

For example: If you use the “Add file” and “Create new file” option in GitHub,
image

You can name the file “locale/tr_TR/locale.po” and pasted the contents in:
image

GitHub will ask you to create a copy (fork) of the repository and a Pull Request should automatically be created.

I was always a consumer on GitHub :slight_smile:
I added the language file with the method you specified.
I think I succeeded.

Thanks for the guidance.

Thanks, @kerimsarigul , I have created and merged the Pull Request. We’ll package a new release for the plugin with the new locale. I will check with another contributor who expressed interest in submitting a Portuguese translation first, though.

1 Like