Implement API endpoint to query permissions.
This commit is contained in:
parent
7b613f0920
commit
6a09f49e71
4 changed files with 64 additions and 0 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue