gitlabhq/lib/api/internal.rb

45 lines
1 KiB
Ruby
Raw Normal View History

2013-02-04 16:53:43 +01:00
module Gitlab
# Internal access API
2013-02-04 16:53:43 +01:00
class Internal < Grape::API
namespace 'internal' do
#
# Check if ssh key has access to project code
#
get "/allowed" do
key = Key.find(params[:key_id])
user = key.user
2013-02-04 16:53:43 +01:00
project = Project.find_with_namespace(params[:project])
action = case params[:action]
when 'git-upload-pack'
then :download_code
when 'git-receive-pack'
then
if project.protected_branch?(params[:ref])
:push_code_to_protected_branches
else
:push_code
end
2013-02-04 16:53:43 +01:00
end
user.can?(action, project)
end
#
# Discover user by ssh key
#
get "/discover" do
key = Key.find(params[:key_id])
present key.user, with: Entities::User
end
2013-02-05 14:55:49 +01:00
get "/check" do
{
api_version: '3'
}
end
2013-02-04 16:53:43 +01:00
end
end
end