summaryrefslogtreecommitdiff
path: root/config/initializers
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2015-08-26 17:53:31 -0700
committerDouwe Maan <douwe@gitlab.com>2015-08-26 17:53:31 -0700
commit843694f90270e290f164bed68362500c9e331a46 (patch)
tree0e20cc09df536365db817ba8aef4c77d3d0c684e /config/initializers
parent6afd69f4445cc0688aa1695389eb3f79033e3121 (diff)
parentde3b7d9c522db8d129a64f2b86297cf90413cb1e (diff)
downloadgitlab-ce-843694f90270e290f164bed68362500c9e331a46.tar.gz
Merge branch 'master' into ci-and-ce-sitting-in-a-tree-k-i-s-s-i-n-g
Diffstat (limited to 'config/initializers')
-rw-r--r--config/initializers/1_settings.rb26
-rw-r--r--config/initializers/omniauth.rb28
2 files changed, 46 insertions, 8 deletions
diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb
index bd26ac1da20..c47e5dab27c 100644
--- a/config/initializers/1_settings.rb
+++ b/config/initializers/1_settings.rb
@@ -8,7 +8,7 @@ class Settings < Settingslogic
def gitlab_on_standard_port?
gitlab.port.to_i == (gitlab.https ? 443 : 80)
end
-
+
# get host without www, thanks to http://stackoverflow.com/a/6674363/1233435
def get_host_without_www(url)
url = URI.encode(url)
@@ -32,14 +32,12 @@ class Settings < Settingslogic
end
end
+ def build_base_gitlab_url
+ base_gitlab_url.join('')
+ end
+
def build_gitlab_url
- custom_port = gitlab_on_standard_port? ? nil : ":#{gitlab.port}"
- [ gitlab.protocol,
- "://",
- gitlab.host,
- custom_port,
- gitlab.relative_url_root
- ].join('')
+ (base_gitlab_url + [gitlab.relative_url_root]).join('')
end
# check that values in `current` (string or integer) is a contant in `modul`.
@@ -64,6 +62,17 @@ class Settings < Settingslogic
end
value
end
+
+ private
+
+ def base_gitlab_url
+ custom_port = gitlab_on_standard_port? ? nil : ":#{gitlab.port}"
+ [ gitlab.protocol,
+ "://",
+ gitlab.host,
+ custom_port
+ ]
+ end
end
end
@@ -123,6 +132,7 @@ Settings.gitlab['email_enabled'] ||= true if Settings.gitlab['email_enabled'].ni
Settings.gitlab['email_from'] ||= "gitlab@#{Settings.gitlab.host}"
Settings.gitlab['email_display_name'] ||= "GitLab"
Settings.gitlab['email_reply_to'] ||= "noreply@#{Settings.gitlab.host}"
+Settings.gitlab['base_url'] ||= Settings.send(:build_base_gitlab_url)
Settings.gitlab['url'] ||= Settings.send(:build_gitlab_url)
Settings.gitlab['user'] ||= 'git'
Settings.gitlab['user_home'] ||= begin
diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb
new file mode 100644
index 00000000000..70ed10e8275
--- /dev/null
+++ b/config/initializers/omniauth.rb
@@ -0,0 +1,28 @@
+if Gitlab::LDAP::Config.enabled?
+ module OmniAuth::Strategies
+ server = Gitlab.config.ldap.servers.values.first
+ klass = server['provider_class']
+ const_set(klass, Class.new(LDAP)) unless klass == 'LDAP'
+ end
+
+ OmniauthCallbacksController.class_eval do
+ server = Gitlab.config.ldap.servers.values.first
+ alias_method server['provider_name'], :ldap
+ end
+end
+
+OmniAuth.config.full_host = Settings.gitlab['base_url']
+OmniAuth.config.allowed_request_methods = [:post]
+#In case of auto sign-in, the GET method is used (users don't get to click on a button)
+OmniAuth.config.allowed_request_methods << :get if Gitlab.config.omniauth.auto_sign_in_with_provider.present?
+OmniAuth.config.before_request_phase do |env|
+ OmniAuth::RequestForgeryProtection.new(env).call
+end
+
+if Gitlab.config.omniauth.enabled
+ Gitlab.config.omniauth.providers.each do |provider|
+ if provider['name'] == 'kerberos'
+ require 'omniauth-kerberos'
+ end
+ end
+end