24
24
use Symfony \Component \HttpFoundation \Response ;
25
25
use Symfony \Component \PasswordHasher \Hasher \PasswordHasherFactoryInterface ;
26
26
use Symfony \Component \Routing \Annotation \Route ;
27
+ use Symfony \Component \Security \Core \Authentication \Token \Storage \TokenStorageInterface ;
27
28
use Symfony \Component \Security \Core \Exception \AccessDeniedException ;
28
29
use Symfony \Contracts \Translation \TranslatorInterface ;
29
30
@@ -222,7 +223,7 @@ public function deleteProfileNotLoggedIn(
222
223
$ member = $ memberRepository ->findOneBy (['username ' => $ data ['username ' ]]);
223
224
224
225
$ verified = false ;
225
- if (null === $ member ) {
226
+ if (null === $ member || ! $ member -> isBrowsable () ) {
226
227
$ deleteProfileForm ->addError (new FormError ($ translator ->trans ('profile.delete.credentials ' )));
227
228
} else {
228
229
$ passwordHasher = $ passwordHasherFactory ->getPasswordHasher ($ member );
@@ -239,7 +240,7 @@ public function deleteProfileNotLoggedIn(
239
240
}
240
241
241
242
if ($ success ) {
242
- return $ this ->redirectToRoute ('security_logout ' );
243
+ return $ this ->redirectToRoute ('homepage ' );
243
244
}
244
245
}
245
246
@@ -251,8 +252,12 @@ public function deleteProfileNotLoggedIn(
251
252
/**
252
253
* @Route("/members/{username}/delete", name="profile_delete")
253
254
*/
254
- public function deleteProfile (Request $ request , Member $ member , ProfileModel $ profileModel ): Response
255
- {
255
+ public function deleteProfile (
256
+ Request $ request ,
257
+ TokenStorageInterface $ tokenStorage ,
258
+ Member $ member ,
259
+ ProfileModel $ profileModel
260
+ ): Response {
256
261
$ loggedInMember = $ this ->getUser ();
257
262
if ($ member !== $ loggedInMember ) {
258
263
return $ this ->redirectToRoute ('members_profile ' , ['username ' => $ member ->getUsername ()]);
@@ -267,7 +272,10 @@ public function deleteProfile(Request $request, Member $member, ProfileModel $pr
267
272
$ success = $ profileModel ->retireProfile ($ member , $ deleteProfileForm ->getData ());
268
273
269
274
if ($ success ) {
270
- return $ this ->redirectToRoute ('security_logout ' );
275
+ // force logout
276
+ $ tokenStorage ->setToken (null ); // Force logout
277
+ $ request ->getSession ()->invalidate ();
278
+ return $ this ->redirectToRoute ('homepage ' );
271
279
}
272
280
}
273
281
0 commit comments