Can you call a controller method from within a plugin/module in Craft 3? I initially asked a question here about how to use Solspace Freeform to build a custom front-end login form. I gave up too easily and accepted the &quot;it's possible but probably not a good idea&quot; answer. Full disclosure: I'm still trying to see if I can use Freeform as a replacement for all of the stock Craft front-end forms (login, user profile, entry, etc). There is so much available out of the box with Freeform in terms of form validation rules and styling, I really want to leverage that for all my forms.

I have a Freeform login form with the appropriate fields
In my custom module, I'm hooking into Freeform's EVENT_FORM_VALIDATE
At this point the Craft::$app-&gt;request object has everything that the craft\controllers\UsersController's actionLogin() method would need to attempt to log the user in
Is there some way to &quot;hand off&quot; the current request to the UsersController?
If the login is successful, will the UsersController go about its business and redirect the user properly?
If the login fails, I can add errors the Freeform's response as needed
Is this a terrible idea? Is there a better way to accomplish this?
Based on your goal, I don't recommend taking this approach for the technical debt reasons in my comment, however your actual question is still a valid one. You can call any controller's method from a plugin/module like this:
Craft::$app-&gt;runAction('users/save-user');