Add controller for rendering avatars on simple URL
This commit is contained in:
parent
17ffbde03a
commit
512f0ccca1
20
app/controllers/avatars_controller.rb
Normal file
20
app/controllers/avatars_controller.rb
Normal file
@ -0,0 +1,20 @@
|
||||
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 || :large
|
||||
|
||||
unless user.avatar_filename == "#{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}"
|
||||
else
|
||||
http_status :not_found and return
|
||||
end
|
||||
end
|
||||
end
|
@ -15,6 +15,9 @@ Rails.application.routes.draw do
|
||||
match 'signup/:step', to: 'signup#steps', as: :signup_steps, via: [:get, :post]
|
||||
post 'signup_validate', to: 'signup#validate'
|
||||
|
||||
|
||||
get "users/:username/avatars/:hash", to: "avatars#show", as: :user_avatar
|
||||
|
||||
namespace :contributions do
|
||||
root to: 'donations#index'
|
||||
resources :donations, only: ['index', 'create'] do
|
||||
|
Loading…
x
Reference in New Issue
Block a user