From: Tom Hughes Date: Wed, 16 Jan 2019 10:23:27 +0000 (+0000) Subject: Merge remote-tracking branch 'upstream/pull/2116' X-Git-Tag: live~1649 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/11806a676fb88f51ece004b7c05bde38f1e77706?hp=d2e11a327eb686bd2d1293ac146a2bb9730ba19b Merge remote-tracking branch 'upstream/pull/2116' --- diff --git a/app/abilities/ability.rb b/app/abilities/ability.rb index 9609ee8bb..90f377931 100644 --- a/app/abilities/ability.rb +++ b/app/abilities/ability.rb @@ -16,6 +16,7 @@ class Ability can [:search, :search_latlon, :search_ca_postcode, :search_osm_nominatim, :search_geonames, :search_osm_nominatim_reverse, :search_geonames_reverse], :geocoder can [:index, :create, :comment, :feed, :show, :search, :mine], Note + can [:token, :request_token, :access_token, :test_request], :oauth can [:index, :show], Redaction can [:search_all, :search_nodes, :search_ways, :search_relations], :search can [:trackpoints], :swf @@ -35,6 +36,7 @@ class Ability can [:create, :edit, :comment, :subscribe, :unsubscribe], DiaryEntry can [:new, :create, :reply, :show, :inbox, :outbox, :mark, :destroy], Message can [:close, :reopen], Note + can [:revoke, :authorize], :oauth can [:new, :create], Report can [:mine, :new, :create, :edit, :update, :delete, :api_create, :api_read, :api_update, :api_delete, :api_data], Trace can [:account, :go_public, :make_friend, :remove_friend, :api_details, :api_gpx_files], User diff --git a/app/controllers/oauth_controller.rb b/app/controllers/oauth_controller.rb index 96b562b5e..0954071a5 100644 --- a/app/controllers/oauth_controller.rb +++ b/app/controllers/oauth_controller.rb @@ -3,12 +3,26 @@ require "oauth/controllers/provider_controller" class OauthController < ApplicationController include OAuth::Controllers::ProviderController + # The ProviderController will call login_required for any action that needs + # a login, but we want to check authorization on every action. + authorize_resource :class => false + layout "site" + def revoke + @token = current_user.oauth_tokens.find_by :token => params[:token] + if @token + @token.invalidate! + flash[:notice] = t(".flash", :application => @token.client_application.name) + end + redirect_to oauth_clients_url(:display_name => @token.user.display_name) + end + + protected + def login_required authorize_web set_locale - require_user end def user_authorizes_token? @@ -26,17 +40,6 @@ class OauthController < ApplicationController any_auth end - def revoke - @token = current_user.oauth_tokens.find_by :token => params[:token] - if @token - @token.invalidate! - flash[:notice] = t(".flash", :application => @token.client_application.name) - end - redirect_to oauth_clients_url(:display_name => @token.user.display_name) - end - - protected - def oauth1_authorize override_content_security_policy_directives(:form_action => []) if CSP_ENFORCE || defined?(CSP_REPORT_URL)