I got a problem with Rainlab Users onActivate.
When the user gets the email and click the button, the onActivate method from Account.php is called which activates the user and do a login.
However, on a usual login I also call an API in the background to login the user on a second application with the same credential.
Now since this activation + login is done, I cannot call the API since the user does not pass credentials for this login.
So now I face the problem, that if the user activates himself, he does not login to the second application which results in a kinda buggy result: First login, only half a login is done.
What would help is an optional Login in the end of onActivate or another event to logout the user…
I mean: Since there’re no credentials to pass to the API I have to avoid this login and make the user login manually, or do I overlook another solution?
Can I overwrite this method somehow and remove the login? Any events I missed?
Any help is welcome, thanks a lot ![:slight_smile: :slight_smile:](https://talk.octobercms.com/images/emoji/twitter/slight_smile.png?v=12)
Forgot about the possibility to overwrite components, but some older thread reminded me.
So for whoever has the same problem:
- Extended the component within my plugin and overwrote the onActivate method. Basically a plain copy without the login in the end
- Registered component in the Plugin.php and used it in my pages
- Also had to adjust the partial folder in my theme since I overwrote all the partials from the original account component
- In order to add a different redirect if the onActivate method is called, I also overwrote the onRun method. Basically: In case the onActiate is called, no matter the outcome, redirect to the login page…
public function onRun()
{
// Redirect to HTTPS checker
if ($redirect = $this->redirectForceSecure()) {
return $redirect;
}
// Activation code supplied
if ($code = $this->activationCode()) {
# Modified: Activate account and redirect to the login page
$this->onActivate($code);
$this->prepareVars();
return Cms::redirect("user/login");
}
$this->prepareVars();
}
Maybe this helps somebody lateron ![:wink: :wink:](https://talk.octobercms.com/images/emoji/twitter/wink.png?v=12)