Fix S3 keys/paths for user avatars
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing

Also fixes the avatars controller to work with all back-ends
This commit is contained in:
2025-05-12 16:39:53 +04:00
parent 46b908839d
commit 51a3652fc8
3 changed files with 35 additions and 18 deletions
+12 -6
View File
@@ -4,17 +4,23 @@ class AvatarsController < ApplicationController
http_status :not_found and return unless user.avatar.attached?
sha256_hash = params[:hash]
format = params[:format].to_sym || :png
size = params[:size]&.to_sym || :large
format = params[:format]&.to_sym || :png
size = params[:size]&.to_sym || :original
unless user.avatar_filename == "#{sha256_hash}.#{format}"
unless user.avatar.filename.to_s == "#{sha256_hash}.#{format}"
http_status :not_found and return
end
send_file user.avatar.service.path_for(user.avatar.key),
disposition: "inline", type: "image/#{format}"
blob = if size == :original
user.avatar.blob
else
user.avatar_variant(size: size)&.blob
end
data = blob.download
send_data data, type: "image/#{format}", disposition: "inline"
else
http_status :not_found and return
http_status :not_found
end
end
end