]> BookStack Code Mirror - bookstack/commitdiff
#630: Deleting user's profile pics on deleting of user account (#646)
authorSampath Kumar <redacted>
Sun, 28 Jan 2018 13:50:24 +0000 (19:20 +0530)
committerDan Brown <redacted>
Sun, 28 Jan 2018 13:50:24 +0000 (13:50 +0000)
* 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
tests/UserProfileTest.php

index 52ad2e47e9a3390dd5ed3665a714fe2d361bcee2..a159606da74ca48ba41c0559839fcf1dd50f05f7 100644 (file)
@@ -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);
+        }
     }
 
     /**
index 3262117d5009e0bfd5bb8f9aa2b71886fbf4bf6e..e6b0b4f5f4250ae4ba7ad0ae637753aced50ab95 100644 (file)
@@ -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
+            ]);
+    }
 }