<?php namespace BookStack\Repos;
+use Activity;
+use BookStack\Image;
use BookStack\Role;
use BookStack\User;
use Exception;
-use BookStack\Services\ImageService;
+use Images;
class UserRepo
{
protected $user;
protected $role;
protected $entityRepo;
- protected $imageService;
/**
* UserRepo constructor.
* @param Role $role
* @param EntityRepo $entityRepo
*/
- public function __construct(User $user, Role $role, EntityRepo $entityRepo, ImageService $imageService)
+ public function __construct(User $user, Role $role, EntityRepo $entityRepo)
{
$this->user = $user;
$this->role = $role;
$this->entityRepo = $entityRepo;
- $this->imageService = $imageService;
}
/**
// Get avatar from gravatar and save
if (!config('services.disable_services')) {
try {
- $avatar = \Images::saveUserGravatar($user);
+ $avatar = Images::saveUserGravatar($user);
$user->avatar()->associate($avatar);
$user->save();
} catch (Exception $e) {
/**
* Remove the given user from storage, Delete all related content.
* @param User $user
+ * @throws Exception
*/
public function destroy(User $user)
{
$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);
+ // Delete user profile images
+ $profileImages = $images = Image::where('type', '=', 'user')->where('created_by', '=', $user->id)->get();
+ foreach ($profileImages as $image) {
+ Images::destroyImage($image);
}
}
*/
public function getActivity(User $user, $count = 20, $page = 0)
{
- return \Activity::userActivity($user, $count, $page);
+ return Activity::userActivity($user, $count, $page);
}
/**
* Destroys an Image object along with its files and thumbnails.
* @param Image $image
* @return bool
+ * @throws Exception
*/
public function destroyImage(Image $image)
{
$this->assertTrue($testImageData === $uploadedImageData, "Uploaded image file data does not match our test image as expected");
}
+ public function test_user_images_deleted_on_user_deletion()
+ {
+ $editor = $this->getEditor();
+ $this->actingAs($editor);
+
+ $imageName = 'profile.png';
+ $relPath = $this->getTestImagePath('gallery', $imageName);
+ $this->deleteImage($relPath);
+
+ $file = $this->getTestImage($imageName);
+ $this->call('POST', '/images/user/upload', [], [], ['file' => $file], []);
+ $this->call('POST', '/images/user/upload', [], [], ['file' => $file], []);
+
+ $profileImages = Image::where('type', '=', 'user')->where('created_by', '=', $editor->id)->get();
+ $this->assertTrue($profileImages->count() === 2, "Found profile images does not match upload count");
+
+ $userDelete = $this->asAdmin()->delete("/settings/users/{$editor->id}");
+ $userDelete->assertStatus(302);
+ $this->assertDatabaseMissing('images', [
+ 'type' => 'user',
+ 'created_by' => $editor->id
+ ]);
+ }
+
}
\ No newline at end of file
->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
- ]);
- }
+
}