mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: preview theme not working consistently
Avoid flash, this makes debugging much simpler as well. Additionally URL now clearly shows you are previewing a theme.
This commit is contained in:
parent
4ac5fc8cd3
commit
845cec3ba0
@ -5,10 +5,14 @@ class Admin::ThemesController < Admin::AdminController
|
||||
|
||||
skip_before_action :check_xhr, only: [:show, :preview]
|
||||
|
||||
def self.whitelist_theme_key(user)
|
||||
"whitelist_theme_key_#{user.id}"
|
||||
end
|
||||
|
||||
def preview
|
||||
@theme = Theme.find(params[:id])
|
||||
|
||||
redirect_to path("/"), flash: { preview_theme_key: @theme.key }
|
||||
$redis.setex(Admin::ThemesController.whitelist_theme_key(current_user), 60, @theme.key)
|
||||
redirect_to path("/?preview_theme_key=#{@theme.key}")
|
||||
end
|
||||
|
||||
def upload_asset
|
||||
|
@ -307,7 +307,13 @@ class ApplicationController < ActionController::Base
|
||||
resolve_safe_mode
|
||||
return if request.env[NO_CUSTOM]
|
||||
|
||||
theme_key = flash[:preview_theme_key]
|
||||
theme_key = nil
|
||||
if (k = request[:preview_theme_key]) && current_user
|
||||
# some extra security, only to use the magic param the key needs to be whitelisted
|
||||
if k == $redis.get(::Admin::ThemesController.whitelist_theme_key(current_user))
|
||||
theme_key = k
|
||||
end
|
||||
end
|
||||
|
||||
user_option = current_user&.user_option
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user