BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
4ad8ed1f
Commit
4ad8ed1f
authored
Apr 03, 2017
by
Sean McGivern
Committed by
DJ Mountney
Apr 05, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merge branch '29364-private-projects-mr-fix' into 'security'
Don’t show source project name when user does not have access See merge request !2081
parent
5802d406
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
64 additions
and
2 deletions
+64
-2
build_service.rb
app/services/merge_requests/build_service.rb
+7
-1
29364-private-projects-mr-fix.yml
changelogs/unreleased/29364-private-projects-mr-fix.yml
+4
-0
create_new_mr_spec.rb
spec/features/merge_requests/create_new_mr_spec.rb
+12
-0
build_service_spec.rb
spec/services/merge_requests/build_service_spec.rb
+41
-1
No files found.
app/services/merge_requests/build_service.rb
View file @
4ad8ed1f
...
...
@@ -6,7 +6,7 @@ module MergeRequests
# Set MR attributes
merge_request
.
can_be_created
=
true
merge_request
.
compare_commits
=
[]
merge_request
.
source_project
=
project
unless
merge_request
.
source_project
merge_request
.
source_project
=
find_
source_project
merge_request
.
target_project
=
nil
unless
can?
(
current_user
,
:read_project
,
merge_request
.
target_project
)
...
...
@@ -31,6 +31,12 @@ module MergeRequests
private
def
find_source_project
return
source_project
if
source_project
.
present?
&&
can?
(
current_user
,
:read_project
,
source_project
)
project
end
def
validate_branches
(
merge_request
)
messages
=
[]
...
...
changelogs/unreleased/29364-private-projects-mr-fix.yml
0 → 100644
View file @
4ad8ed1f
---
title
:
Don’t show source project name when user does not have access
merge_request
:
author
:
spec/features/merge_requests/create_new_mr_spec.rb
View file @
4ad8ed1f
...
...
@@ -41,6 +41,18 @@ feature 'Create New Merge Request', feature: true, js: true do
visit
new_namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request:
{
target_project_id:
private_project
.
id
})
expect
(
page
).
not_to
have_content
private_project
.
path_with_namespace
expect
(
page
).
to
have_content
project
.
path_with_namespace
end
end
context
'when source project cannot be viewed by the current user'
do
it
'does not leak the private project name & namespace'
do
private_project
=
create
(
:project
,
:private
)
visit
new_namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request:
{
source_project_id:
private_project
.
id
})
expect
(
page
).
not_to
have_content
private_project
.
path_with_namespace
expect
(
page
).
to
have_content
project
.
path_with_namespace
end
end
...
...
spec/services/merge_requests/build_service_spec.rb
View file @
4ad8ed1f
...
...
@@ -4,6 +4,8 @@ describe MergeRequests::BuildService, services: true do
include
RepoHelpers
let
(
:project
)
{
create
(
:project
)
}
let
(
:source_project
)
{
nil
}
let
(
:target_project
)
{
nil
}
let
(
:user
)
{
create
(
:user
)
}
let
(
:issue_confidential
)
{
false
}
let
(
:issue
)
{
create
(
:issue
,
project:
project
,
title:
'A bug'
,
confidential:
issue_confidential
)
}
...
...
@@ -20,7 +22,9 @@ describe MergeRequests::BuildService, services: true do
MergeRequests
::
BuildService
.
new
(
project
,
user
,
description:
description
,
source_branch:
source_branch
,
target_branch:
target_branch
)
target_branch:
target_branch
,
source_project:
source_project
,
target_project:
target_project
)
end
before
do
...
...
@@ -254,5 +258,41 @@ describe MergeRequests::BuildService, services: true do
)
end
end
context
'target_project is set and accessible by current_user'
do
let
(
:target_project
)
{
create
(
:project
,
:public
,
:repository
)}
let
(
:commits
)
{
Commit
.
decorate
([
commit_1
],
project
)
}
it
'sets target project correctly'
do
expect
(
merge_request
.
target_project
).
to
eq
(
target_project
)
end
end
context
'target_project is set but not accessible by current_user'
do
let
(
:target_project
)
{
create
(
:project
,
:private
,
:repository
)}
let
(
:commits
)
{
Commit
.
decorate
([
commit_1
],
project
)
}
it
'sets target project correctly'
do
expect
(
merge_request
.
target_project
).
to
eq
(
project
)
end
end
context
'source_project is set and accessible by current_user'
do
let
(
:source_project
)
{
create
(
:project
,
:public
,
:repository
)}
let
(
:commits
)
{
Commit
.
decorate
([
commit_1
],
project
)
}
it
'sets target project correctly'
do
expect
(
merge_request
.
source_project
).
to
eq
(
source_project
)
end
end
context
'source_project is set but not accessible by current_user'
do
let
(
:source_project
)
{
create
(
:project
,
:private
,
:repository
)}
let
(
:commits
)
{
Commit
.
decorate
([
commit_1
],
project
)
}
it
'sets target project correctly'
do
expect
(
merge_request
.
source_project
).
to
eq
(
project
)
end
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment