ea9b3687db
This commit replaces the old database backed Wiki system with the excellent Gollum git based Wiki system. The UI has been updated to allow for utilizing the extra features that Gollum provides. Specifically: * Edit page now allows you to choose the content format. * Edit page allows you to provide a commit message for the change. * History page now shows Format, Commit Message, and Commit Hash. * A new Git Access page has been added with the Wiki Repo URL. * The default page has been changed to Home from Index to match the Gollum standard. The old Wiki model has been left in tact to provide for the development of a migration script that will move all content stored in the old Wiki system into new Gollum Wikis.
69 lines
1.8 KiB
Ruby
69 lines
1.8 KiB
Ruby
module Gitlab
|
|
# Internal access API
|
|
class Internal < Grape::API
|
|
namespace 'internal' do
|
|
#
|
|
# Check if ssh key has access to project code
|
|
#
|
|
# Params:
|
|
# key_id - SSH Key id
|
|
# project - project path with namespace
|
|
# action - git action (git-upload-pack or git-receive-pack)
|
|
# ref - branch name
|
|
#
|
|
get "/allowed" do
|
|
# Check for *.wiki repositories.
|
|
# Strip out the .wiki from the pathname before finding the
|
|
# project. This applies the correct project permissions to
|
|
# the wiki repository as well.
|
|
project_path = params[:project]
|
|
project_path.gsub!(/\.wiki/,'') if project_path =~ /\.wiki/
|
|
|
|
key = Key.find(params[:key_id])
|
|
project = Project.find_with_namespace(project_path)
|
|
git_cmd = params[:action]
|
|
|
|
|
|
if key.is_deploy_key
|
|
project == key.project && git_cmd == 'git-upload-pack'
|
|
else
|
|
user = key.user
|
|
|
|
return false if user.blocked?
|
|
|
|
action = case git_cmd
|
|
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
|
|
end
|
|
|
|
user.can?(action, project)
|
|
end
|
|
end
|
|
|
|
#
|
|
# Discover user by ssh key
|
|
#
|
|
get "/discover" do
|
|
key = Key.find(params[:key_id])
|
|
present key.user, with: Entities::User
|
|
end
|
|
|
|
get "/check" do
|
|
{
|
|
api_version: Gitlab::API.version,
|
|
gitlab_version: Gitlab::VERSION,
|
|
gitlab_rev: Gitlab::REVISION,
|
|
}
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|