X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/920964a5612494bb1f25223b7c1de1379096c848..refs/pull/632/head:/app/Http/Controllers/ImageController.php diff --git a/app/Http/Controllers/ImageController.php b/app/Http/Controllers/ImageController.php index 1b064de01..e675bff0c 100644 --- a/app/Http/Controllers/ImageController.php +++ b/app/Http/Controllers/ImageController.php @@ -1,6 +1,7 @@ file($path); + } + /** * Get all images for a specific type, Paginated * @param string $type @@ -104,7 +120,10 @@ class ImageController extends Controller $this->validate($request, [ 'file' => 'is_image' ]); - // TODO - Restrict & validate types + + if (!$this->imageRepo->isValidType($type)) { + return $this->jsonError(trans('errors.image_upload_type_error')); + } $imageUpload = $request->file('file'); @@ -142,6 +161,32 @@ class ImageController extends Controller return response()->json($image); } + /** + * Replace the data content of a drawing. + * @param string $id + * @param Request $request + * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\JsonResponse|\Symfony\Component\HttpFoundation\Response + */ + public function replaceDrawing(string $id, Request $request) + { + $this->validate($request, [ + 'image' => 'required|string' + ]); + $this->checkPermission('image-create-all'); + + $imageBase64Data = $request->get('image'); + $image = $this->imageRepo->getById($id); + $this->checkOwnablePermission('image-update', $image); + + try { + $image = $this->imageRepo->replaceDrawingContent($image, $imageBase64Data); + } catch (ImageUploadException $e) { + return response($e->getMessage(), 500); + } + + return response()->json($image); + } + /** * Get the content of an image based64 encoded. * @param $id