FEATURE: support for enabling all upload file types

BUGFIX: authorized extensions is now case insensitive
This commit is contained in:
Régis Hanol
2014-04-29 19:12:35 +02:00
parent 359d59242e
commit 4371374ba6
6 changed files with 70 additions and 23 deletions

View File

@ -47,30 +47,39 @@ class Validators::UploadValidator < ActiveModel::Validator
.tr(" ", "")
.split("|")
.each do |extension|
authorized_uploads << (extension.start_with?(".") ? extension[1..-1] : extension)
next if extension.include?("*")
authorized_uploads << (extension.start_with?(".") ? extension[1..-1] : extension).downcase
end
authorized_uploads
end
def authorized_images
@authorized_images ||= (authorized_uploads & FileHelper.images)
authorized_uploads & FileHelper.images
end
def authorized_attachments
@authorized_attachments ||= (authorized_uploads - FileHelper.images)
authorized_uploads - FileHelper.images
end
def authorizes_all_extensions?
SiteSetting.authorized_extensions.include?("*")
end
def authorized_extensions(upload, extension, extensions)
unless authorized = extensions.include?(extension)
return true if authorizes_all_extensions?
unless authorized = extensions.include?(extension.downcase)
message = I18n.t("upload.unauthorized", authorized_extensions: extensions.to_a.join(", "))
upload.errors.add(:original_filename, message)
end
authorized
end
def maximum_file_size(upload, type)
max_size_kb = SiteSetting.send("max_#{type}_size_kb").kilobytes
if upload.filesize > max_size_kb
message = I18n.t("upload.#{type}s.too_large", max_size_kb: max_size_kb)
upload.errors.add(:filesize, message)