mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 04:31:10 +08:00
FEATURE: support for enabling all upload file types
BUGFIX: authorized extensions is now case insensitive
This commit is contained in:
@ -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)
|
||||
|
Reference in New Issue
Block a user