Skip to content

Commit

Permalink
ENH Disable temporary sudo mode after login
Browse files Browse the repository at this point in the history
  • Loading branch information
emteknetnz committed Feb 10, 2025
1 parent 506aef4 commit 60f4ea7
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
7 changes: 7 additions & 0 deletions src/Authenticator/LoginHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -491,6 +491,13 @@ public function redirectAfterSuccessfulLogin(): HTTPResponse
}
$request->getSession()->clear(static::SESSION_KEY . '.mustLogin');

// Deactivate sudo mode that was activated in doLogin()
$service = $this->getSudoModeService();
// Check if the service has a deactivate method, because it is not defined on the interface
if (method_exists($service, 'deactivate')) {
call_user_func([$service, 'deactivate'], $this->getRequest()->getSession());
}

// Delegate to parent logic
return parent::redirectAfterSuccessfulLogin();
}
Expand Down
3 changes: 2 additions & 1 deletion tests/Behat/features/mfa-enabled.feature
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ Feature: MFA is enabled for the site
So that my site will be more secure

Background:
Given I am logged in with "ADMIN" permissions
Given I add an extension "SilverStripe\FrameworkTest\SudoMode\DisableSudoModeFormExtension" to the "SilverStripe\Forms\Form" class
And I am logged in with "ADMIN" permissions
And I go to "/admin"
Then I should see the CMS

Expand Down

0 comments on commit 60f4ea7

Please sign in to comment.