From 35e00ddb95733221a8868d81dec65e4d329eb1c3 Mon Sep 17 00:00:00 2001 From: Sampath Kumar Date: Sun, 28 Jan 2018 19:20:24 +0530 Subject: [PATCH] #630: Deleting user's profile pics on deleting of user account (#646) * Issue-630: Fixed issue with deleting user profile pics when deleting a user. * Issue #630: Deleting user's profile pics on deleting of user account * Issue-630: Added test case for deleting user --- app/Repos/UserRepo.php | 11 ++++++++++- tests/UserProfileTest.php | 15 +++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/Repos/UserRepo.php b/app/Repos/UserRepo.php index 52ad2e47e..a159606da 100644 --- a/app/Repos/UserRepo.php +++ b/app/Repos/UserRepo.php @@ -3,6 +3,7 @@ use BookStack\Role; use BookStack\User; use Exception; +use BookStack\Services\ImageService; class UserRepo { @@ -10,6 +11,7 @@ class UserRepo protected $user; protected $role; protected $entityRepo; + protected $imageService; /** * UserRepo constructor. @@ -17,11 +19,12 @@ class UserRepo * @param Role $role * @param EntityRepo $entityRepo */ - public function __construct(User $user, Role $role, EntityRepo $entityRepo) + public function __construct(User $user, Role $role, EntityRepo $entityRepo, ImageService $imageService) { $this->user = $user; $this->role = $role; $this->entityRepo = $entityRepo; + $this->imageService = $imageService; } /** @@ -145,6 +148,12 @@ class UserRepo { $user->socialAccounts()->delete(); $user->delete(); + + // Deleting User profile pics + $profilePic = $user->image_id ? $user->avatar->findOrFail($user->image_id) : FALSE; + if ($profilePic) { + $this->imageService->destroyImage($profilePic); + } } /** diff --git a/tests/UserProfileTest.php b/tests/UserProfileTest.php index 3262117d5..e6b0b4f5f 100644 --- a/tests/UserProfileTest.php +++ b/tests/UserProfileTest.php @@ -115,4 +115,19 @@ class UserProfileTest extends BrowserKitTest ->visit('/books') ->pageHasElement('.featured-image-container'); } + + public function test_user_delete() + { + $newUser = $this->getNewBlankUser(); + $this->actingAs($newUser); + $this->asAdmin()->visit('/settings/users/' . $newUser->id . '/delete') + ->see('Delete User') + ->press('Confirm') + ->seePageIs('/settings/users/') + ->see('USERS')->see('ADD NEW USER'); + + $this->dontSeeInDatabase('images', [ + 'id' => $newUser->image_id + ]); + } }