akkounts/app/controllers/avatars_controller.rb
Râu Cao 51a3652fc8
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
Fix S3 keys/paths for user avatars
Also fixes the avatars controller to work with all back-ends
2025-05-12 16:39:53 +04:00

27 lines
738 B
Ruby

class AvatarsController < ApplicationController
def show
if user = User.find_by(cn: params[:username])
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 || :original
unless user.avatar.filename.to_s == "#{sha256_hash}.#{format}"
http_status :not_found and return
end
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
end
end
end