From e8c4694ef0a97b183ef75d948e9d1e94eec8f4e1 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sun, 26 Apr 2015 01:42:22 +0200 Subject: [PATCH] Added validations for uploaded screenshots. Checks if Paperclip complained about an invalid file (e.g. no PNG) Checks if the upload is a duplicate. --- app/controllers/packages_controller.rb | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/controllers/packages_controller.rb b/app/controllers/packages_controller.rb index 430c276..9a92e6e 100644 --- a/app/controllers/packages_controller.rb +++ b/app/controllers/packages_controller.rb @@ -27,7 +27,23 @@ class PackagesController < ApplicationController def upload_image @package = Package.find_by(name: params[:name]) params[:screenshot][:image].each do |img| - @package.screenshots.create(image: img) + new_screenshot = @package.screenshots.new(image: img) + + # Check if the image is already present by checking its checksum. + if @package.screenshots.find_by(image_fingerprint: new_screenshot.image_fingerprint) + # logger.error "Uploaded image exists already for package #{@package.name}. Rejecting." + flash['alert'] = "Sorry - you uploaded a duplicate screenshot. I am ignoring it." + else + new_screenshot.save + end + + # Check if the image was valid + unless new_screenshot.valid? + flash['alert'] = "Sorry - you uploaded an invalid file. Was it really a PNG?" + else + new_screenshot.save + end + # TODO: add logging # TODO: what do we do if the user uploads an invalid image? tell them? end