Allow access to the wiki with git when repository feature disabled

parent 467b44cb
...@@ -50,6 +50,7 @@ class ProjectPolicy < BasePolicy ...@@ -50,6 +50,7 @@ class ProjectPolicy < BasePolicy
def reporter_access! def reporter_access!
can! :download_code can! :download_code
can! :download_wiki_code
can! :fork_project can! :fork_project
can! :create_project_snippet can! :create_project_snippet
can! :update_issue can! :update_issue
...@@ -187,6 +188,7 @@ class ProjectPolicy < BasePolicy ...@@ -187,6 +188,7 @@ class ProjectPolicy < BasePolicy
unless project.feature_available?(:wiki, user) || project.has_external_wiki? unless project.feature_available?(:wiki, user) || project.has_external_wiki?
cannot!(*named_abilities(:wiki)) cannot!(*named_abilities(:wiki))
cannot!(:download_wiki_code)
end end
unless project.feature_available?(:builds, user) && repository_enabled unless project.feature_available?(:builds, user) && repository_enabled
...@@ -226,6 +228,7 @@ class ProjectPolicy < BasePolicy ...@@ -226,6 +228,7 @@ class ProjectPolicy < BasePolicy
can! :read_commit_status can! :read_commit_status
can! :read_container_image can! :read_container_image
can! :download_code can! :download_code
can! :download_wiki_code
can! :read_cycle_analytics can! :read_cycle_analytics
# NOTE: may be overridden by IssuePolicy # NOTE: may be overridden by IssuePolicy
......
...@@ -46,7 +46,7 @@ module Gitlab ...@@ -46,7 +46,7 @@ module Gitlab
def download_access_check def download_access_check
if user if user
user_download_access_check user_download_access_check
elsif deploy_key.nil? && !Guest.can?(:download_code, project) elsif deploy_key.nil? && !guest_can_downlod_code?
raise UnauthorizedError, ERROR_MESSAGES[:download] raise UnauthorizedError, ERROR_MESSAGES[:download]
end end
end end
...@@ -59,6 +59,10 @@ module Gitlab ...@@ -59,6 +59,10 @@ module Gitlab
end end
end end
def guest_can_downlod_code?
Guest.can?(:download_code, project)
end
def user_download_access_check def user_download_access_check
unless user_can_download_code? || build_can_download_code? unless user_can_download_code? || build_can_download_code?
raise UnauthorizedError, ERROR_MESSAGES[:download] raise UnauthorizedError, ERROR_MESSAGES[:download]
......
module Gitlab module Gitlab
class GitAccessWiki < GitAccess class GitAccessWiki < GitAccess
def guest_can_downlod_code?
Guest.can?(:download_wiki_code, project)
end
def user_can_download_code?
authentication_abilities.include?(:download_code) && user_access.can_do_action?(:download_wiki_code)
end
def change_access_check(change) def change_access_check(change)
if user_access.can_do_action?(:create_wiki) if user_access.can_do_action?(:create_wiki)
build_status_object(true) build_status_object(true)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment