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