mirror of
https://github.com/discourse/discourse.git
synced 2025-02-14 23:22:45 +08:00
![Penar Musaraj](/assets/img/avatar_default.png)
This ensures that the theme id is resolved as early as possible in the request cycle. This is necessary for the custom homepage to skip preloading the wrong data.
22 lines
627 B
Ruby
22 lines
627 B
Ruby
# frozen_string_literal: true
|
|
|
|
class HomePageConstraint
|
|
def initialize(filter)
|
|
@filter = filter
|
|
end
|
|
|
|
def matches?(request)
|
|
return @filter == "finish_installation" if SiteSetting.has_login_hint?
|
|
|
|
current_user = CurrentUser.lookup_from_env(request.env)
|
|
|
|
# ensures we resolve the theme id as early as possible
|
|
theme_id = ThemeResolver.resolve_theme_id(request, Guardian.new(current_user), current_user)
|
|
|
|
homepage = current_user&.user_option&.homepage || HomepageHelper.resolve(theme_id, current_user)
|
|
homepage == @filter
|
|
rescue Discourse::InvalidAccess, Discourse::ReadOnly
|
|
false
|
|
end
|
|
end
|