Also, with MFA, I had a custom setup and converted it to PHPMaker’s version when I upgraded. Required taking the key and re-creating the profile field with the correct JSON format.
log.ERROR: Symfony\Component\Security\Core\Exception\BadCredentialsException: The presented password is invalid. in /home/[siteuser]/htdocs/[sitesubdomain]/vendor/symfony/security-http/EventListener/CheckCredentialsListener.php:67
Which happens on any attempted login.
This is without mfa enabled. Need to debug this first.
This is with password changed from char(40) to varchar(255) and with profile field changed from text to longtext. Tried with the original hashed password and also tried resetting to a plaintext one in the db. Also tried clearing the profile field for a test user. Nothing works.
Hashed passwords don’t work with or without “Migrate password algorithm” turned on. This setting does convert hashed passwords in the DB, but still cannot login.
After enabling Migrate password algorithm, the password are hashed, the Hashed password setting (and other old password settings) are no longer relevant.
If you see the passwords are converted to hashed passwords, that means the user did login successfully so the password is migrated.
You should disable Migrate password algorithm first (make sure it is false, an unchecked checkbox like [ ], not the “indeterminate” state like [-]), then restore you project and user table to the original settings until users can login first, i.e. back to your original project settings.
Since you use char(40) before, you might have whitespaces in the passwords, your varchar(255) may contain old password with spaces like 'oldpassword<spaces>' (40 chars). If that is case, you should fix first. (Profile field should be irrelevant regarding to password.)
When you can login normally with your old settings, just enable Migrate password algorithm and generate again.
Doing that and keeping the settings exactly the same from 2024 to 2025 means I can successfully login even when changing char to varchar, also no whitespaces are added to the varchar during the conversion process.
But after doing that, trying to enable “Migrate password algorithm” lets me login once per user, it updates the hash in the db, and then it never lets the user login again which brings us back to the issue when I started this thread.
Upon further investigation it looks like enabling MFA requests the file login1fa which doesn’t exist whether the site is generated with MFA or not which explains my issues with MFA. Perhaps it is related to the hash migration issue as well? From looking at other posts shouldn’t MFA be requesting login2fa not login1fa? I have no custom code related to this.
Also successful logins result in a JS error:
Failed to load resource: the server responded with a status of 502 () api/lookup:1
I also have no custom code related to this. From my understanding PHPMaker 2025 doesn’t use the api folder anymore and the migration steps say to delete that folder which I already did.
The api error seems to be related to an extended search field “Style” on the table users are directed to on login. This field uses a lookup table.
Not using the physical “api” folder does not mean the route /api/{action} is not used. (Route is not physical path.) In fact, there is many API actions being used, including lookup. 502 is Bad Gateway error, make sure:
URL rewrite of your web server is properly set up, especially if you using Nginix web server,
Lookupuser level permission is enabled for the user, if you use User Level Security.