Implement API endpoint to query permissions.

This commit is contained in:
Enno Brehm 2012-04-26 17:26:26 +02:00 committed by Tom Hughes
parent 7b613f0920
commit 6a09f49e71
4 changed files with 64 additions and 0 deletions

View file

@ -2,6 +2,7 @@ class ApiController < ApplicationController
skip_before_filter :verify_authenticity_token
before_filter :check_api_readable, :except => [:capabilities]
before_filter :setup_user_auth, :only => [:permissions]
after_filter :compress_output
around_filter :api_call_handle_error, :api_call_timeout
@ -289,4 +290,20 @@ class ApiController < ApplicationController
render :text => doc.to_s, :content_type => "text/xml"
end
# External apps that use the api are able to query which permissions
# they have. This currently returns a list of permissions granted to the current user:
# * if authenticated via OAuth, this list will contain all permissions granted by the user to the access_token.
# * if authenticated via basic auth all permissions are granted, so the list will contain all permissions.
# * unauthenticated users have no permissions, so the list will be empty.
def permissions
@permissions = case
when current_token.present?
ClientApplication.all_permissions.select { |p| current_token.read_attribute(p) }
when @user
ClientApplication.all_permissions
else
[]
end
end
end