3 class Internal < Grape::API
4 namespace 'internal' do
6 # Check if ssh key has access to project code
9 key = Key.find(params[:key_id])
10 project = Project.find_with_namespace(params[:project])
11 git_cmd = params[:action]
14 project == key.project && git_cmd == 'git-upload-pack'
18 when 'git-upload-pack'
20 when 'git-receive-pack'
22 if project.protected_branch?(params[:ref])
23 :push_code_to_protected_branches
29 user.can?(action, project)
34 # Discover user by ssh key
37 key = Key.find(params[:key_id])
38 present key.user, with: Entities::User