mirror of
https://github.com/discourse/discourse.git
synced 2025-02-16 18:24:52 -06:00
FIX: don't break user avatars route
This commit is contained in:
parent
5f3451a3ea
commit
80a108e3cf
@ -37,7 +37,6 @@ class UserAvatarsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
|
|
||||||
no_cookies
|
no_cookies
|
||||||
|
|
||||||
# we need multisite support to keep a single origin pull for CDNs
|
# we need multisite support to keep a single origin pull for CDNs
|
||||||
@ -52,20 +51,25 @@ class UserAvatarsController < ApplicationController
|
|||||||
username = params[:username].to_s
|
username = params[:username].to_s
|
||||||
return render_dot unless user = User.find_by(username_lower: username.downcase)
|
return render_dot unless user = User.find_by(username_lower: username.downcase)
|
||||||
|
|
||||||
version = params[:version].to_i
|
upload_id, version = params[:version].split("_")
|
||||||
return render_dot unless version > 0 && user_avatar = user.user_avatar
|
|
||||||
|
version = (version || OptimizedImage::VERSION).to_i
|
||||||
|
return render_dot if version != OptimizedImage::VERSION
|
||||||
|
|
||||||
|
upload_id = upload_id.to_i
|
||||||
|
return render_dot unless upload_id > 0 && user_avatar = user.user_avatar
|
||||||
|
|
||||||
size = params[:size].to_i
|
size = params[:size].to_i
|
||||||
return render_dot if size < 8 || size > 500
|
return render_dot if size < 8 || size > 500
|
||||||
|
|
||||||
if !Discourse.avatar_sizes.include?(size) && Discourse.store.external?
|
if !Discourse.avatar_sizes.include?(size) && Discourse.store.external?
|
||||||
closest = Discourse.avatar_sizes.to_a.min { |a,b| (size-a).abs <=> (size-b).abs }
|
closest = Discourse.avatar_sizes.to_a.min { |a,b| (size-a).abs <=> (size-b).abs }
|
||||||
avatar_url = UserAvatar.local_avatar_url(hostname, user.username_lower, version, closest)
|
avatar_url = UserAvatar.local_avatar_url(hostname, user.username_lower, upload_id, closest)
|
||||||
return redirect_to cdn_path(avatar_url)
|
return redirect_to cdn_path(avatar_url)
|
||||||
end
|
end
|
||||||
|
|
||||||
upload = Upload.find_by(id: version) if user_avatar.contains_upload?(version)
|
upload = Upload.find_by(id: upload_id) if user_avatar.contains_upload?(upload_id)
|
||||||
upload ||= user.uploaded_avatar if user.uploaded_avatar_id == version
|
upload ||= user.uploaded_avatar if user.uploaded_avatar_id == upload_id
|
||||||
|
|
||||||
if user.uploaded_avatar && !upload
|
if user.uploaded_avatar && !upload
|
||||||
avatar_url = UserAvatar.local_avatar_url(hostname, user.username_lower, user.uploaded_avatar_id, size)
|
avatar_url = UserAvatar.local_avatar_url(hostname, user.username_lower, user.uploaded_avatar_id, size)
|
||||||
|
@ -281,8 +281,8 @@ Discourse::Application.routes.draw do
|
|||||||
get "user-badges/:username" => "user_badges#username"
|
get "user-badges/:username" => "user_badges#username"
|
||||||
|
|
||||||
post "user_avatar/:username/refresh_gravatar" => "user_avatars#refresh_gravatar"
|
post "user_avatar/:username/refresh_gravatar" => "user_avatars#refresh_gravatar"
|
||||||
get "letter_avatar/:username/:size/:version.png" => "user_avatars#show_letter", format: false, constraints: { hostname: /[\w\.-]+/ }
|
get "letter_avatar/:username/:size/:version.png" => "user_avatars#show_letter", format: false, constraints: { hostname: /[\w\.-]+/, size: /\d+/ }
|
||||||
get "user_avatar/:hostname/:username/:size/:version.png" => "user_avatars#show", format: false, constraints: { hostname: /[\w\.-]+/ }
|
get "user_avatar/:hostname/:username/:size/:version.png" => "user_avatars#show", format: false, constraints: { hostname: /[\w\.-]+/, size: /\d+/ }
|
||||||
|
|
||||||
get "highlight-js/:hostname/:version.js" => "highlight_js#show", format: false, constraints: { hostname: /[\w\.-]+/ }
|
get "highlight-js/:hostname/:version.js" => "highlight_js#show", format: false, constraints: { hostname: /[\w\.-]+/ }
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user