Allow proper provider_name for ldap provider

parent 97aa12fc
......@@ -33,7 +33,7 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController
end
Gitlab.config.ldap.servers.each do |server|
alias_method "ldap#{server.index}", :ldap
alias_method server.provider_name, :ldap
end
def omniauth_error
......
......@@ -6,13 +6,13 @@
%ul.nav.nav-tabs
- @ldap_servers.each do |server|
%li{class: (:active if server['primary'])}
= link_to server['label'], "#tab-ldap#{server.index}", 'data-toggle' => 'tab'
= link_to server['label'], "#tab-#{server.provider_name}", 'data-toggle' => 'tab'
%li
= link_to 'Standard', '#tab-signin', 'data-toggle' => 'tab'
.tab-content
- @ldap_servers.each do |server|
%div.tab-pane{id: "tab-ldap#{server.index}", class: (:active if server['primary'])}
= render 'devise/sessions/new_ldap', provider: "ldap#{server.index}"
%div.tab-pane{id: "tab-#{server.provider_name}", class: (:active if server['primary'])}
= render 'devise/sessions/new_ldap', provider: server.provider_name
%div#tab-signin.tab-pane
= render 'devise/sessions/new_base'
......
......@@ -52,7 +52,6 @@ class Settings < Settingslogic
end
end
# Default settings
Settings['ldap'] ||= Settingslogic.new({})
Settings.ldap['enabled'] = false if Settings.ldap['enabled'].nil?
......@@ -60,14 +59,21 @@ Settings.ldap['allow_username_or_email_login'] = false if Settings.ldap['allow_u
Settings.ldap['sync_time'] = 3600 if Settings.ldap['sync_time'].nil?
# backwards compatibility, we only have one host
if Settings.ldap['enabled'] && Settings.ldap['host'].present?
excluded_per_server_settings = %w(sync_time allow_username_or_email_login)
server = Settings.ldap.except(excluded_per_server_settings)
server['primary'] = true
server['label'] = 'LDAP'
Settings.ldap['servers'] = [server]
end
if Settings.ldap['enabled']
if Settings.ldap['host'].present?
excluded_per_server_settings = %w(sync_time allow_username_or_email_login)
server = Settings.ldap.except(excluded_per_server_settings)
server['primary'] = true
server['label'] = 'LDAP'
server['provider_index'] = '' #providername will be ldap
Settings.ldap['servers'] = [server]
end
Settings.ldap['servers'].each do |server|
server['provider_name'] = "ldap#{server['provider_id']}".downcase
server['provider_class'] = OmniAuth::Utils.camelize(server['provider_name'])
end
end
Settings['omniauth'] ||= Settingslogic.new({})
Settings.omniauth['enabled'] = false if Settings.omniauth['enabled'].nil?
Settings.omniauth['providers'] ||= []
......
module OmniAuth::Strategies
Gitlab.config.ldap.servers.each do |server|
class_name = "Ldap#{server.index}"
const_set(class_name, Class.new(LDAP))
Gitlab.config.ldap.servers.each_with_index do |server|
const_set(server.provider_class, Class.new(LDAP))
end
end
......@@ -212,7 +212,7 @@ Devise.setup do |config|
end
Gitlab.config.ldap.servers.each do |server|
config.omniauth :"ldap#{server.index}",
config.omniauth server.provider_name,
host: server['host'],
base: server['base'],
uid: server['uid'],
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment