Routing issue with password reset

I am having an issue with with password reset. Email is properly sent and I can open link set a new password. After I hit save system redirects to http://xxx/index.php?module=Users&action=Wizard and display page not found 404 error.

I believe this is some kind of issue with redirect for this particular module/action.

This is a fresh install without any customization using the latest docker image with version 8.7.1. Any ideas?

Thanks.

Maybe site url is not set properly in your ‘config.php’ file

‘site_url’ => ‘http://example.com/suitecrm’,

It almost looks like something is not activated that translates legacy into modern url.

I have it set properly pretty sure about it. Otherwise url sent in password reset email is not pointing the right place.

This is probably not very useful, unless you happen to be a developer eager to dive into the code, but you seem to be here

It’s possible that this code flow was never tested with v8… this software is huge and the team is small…

Looks like the problem is in the path resolution inside autoload_runtime.php. Code below steps into ‘legacy’ sub-directory where it later making sure that index.php exists:

    $path = './legacy';
    if (!empty($legacyRoute['dir'])) {
        $path .= '/' . $legacyRoute['dir'];
    }

    chdir($path);

The problem is that current directory is not inside public but one level above, therefore index.php is not found and 404 error is raised. This change is fixing it for me but I suspect there is a better way to fix it through config somewhere. Any ideas?

    $path = './public/legacy';

By the way, this issue seems to be with every legacy path resolution that has module and action in url.

Supposedly, SuiteCRM will init a legacy mode when needed to handle old code without having to tweak all the paths one by one. That init actually changes the PHP base directory.

Maybe for some reason that entry point is not getting the correct init

Do you see /public/ in your SuiteCRM URL?

Looks like line

$legacyRoute = $kernel->getLegacyRoute($request);

inside autoload_runtime.php resets current directory to project directory which is a parent to public directory. I don’t see how it can work through settings. Must be a common problem.

Nope it looks like a proper URL without internal structure details