summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoramouhzi <hassan.amouhzi@gmail.com>2013-07-30 16:48:00 +0200
committerHassan Amouhzi <github@anezi.net>2013-08-15 21:25:09 +0200
commit39d8a64d255a80df1ed3194f88ac56486b027870 (patch)
tree17e1ce8ebde53f88aee03c473dd4493e815100ac
parent55582047413c639a4843f52f9869fafc01bf6522 (diff)
downloadgitlab-ce-39d8a64d255a80df1ed3194f88ac56486b027870.tar.gz
Fixes grack authentification under relative_url_root
Ref: https://github.com/gitlabhq/gitlabhq/commit/e6159b8725f99af78f446f8d33fa0e52b7780430 Ref: https://github.com/gitlabhq/gitlabhq/pull/3204 Ref: https://github.com/gitlabhq/gitlabhq/issues/1228 Add Rails' variable in application.rb to support relative url This variable is used by assets compilation and other modules. Note that user needs to change application.rb too Restrict session cookie to the relative path if set. Ref: https://github.com/gitlabhq/gitlabhq/commit/2c2f1e31856a4decdae469974f5bea8245316f7e Fix Update attachment_uploader.rb bug with relative URL See: https://github.com/gitlabhq/gitlabhq/commit/161afda3fa4fca58f396e9c3acbd72bc14490ace Fix Wall relative bug with attachement files (javascript)
-rw-r--r--app/assets/javascripts/wall.js.coffee2
-rw-r--r--app/uploaders/attachment_uploader.rb2
-rw-r--r--config/application.rb4
-rw-r--r--config/gitlab.yml.example1
-rw-r--r--config/initializers/session_store.rb3
-rw-r--r--lib/gitlab/backend/grack_auth.rb10
6 files changed, 18 insertions, 4 deletions
diff --git a/app/assets/javascripts/wall.js.coffee b/app/assets/javascripts/wall.js.coffee
index 4f71e6e0c35..4cc11331aca 100644
--- a/app/assets/javascripts/wall.js.coffee
+++ b/app/assets/javascripts/wall.js.coffee
@@ -64,7 +64,7 @@ class Wall
template = template.replace('{{text}}', simpleFormat(note.body))
if note.attachment
- file = '<i class="icon-paper-clip"/><a href="/files/note/' + note.id + '/' + note.attachment + '">' + note.attachment + '</a>'
+ file = '<i class="icon-paper-clip"/><a href="' + gon.relative_url_root + '/files/note/' + note.id + '/' + note.attachment + '">' + note.attachment + '</a>'
else
file = ''
template = template.replace('{{file}}', file)
diff --git a/app/uploaders/attachment_uploader.rb b/app/uploaders/attachment_uploader.rb
index c0afe9686f1..98794c9470b 100644
--- a/app/uploaders/attachment_uploader.rb
+++ b/app/uploaders/attachment_uploader.rb
@@ -21,7 +21,7 @@ class AttachmentUploader < CarrierWave::Uploader::Base
end
def secure_url
- "/files/#{model.class.to_s.underscore}/#{model.id}/#{file.filename}"
+ Gitlab.config.gitlab.relative_url_root + "/files/#{model.class.to_s.underscore}/#{model.id}/#{file.filename}"
end
def file_storage?
diff --git a/config/application.rb b/config/application.rb
index d86fe561fa9..f3edca8c353 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -67,5 +67,9 @@ module Gitlab
# Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0'
+
+ # Uncomment this if you are using a subdirectory
+ # Note that ENV['RAILS_RELATIVE_URL_ROOT'] in config/puma.rb may need to be changed
+ # config.relative_url_root = "/gitlab"
end
end
diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
index b6a8e68bf8e..c73307cabf4 100644
--- a/config/gitlab.yml.example
+++ b/config/gitlab.yml.example
@@ -21,6 +21,7 @@ production: &base
# WARNING: This feature is no longer supported
# Uncomment and customize to run in non-root path
# Note that ENV['RAILS_RELATIVE_URL_ROOT'] in config/puma.rb may need to be changed
+ # You need to uncomment config.relative_url_root in config/application.rb
# relative_url_root: /gitlab
# Uncomment and customize if you can't use the default user to run GitLab (default: 'git')
diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb
index e777ae2b78d..52a099c3e16 100644
--- a/config/initializers/session_store.rb
+++ b/config/initializers/session_store.rb
@@ -2,7 +2,8 @@
Gitlab::Application.config.session_store :cookie_store, key: '_gitlab_session',
secure: Gitlab::Application.config.force_ssl,
- httponly: true
+ httponly: true,
+ path: (Rails.application.config.relative_url_root.nil?) ? '/' : Rails.application.config.relative_url_root
# Use the database for sessions instead of the cookie-based default,
# which shouldn't be used to store highly confidential information
diff --git a/lib/gitlab/backend/grack_auth.rb b/lib/gitlab/backend/grack_auth.rb
index a4f98ecd350..ddf370fbab8 100644
--- a/lib/gitlab/backend/grack_auth.rb
+++ b/lib/gitlab/backend/grack_auth.rb
@@ -15,7 +15,15 @@ module Grack
@auth = Request.new(env)
# Need this patch due to the rails mount
- @env['PATH_INFO'] = @request.path
+
+ # Need this if under RELATIVE_URL_ROOT
+ unless Gitlab.config.gitlab.relative_url_root.empty?
+ # If website is mounted using relative_url_root need to remove it first
+ @env['PATH_INFO'] = @request.path.sub(Gitlab.config.gitlab.relative_url_root,'')
+ else
+ @env['PATH_INFO'] = @request.path
+ end
+
@env['SCRIPT_NAME'] = ""
auth!