Skip to content

Commit cfb8c6c

Browse files
authored
Added logout by path (#134)
1 parent 03bbd8f commit cfb8c6c

File tree

1 file changed

+34
-1
lines changed

1 file changed

+34
-1
lines changed

src/Codeception/Module/Symfony/SessionAssertionsTrait.php

+34-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
1111
use Symfony\Component\Security\Core\User\UserInterface;
1212
use Symfony\Component\Security\Guard\Token\PostAuthenticationGuardToken;
13+
use Symfony\Component\Security\Http\Logout\LogoutUrlGenerator;
1314
use function is_int;
1415
use function serialize;
1516

@@ -81,14 +82,41 @@ public function dontSeeInSession(string $attribute, $value = null): void
8182
}
8283

8384
/**
84-
* Invalidate the current session.
85+
* Go to the configured logout url (by default: `/logout`).
86+
* This method includes redirection to the destination page configured after logout.
87+
*
88+
* See the Symfony documentation on ['Logging Out'](https://symfony.com/doc/current/security.html#logging-out).
89+
*/
90+
public function goToLogoutPath(): void
91+
{
92+
$logoutUrlGenerator = $this->getLogoutUrlGenerator();
93+
$logoutPath = $logoutUrlGenerator->getLogoutPath();
94+
$this->amOnPage($logoutPath);
95+
}
96+
97+
/**
98+
* Alias method for [`logoutProgrammatically()`](https://codeception.com/docs/modules/Symfony#logoutProgrammatically)
8599
*
86100
* ```php
87101
* <?php
88102
* $I->logout();
89103
* ```
90104
*/
91105
public function logout(): void
106+
{
107+
$this->logoutProgrammatically();
108+
}
109+
110+
/**
111+
* Invalidates the current user's session and expires the session cookies.
112+
* This method does not include any redirects after logging out.
113+
*
114+
* ```php
115+
* <?php
116+
* $I->logoutProgrammatically();
117+
* ```
118+
*/
119+
public function logoutProgrammatically(): void
92120
{
93121
if ($tokenStorage = $this->getTokenStorage()) {
94122
$tokenStorage->setToken();
@@ -164,6 +192,11 @@ protected function getTokenStorage(): ?TokenStorageInterface
164192
return $this->getService('security.token_storage');
165193
}
166194

195+
protected function getLogoutUrlGenerator(): ?LogoutUrlGenerator
196+
{
197+
return $this->getService('security.logout_url_generator');
198+
}
199+
167200
protected function getCurrentSession(): SessionInterface
168201
{
169202
return $this->grabService('session');

0 commit comments

Comments
 (0)