Class: AdminConstraint

Inherits:
Object
  • Object
show all
Defined in:
lib/admin_constraint.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ AdminConstraint

Returns a new instance of AdminConstraint.



4
5
6
# File 'lib/admin_constraint.rb', line 4

def initialize(options = {})
  @require_master = options[:require_master]
end

Instance Method Details

#custom_admin_check(request) ⇒ Object

Extensibility point: plugins can overwrite this to add additional checks if they require.



18
19
20
# File 'lib/admin_constraint.rb', line 18

def custom_admin_check(request)
  true
end

#matches?(request) ⇒ Boolean

Returns:

  • (Boolean)


8
9
10
11
12
13
14
# File 'lib/admin_constraint.rb', line 8

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)
rescue Discourse::InvalidAccess, Discourse::ReadOnly
  false
end