]> cat aescling's git repositories - mastodon.git/commitdiff
Add ldap search filter (#8151)
authorImmae <immae@users.noreply.github.com>
Wed, 15 Aug 2018 16:12:44 +0000 (18:12 +0200)
committerEugen Rochko <eugen@zeonfederated.com>
Wed, 15 Aug 2018 16:12:44 +0000 (18:12 +0200)
.env.production.sample
config/initializers/devise.rb
lib/devise/ldap_authenticatable.rb

index ebb0788781d59a7dc0705cbdf298359eee60e282..349daedd8f31d5a989b9edcfd6767def52b2ef93 100644 (file)
@@ -162,6 +162,7 @@ STREAMING_CLUSTER_NUM=1
 # LDAP_BIND_DN=
 # LDAP_PASSWORD=
 # LDAP_UID=cn
+# LDAP_SEARCH_FILTER="%{uid}=%{email}"
 
 # PAM authentication (optional)
 # PAM authentication uses for the email generation the "email" pam variable
index 8532c9d9a28d113fdcbcb8aff45f4a02f786188a..cd9bacf68033e609abf0e662b9958b8b00555499 100644 (file)
@@ -59,6 +59,8 @@ module Devise
   @@ldap_password = nil
   mattr_accessor :ldap_tls_no_verify
   @@ldap_tls_no_verify = false
+  mattr_accessor :ldap_search_filter
+  @@ldap_search_filter = nil
 
   class Strategies::PamAuthenticatable
     def valid?
@@ -362,5 +364,6 @@ Devise.setup do |config|
     config.ldap_password       = ENV.fetch('LDAP_PASSWORD')
     config.ldap_uid            = ENV.fetch('LDAP_UID', 'cn')
     config.ldap_tls_no_verify  = ENV['LDAP_TLS_NO_VERIFY'] == 'true'
+    config.ldap_search_filter  = ENV.fetch('LDAP_SEARCH_FILTER', '%{uid}=%{email}')
   end
 end
index ef786fbb77a26674ae1df42f3cf7a4c0d371243e..534c7a851754e6fa99e72557a8e90bd7b7bb2f37 100644 (file)
@@ -24,7 +24,8 @@ module Devise
             connect_timeout: 10
           )
 
-          if (user_info = ldap.bind_as(base: Devise.ldap_base, filter: "(#{Devise.ldap_uid}=#{email})", password: password))
+          filter = format(Devise.ldap_search_filter, uid: Devise.ldap_uid, email: email)
+          if (user_info = ldap.bind_as(base: Devise.ldap_base, filter: filter, password: password))
             user = User.ldap_get_user(user_info.first)
             success!(user)
           else