mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 16:11:08 +08:00
FIX: uploading an existing image as a site setting
The previous fix (f43c0a5d857d34) wasn't working for images that were already uploaded. The "metadata" (eg. 'for_*' and 'secure' attributes) were not added to existing uploads. Also used 'Upload.get_from_url' is the admin/site_setting controller to properly retrieve an upload from its URL. Fixed the Upload::URL_REGEX to use the \h (hexadecimal) for the SHA Follow-up-to: f43c0a5d857d34
This commit is contained in:
@ -73,7 +73,6 @@ class UploadCreator
|
||||
# between uploads instead of the sha1, and to get around various
|
||||
# access/permission issues for uploads
|
||||
if !SiteSetting.secure_media
|
||||
|
||||
# do we already have that upload?
|
||||
@upload = Upload.find_by(sha1: sha1)
|
||||
|
||||
@ -85,6 +84,7 @@ class UploadCreator
|
||||
|
||||
# return the previous upload if any
|
||||
if @upload
|
||||
add_metadata!
|
||||
UserUpload.find_or_create_by!(user_id: user_id, upload_id: @upload.id) if user_id
|
||||
return @upload
|
||||
end
|
||||
@ -121,14 +121,7 @@ class UploadCreator
|
||||
@upload.width, @upload.height = @image_info.size
|
||||
end
|
||||
|
||||
@upload.for_private_message = true if @opts[:for_private_message]
|
||||
@upload.for_group_message = true if @opts[:for_group_message]
|
||||
@upload.for_theme = true if @opts[:for_theme]
|
||||
@upload.for_export = true if @opts[:for_export]
|
||||
@upload.for_site_setting = true if @opts[:for_site_setting]
|
||||
@upload.for_gravatar = true if @opts[:for_gravatar]
|
||||
@upload.secure = UploadSecurity.new(@upload, @opts).should_be_secure?
|
||||
|
||||
add_metadata!
|
||||
return @upload unless @upload.save
|
||||
|
||||
# store the file and update its url
|
||||
@ -375,4 +368,14 @@ class UploadCreator
|
||||
@@svg_whitelist_xpath ||= "//*[#{WHITELISTED_SVG_ELEMENTS.map { |e| "name()!='#{e}'" }.join(" and ") }]"
|
||||
end
|
||||
|
||||
def add_metadata!
|
||||
@upload.for_private_message = true if @opts[:for_private_message]
|
||||
@upload.for_group_message = true if @opts[:for_group_message]
|
||||
@upload.for_theme = true if @opts[:for_theme]
|
||||
@upload.for_export = true if @opts[:for_export]
|
||||
@upload.for_site_setting = true if @opts[:for_site_setting]
|
||||
@upload.for_gravatar = true if @opts[:for_gravatar]
|
||||
@upload.secure = UploadSecurity.new(@upload, @opts).should_be_secure?
|
||||
end
|
||||
|
||||
end
|
||||
|
Reference in New Issue
Block a user