Skip to content

Commit f25ecb5

Browse files
committed
enforce maximum dimensions on uploaded images
1 parent bdbaa2d commit f25ecb5

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

app/controllers/management/cms_controller.rb

+9-2
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,14 @@ def receive_image
691691
data = params[:file][:data]
692692
original_filename = data.original_filename.strip.gsub(/[\?\s\/\:\\]+/, '-').gsub(/^-/, '').gsub(/-$/, '')
693693
localfile = File.join(target_dir, original_filename)
694-
FileUtils.cp(data.tempfile, localfile)
694+
695+
im = MiniMagick::Image.open(data.path())
696+
if im['dimensions'][0] > CmsImageMaxWidth || im['dimensions'][1] > CmsImageMaxHeight
697+
im.resize "#{CmsImageMaxWidth}x#{CmsImageMaxHeight}"
698+
im.write(localfile)
699+
else
700+
FileUtils.cp(data.path(), localfile)
701+
end
695702

696703
finish_upload_status "'#{File.basename(localfile)}'"
697704
end
@@ -715,7 +722,7 @@ def crop_image
715722
testfile = File.join(target_dir, File.basename(localfile, File.extname(localfile))) + '-croptest' + File.extname(localfile)
716723

717724
# make a smaller version to help with cropping
718-
im = MiniMagick::Image.from_file(localfile)
725+
im = MiniMagick::Image.open(localfile)
719726
im.resize "500x400>"
720727
im.write(testfile)
721728
File.chmod(0644, testfile)

config/initializers/constants.rb

+3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
UseCmsAccessLevels = false unless defined? UseCmsAccessLevels
1515
EnableAssetTimestamping = true unless defined? EnableAssetTimestamping
1616

17+
CmsImageMaxWidth = 2500 unless defined? CmsImageMaxWidth
18+
CmsImageMaxHeight = 2500 unless defined? CmsImageMaxHeight
19+
1720
# CMS gallery setup
1821
GalleryMaxWidth = 586 unless defined? GalleryMaxWidth
1922
GalleryMaxHeight = 400 unless defined? GalleryMaxHeight

0 commit comments

Comments
 (0)