]> BookStack Code Mirror - bookstack/blob - app/Http/Controllers/Images/UserImageController.php
Started extraction of image controller to separate controllers
[bookstack] / app / Http / Controllers / Images / UserImageController.php
1 <?php
2
3 namespace BookStack\Http\Controllers\Images;
4
5 use BookStack\Exceptions\ImageUploadException;
6 use BookStack\Uploads\ImageRepo;
7 use Illuminate\Http\Request;
8 use BookStack\Http\Controllers\Controller;
9
10 class UserImageController extends Controller
11 {
12     protected $imageRepo;
13
14     /**
15      * UserImageController constructor.
16      * @param ImageRepo $imageRepo
17      */
18     public function __construct(ImageRepo $imageRepo)
19     {
20         $this->imageRepo = $imageRepo;
21         parent::__construct();
22     }
23
24     /**
25      * Get a list of user profile images, in a list.
26      * @param Request $request
27      * @return \Illuminate\Http\JsonResponse
28      */
29     public function list(Request $request)
30     {
31         $page = $request->get('page', 1);
32         $searchTerm = $request->get('search', null);
33         $userId = $request->get('uploaded_to', null);
34
35         $this->checkPermissionOrCurrentUser('users-manage', $userId);
36
37         $imgData = $this->imageRepo->getPaginatedByType('user', $page, 24, $userId, $searchTerm);
38         return response()->json($imgData);
39     }
40
41     /**
42      * Store a new user profile image in the system.
43      * @param Request $request
44      * @return Illuminate\Http\JsonResponse
45      * @throws \Exception
46      */
47     public function create(Request $request)
48     {
49         $this->checkPermission('image-create-all');
50
51         $this->validate($request, [
52             'uploaded_to' => 'required|integer',
53             'file' => $this->imageRepo->getImageValidationRules()
54         ]);
55
56         $userId = $request->get('uploaded_to', null);
57         $this->checkPermissionOrCurrentUser('users-manage', $userId);
58
59         try {
60             $imageUpload = $request->file('file');
61             $uploadedTo = $request->get('uploaded_to', 0);
62             $image = $this->imageRepo->saveNew($imageUpload, 'user', $uploadedTo);
63         } catch (ImageUploadException $e) {
64             return response($e->getMessage(), 500);
65         }
66
67         return response()->json($image);
68     }
69
70 }