diff --git a/config/environments/production.rb.sample b/config/environments/production.rb.sample index 3b19c592f..8257958fa 100644 --- a/config/environments/production.rb.sample +++ b/config/environments/production.rb.sample @@ -85,6 +85,8 @@ Discourse::Application.configure do # a comma delimited list of emails your devs have # developers have god like rights and may impersonate anyone in the system # normal admins may only impersonate other moderators (not admins) - config.developer_emails = [] + if emails = ENV["DEVELOPER_EMAILS"] + config.developer_emails = emails.split(",") + end end diff --git a/lib/auth/default_current_user_provider.rb b/lib/auth/default_current_user_provider.rb index 98430e320..14341fccc 100644 --- a/lib/auth/default_current_user_provider.rb +++ b/lib/auth/default_current_user_provider.rb @@ -63,9 +63,19 @@ class Auth::DefaultCurrentUserProvider user.save! end cookies.permanent[TOKEN_COOKIE] = { value: user.auth_token, httponly: true } + make_developer_admin(user) @env[CURRENT_USER_KEY] = user end + def make_developer_admin(user) + if user.active? && + !user.admin && + Rails.configuration.respond_to?(:developer_emails) && + Rails.configuration.developer_emails.include?(user.email) + user.update_column(:admin, true) + end + end + def log_off_user(session, cookies) cookies[TOKEN_COOKIE] = nil end