DEV: Add context in AdminConstraint (#15838)

This allows plugins to override the permissions required to access
specific things like the Logster and Sidekiq web UI without the changes
leaking to the rest of Discourse routes.
This commit is contained in:
Osama Sayegh
2022-02-07 16:25:31 +03:00
committed by GitHub
parent 64be371749
commit 492226a973
2 changed files with 8 additions and 4 deletions

View File

@ -4,12 +4,16 @@ class AdminConstraint
def initialize(options = {})
@require_master = options[:require_master]
# @context isn't used here, but it exists to give plugins extra context
# about the destination of the request.
# possible values are: sidekiq, logster and app (default).
@context = options[:context] || "app"
end
def matches?(request)
return false if @require_master && RailsMultisite::ConnectionManagement.current_db != "default"
current_user = CurrentUser.lookup_from_env(request.env)
current_user&.admin? && custom_admin_check(request)
@current_user = CurrentUser.lookup_from_env(request.env)
@current_user&.admin? && custom_admin_check(request)
rescue Discourse::InvalidAccess, Discourse::ReadOnly
false
end