Skip to content

Commit

Permalink
Only show granted permissions in the authorized application list
Browse files Browse the repository at this point in the history
  • Loading branch information
tomhughes committed Jul 30, 2023
1 parent 60f42ed commit c376962
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 1 deletion.
4 changes: 4 additions & 0 deletions app/models/oauth2_application.rb
Expand Up @@ -3,6 +3,10 @@ class Oauth2Application < Doorkeeper::Application

validate :allowed_scopes

def authorized_scopes_for(user)
authorized_tokens.where(:resource_owner_id => user).sum(Doorkeeper::OAuth::Scopes.new, &:scopes)
end

private

def allowed_scopes
Expand Down
Expand Up @@ -4,7 +4,7 @@
</td>
<td class="align-middle">
<ul class="list-unstyled mb-0">
<% application.scopes.each do |scope| -%>
<% application.authorized_scopes_for(current_user).each do |scope| -%>
<li><%= t "oauth.scopes.#{scope}" %></li>
<% end -%>
</ul>
Expand Down
26 changes: 26 additions & 0 deletions test/controllers/oauth2_authorized_applications_controller_test.rb
Expand Up @@ -36,6 +36,32 @@ def test_index
assert_select "tbody tr", 2
end

def test_index_scopes
user = create(:user)
application1 = create(:oauth_application, :scopes => %w[read_prefs write_prefs write_diary read_gpx write_gpx])
create(:oauth_access_grant, :resource_owner_id => user.id, :application => application1, :scopes => %w[read_prefs write_prefs])
create(:oauth_access_token, :resource_owner_id => user.id, :application => application1, :scopes => %w[read_prefs write_prefs])
create(:oauth_access_grant, :resource_owner_id => user.id, :application => application1, :scopes => %w[read_prefs write_diary])
create(:oauth_access_token, :resource_owner_id => user.id, :application => application1, :scopes => %w[read_prefs write_diary])

get oauth_authorized_applications_path
assert_response :redirect
assert_redirected_to login_path(:referer => oauth_authorized_applications_path)

session_for(user)

get oauth_authorized_applications_path
assert_response :success
assert_template "oauth2_authorized_applications/index"
assert_select "tbody tr", 1
assert_select "tbody tr td ul" do
assert_select "li", :count => 3
assert_select "li", :text => "Read user preferences"
assert_select "li", :text => "Modify user preferences"
assert_select "li", :text => "Create diary entries, comments and make friends"
end
end

def test_destroy
user = create(:user)
application1 = create(:oauth_application)
Expand Down

0 comments on commit c376962

Please sign in to comment.