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