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
d698d3e8
Commit
d698d3e8
authored
Apr 25, 2016
by
Jacob Vosmaer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More changes suggested by Rémy
parent
b64cbacc
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
19 deletions
+17
-19
git_http_controller.rb
app/controllers/projects/git_http_controller.rb
+17
-19
No files found.
app/controllers/projects/git_http_controller.rb
View file @
d698d3e8
class
Projects
::
GitHttpController
<
Projects
::
ApplicationController
attr_reader
:user
skip_before_action
:repository
before_action
:authenticate_user
before_action
:ensure_project_found
?
before_action
:ensure_project_found
!
# GET /foo/bar.git/info/refs?service=git-upload-pack (git pull)
# GET /foo/bar.git/info/refs?service=git-receive-pack (git push)
...
...
@@ -47,29 +49,29 @@ class Projects::GitHttpController < Projects::ApplicationController
end
end
def
ensure_project_found
?
def
ensure_project_found
!
render_not_found
if
project
.
blank?
end
def
valid_ci_request?
(
login
,
password
)
matched_login
=
/(?<service>^[a-zA-Z]*-ci)-token$/
.
match
(
login
)
if
project
&&
matched_login
.
present?
&&
upload_pack?
underscored_service
=
matched_login
[
'service'
].
underscore
unless
project
&&
matched_login
.
present?
&&
upload_pack?
return
false
end
if
underscored_service
==
'gitlab_ci'
return
project
&&
project
.
valid_build_token?
(
password
)
elsif
Service
.
available_services_names
.
include?
(
underscored_service
)
# We treat underscored_service as a trusted input because it is included
# in the Service.available_services_names whitelist.
service_method
=
"
#{
underscored_service
}
_service"
service
=
project
.
send
(
service_method
)
underscored_service
=
matched_login
[
'service'
].
underscore
return
service
&&
service
.
activated?
&&
service
.
valid_token?
(
password
)
end
end
if
underscored_service
==
'gitlab_ci'
project
&&
project
.
valid_build_token?
(
password
)
elsif
Service
.
available_services_names
.
include?
(
underscored_service
)
# We treat underscored_service as a trusted input because it is included
# in the Service.available_services_names whitelist.
service_method
=
"
#{
underscored_service
}
_service"
service
=
project
.
send
(
service_method
)
false
service
&&
service
.
activated?
&&
service
.
valid_token?
(
password
)
end
end
def
oauth_access_token_check
(
login
,
password
)
...
...
@@ -185,10 +187,6 @@ class Projects::GitHttpController < Projects::ApplicationController
!!
@ci
end
def
user
@user
end
def
upload_pack_allowed?
if
!
Gitlab
.
config
.
gitlab_shell
.
upload_pack
false
...
...
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