]> git.openstreetmap.org Git - rails.git/commitdiff
Allow OAuth 1.0a to be disabled
authorTom Hughes <tom@compton.nu>
Thu, 25 Jan 2024 21:07:16 +0000 (21:07 +0000)
committerTom Hughes <tom@compton.nu>
Sun, 25 Feb 2024 08:56:09 +0000 (08:56 +0000)
app/controllers/api_controller.rb
app/controllers/application_controller.rb
app/controllers/oauth_controller.rb
config/locales/en.yml
config/settings.yml

index af4c0c4f3195d7b11808acf49524b21dd17aa70f..0b45ca16820432f5c025b2441fb380db84eedf32 100644 (file)
@@ -106,7 +106,11 @@ class ApiController < ApplicationController
     if doorkeeper_token&.accessible?
       self.current_user = User.find(doorkeeper_token.resource_owner_id)
     elsif Authenticator.new(self, [:token]).allow?
-      # self.current_user setup by OAuth
+      if Settings.oauth_10a_support
+        # self.current_user setup by OAuth
+      else
+        report_error t("application.oauth_10a_disabled", :link => t("application.auth_disabled_link")), :forbidden
+      end
     else
       username, passwd = auth_data # parse from headers
       # authenticate per-scheme
index 0a7df0994c9fc23f5c452ed2bb62dfc291b88aa6..ddc6d8ab28f011d1fe6543d502ecc43666f395d1 100644 (file)
@@ -69,6 +69,10 @@ class ApplicationController < ActionController::Base
     @oauth_token = current_user.oauth_token(Settings.oauth_application) if current_user && Settings.key?(:oauth_application)
   end
 
+  def require_oauth_10a_support
+    report_error t("application.oauth_10a_disabled", :link => t("application.auth_disabled_link")), :forbidden unless Settings.oauth_10a_support
+  end
+
   ##
   # require the user to have cookies enabled in their browser
   def require_cookies
index cd7e48277a2517b23e49af4cdb31eddfd396a762..49af05b0d188e814960468d0a0f335cfd989f62e 100644 (file)
@@ -5,6 +5,8 @@ class OauthController < ApplicationController
   # a login, but we want to check authorization on every action.
   authorize_resource :class => false
 
+  before_action :require_oauth_10a_support
+
   layout "site"
 
   def revoke
index 17cdff9bf3360b0acaa81d12580f2ded16f46f86..1d9b1ccdf957d66c69a19cf087b8dcc6ab8f5bd4 100644 (file)
@@ -2556,6 +2556,7 @@ en:
       description_without_count: "GPX file from %{user}"
   application:
     basic_auth_disabled: "HTTP Basic Authentication is disabled: %{link}"
+    oauth_10a_disabled: "OAuth 1.0 and 1.0a are disabled: %{link}"
     auth_disabled_link: "https://wiki.openstreetmap.org/wiki/2024_authentication_update"
     permission_denied: You do not have permission to access that action
     require_cookies:
index 6eab4807ea6daf9ec852d101e123829cc52b4a1b..19006f611e6bf55f6b4d65dd9eedd2f5230c5018 100644 (file)
@@ -95,9 +95,12 @@ attachments_dir: ":rails_root/public/attachments"
 #memcache_servers: []
 # Enable HTTP basic authentication support
 basic_auth_support: true
+# Enable OAuth 1.0/1.0a registration
+oauth_10_registration: true
 # Enable legacy OAuth 1.0 support
 oauth_10_support: true
-oauth_10_registration: true
+# Enable OAuth 1.0a support
+oauth_10a_support: true
 # URL of Nominatim instance to use for geocoding
 nominatim_url: "https://nominatim.openstreetmap.org/"
 # Default editor