From 241ba4be7989547b3bc3f9a1a20b8dee7a4e9a0c Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Fri, 3 May 2019 13:29:20 +0000 Subject: Allow guests users to access project releases This is step one of resolving https://gitlab.com/gitlab-org/gitlab-ce/issues/56838. Here is what changed: - Revert the security fix from bdee9e8412d. - Do not leak repository information (tag name, commit) to guests in API responses. - Do not include links to source code in API responses for users that do not have download_code access. - Show Releases in sidebar for guests. - Do not display links to source code under Assets for users that do not have download_code access. GET ':id/releases/:tag_name' still do not allow guests to access releases. This is to prevent guessing tag existence. --- .../releases/components/release_block.vue | 4 +- app/helpers/projects_helper.rb | 5 ++- app/models/release.rb | 7 +++- app/policies/project_policy.rb | 2 +- .../56838-allow-guest-access-to-releases.yml | 5 +++ lib/api/entities.rb | 19 +++++++-- lib/api/releases.rb | 16 ++++--- .../api/schemas/public_api/v4/release.json | 35 ++++++++++++---- .../public_api/v4/release/release_for_guest.json | 22 ++++++++++ .../public_api/v4/release/releases_for_guest.json | 4 ++ .../schemas/public_api/v4/release/tag_release.json | 12 ++++++ .../api/schemas/public_api/v4/releases.json | 4 ++ spec/fixtures/api/schemas/public_api/v4/tag.json | 2 +- spec/models/release_spec.rb | 5 +++ spec/policies/project_policy_spec.rb | 4 +- spec/requests/api/releases_spec.rb | 49 ++++++++++++++++++---- spec/requests/api/tags_spec.rb | 2 +- .../policies/project_policy_shared_context.rb | 3 +- 18 files changed, 162 insertions(+), 38 deletions(-) create mode 100644 changelogs/unreleased/56838-allow-guest-access-to-releases.yml create mode 100644 spec/fixtures/api/schemas/public_api/v4/release/release_for_guest.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/release/releases_for_guest.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/release/tag_release.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/releases.json diff --git a/app/assets/javascripts/releases/components/release_block.vue b/app/assets/javascripts/releases/components/release_block.vue index 7ed1b407ddd..0958b9fa926 100644 --- a/app/assets/javascripts/releases/components/release_block.vue +++ b/app/assets/javascripts/releases/components/release_block.vue @@ -86,7 +86,7 @@ export default {
@@ -103,7 +103,7 @@ export default { -