]> source.dussan.org Git - redmine.git/commitdiff
Adds an optional LDAP filter (#1060).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 1 Mar 2012 16:26:10 +0000 (16:26 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 1 Mar 2012 16:26:10 +0000 (16:26 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9044 e93f8b46-1217-0410-a6f0-8f06a7374b81

50 files changed:
app/models/auth_source_ldap.rb
app/views/ldap_auth_sources/_form.html.erb
config/locales/ar.yml
config/locales/bg.yml
config/locales/bs.yml
config/locales/ca.yml
config/locales/cs.yml
config/locales/da.yml
config/locales/de.yml
config/locales/el.yml
config/locales/en-GB.yml
config/locales/en.yml
config/locales/es.yml
config/locales/et.yml
config/locales/eu.yml
config/locales/fa.yml
config/locales/fi.yml
config/locales/fr.yml
config/locales/gl.yml
config/locales/he.yml
config/locales/hr.yml
config/locales/hu.yml
config/locales/id.yml
config/locales/it.yml
config/locales/ja.yml
config/locales/ko.yml
config/locales/lt.yml
config/locales/lv.yml
config/locales/mk.yml
config/locales/mn.yml
config/locales/nl.yml
config/locales/no.yml
config/locales/pl.yml
config/locales/pt-BR.yml
config/locales/pt.yml
config/locales/ro.yml
config/locales/ru.yml
config/locales/sk.yml
config/locales/sl.yml
config/locales/sr-YU.yml
config/locales/sr.yml
config/locales/sv.yml
config/locales/th.yml
config/locales/tr.yml
config/locales/uk.yml
config/locales/vi.yml
config/locales/zh-TW.yml
config/locales/zh.yml
db/migrate/20120301153455_add_auth_sources_filter.rb [new file with mode: 0644]
test/unit/auth_source_ldap_test.rb

index 5c6d28cb2f3578aa16a29c76b8773676ce032c8d..bf8d70478e0270f324da2dc08a55a9ff01220a64 100644 (file)
@@ -21,9 +21,10 @@ require 'net/ldap'
 class AuthSourceLdap < AuthSource
   validates_presence_of :host, :port, :attr_login
   validates_length_of :name, :host, :maximum => 60, :allow_nil => true
-  validates_length_of :account, :account_password, :base_dn, :maximum => 255, :allow_nil => true
+  validates_length_of :account, :account_password, :base_dn, :filter, :maximum => 255, :allow_blank => true
   validates_length_of :attr_login, :attr_firstname, :attr_lastname, :attr_mail, :maximum => 30, :allow_nil => true
   validates_numericality_of :port, :only_integer => true
+  validate :validate_filter
 
   before_validation :strip_ldap_attributes
 
@@ -58,6 +59,20 @@ class AuthSourceLdap < AuthSource
 
   private
 
+  def ldap_filter
+    if filter.present?
+      Net::LDAP::Filter.construct(filter)
+    end
+  rescue Net::LDAP::LdapError
+    nil
+  end
+
+  def validate_filter
+    if filter.present? && ldap_filter.nil?
+      errors.add(:filter, :invalid)
+    end
+  end
+
   def strip_ldap_attributes
     [:attr_login, :attr_firstname, :attr_lastname, :attr_mail].each do |attr|
       write_attribute(attr, read_attribute(attr).strip) unless read_attribute(attr).nil?
@@ -107,8 +122,13 @@ class AuthSourceLdap < AuthSource
     object_filter = Net::LDAP::Filter.eq( "objectClass", "*" )
     attrs = {}
 
+    search_filter = object_filter & login_filter
+    if f = ldap_filter
+      search_filter = search_filter & f
+    end
+
     ldap_con.search( :base => self.base_dn,
-                     :filter => object_filter & login_filter,
+                     :filter => search_filter,
                      :attributes=> search_attributes) do |entry|
 
       if onthefly_register?
index 9ffffafc711df25871b3b03f81d128931584334b..3ddf43a9a7fd32cab2f72aa3c875c8a0f3bbb438 100644 (file)
@@ -23,6 +23,9 @@
 <p><label for="auth_source_base_dn"><%=l(:field_base_dn)%> <span class="required">*</span></label>
 <%= text_field 'auth_source', 'base_dn', :size => 60 %></p>
 
+<p><label for="auth_source_custom_filter"><%=l(:field_ldap_filter)%></label>
+<%= text_field 'auth_source', 'filter', :size => 60 %></p>
+
 <p><label for="auth_source_onthefly_register"><%=l(:field_onthefly)%></label>
 <%= check_box 'auth_source', 'onthefly_register' %></p>
 </div>
index 2e262f83ee83f1a62a5f9c5afcd93f6cde5802e1..4234d84260f6945b8e3ac494648da21095e4196d 100644 (file)
@@ -1023,3 +1023,4 @@ ar:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 6ce7b736642377faac2e926d2b0cf0a9cb305b22..53c3cca1bcb8bddb6f21326838a6d87e49a26be9 100644 (file)
@@ -1021,3 +1021,4 @@ bg:
   description_date_range_interval: Изберете диапазон чрез задаване на начална и крайна дати
   description_date_from: Въведете начална дата
   description_date_to: Въведете крайна дата
+  field_ldap_filter: LDAP filter
index 147b687c21e550bd762a6d8c2935be9ac255e7af..0854340785f22661d03aabab4595a943fd2969cc 100644 (file)
@@ -1037,3 +1037,4 @@ bs:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 86e997c2ebdfe7751951a685db87dd6493ad5351..c0d554a82448ba40bf56ad82fd8edfcfeb36300e 100644 (file)
@@ -1025,3 +1025,4 @@ ca:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index f2e08f4d699c082d95b12fe2f15c22315b877425..e5c1a5181a067791662e49d89beb7055e427d996 100644 (file)
@@ -1026,3 +1026,4 @@ cs:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 386574965d17e6e7f6feff2b0ef43457273aac70..9cc3a3e048c9fe5c5833f7c7c629dea616006d5c 100644 (file)
@@ -1040,3 +1040,4 @@ da:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index aef54570925a56dbee673a53118dd96a860e4b67..9dc02961a17332294110a6dbae3c1c3b2d251b2c 100644 (file)
@@ -1043,3 +1043,4 @@ de:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 50537d5aac3a2a9375ac32cd2c9543886ed2450b..92d8e8c3029e21137b1bbc7d5b764332d534d0f0 100644 (file)
@@ -1023,3 +1023,4 @@ el:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 2cbd77065b97fa5301603c362a2c6e65bf9f5dab..2136b93b852c726bd28f5e0eec0a81199cfa8e58 100644 (file)
@@ -1025,3 +1025,4 @@ en-GB:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 2ca8582a30f285f981fcc4fb1016395eca02e6ff..21e12ba17a3c195608c90d33b98532bdd488bccc 100644 (file)
@@ -321,6 +321,7 @@ en:
   field_cvs_module: Module
   field_repository_is_default: Main repository
   field_multiple: Multiple values
+  field_ldap_filter: LDAP filter
 
   setting_app_title: Application title
   setting_app_subtitle: Application subtitle
index 19531ca77f5bea535a16ca9a314bec34a1a66712..a30ffd87c6420df9c3128bb3a17fc23e94061f12 100644 (file)
@@ -1060,3 +1060,4 @@ es:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 9ffe12e2847c2df14b5c5fe83d088d429e199690..d77d9c09e74df61c02b2b89064d2d4759f6ac340 100644 (file)
@@ -1039,3 +1039,4 @@ et:
   label_export_options: "%{export_format} ekspordi valikud"
   label_completed_versions: "Lõpetatud versioonid"
   error_attachment_too_big: "Seda faili ei saa üles laadida, kuna ületab maksimumsuurust (%{max_size})"
+  field_ldap_filter: LDAP filter
index a85e7cd8bdb0293216ee30c1d9a4f823e636fa09..8a02f2ffe43d0ab714b3e51e89845bfd2a2ccb5f 100644 (file)
@@ -1026,3 +1026,4 @@ eu:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index bd10913a37751116c8647e98d4995670f221d11f..efac7a131ad6ca7267c41c0b432daba7e8ceff47 100644 (file)
@@ -1025,3 +1025,4 @@ fa:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 2da468723fce2223d0d03c410fd8a07f49396813..afafc51ca9324818db13dd2b1912fad23c882244 100644 (file)
@@ -1044,3 +1044,4 @@ fi:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 2a149a0e33244f17bd4057afb25b2772e552852e..8fd18c3b12bfae250ceb2236e99eb779b807ed47 100644 (file)
@@ -320,6 +320,7 @@ fr:
   field_commit_logs_encoding: Encodage des messages de commit
   field_repository_is_default: Dépôt principal
   field_multiple: Valeurs multiples
+  field_ldap_filter: Filtre LDAP
 
   setting_app_title: Titre de l'application
   setting_app_subtitle: Sous-titre de l'application
index 17b583a08e6d49f5719c920fbdeff198e028e0b4..8e8d30ec52fa09dfc08d050ba0ceeb916b7e0d53 100644 (file)
@@ -1034,3 +1034,4 @@ gl:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 0a5671302f5f4a554f00840cb64f9d1fef6127ed..af31a05e869fa9d2d3e8b391b474b486c92c2e09 100644 (file)
@@ -1028,3 +1028,4 @@ he:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 462615d287897b5631159ad806fff93f7633c948..3ce6f3012777b4f3aea5953a0c516a55ab7f35dd 100644 (file)
@@ -1029,3 +1029,4 @@ hr:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 363575d44b27da7606ce1a4cfbc40dbf49ca4fe3..b4cb98bcea203e3ca2fbb31d2bb49babfa940918 100644 (file)
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index e6ab8d1a7f5b7f64c91129c37217c6d89e6089e3..6dd2c81c12f29fd8b03aeb9e9bb5464143ad76c1 100644 (file)
@@ -1029,3 +1029,4 @@ id:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index d415e668f294cf798f964281407c7386ed1f06e3..ae451428517b7e05aa6c8549f4985dc281cda97e 100644 (file)
@@ -1024,3 +1024,4 @@ it:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index f6635cbfea3a9273821dd885fa0f78e81933d66b..1d7ebe2f0448fc540befaac91b04b27f67d93db5 100644 (file)
@@ -1053,3 +1053,4 @@ ja:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 44ac0f3637c39f6aeb711a1ecdd09dabf6f91f02..740096240746a7354bd4ef0e43f98916137f9a26 100644 (file)
@@ -1073,3 +1073,4 @@ ko:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 921e437f29b360368249498b871472b6607aaeac..ec768783d7e956c54c73ddad3f76e1aaa2aa49c7 100644 (file)
@@ -1083,3 +1083,4 @@ lt:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 05a1cc7636d1d0a34cdda3573b6331ca900b1fae..cef9174a2581753462200d9ae74a4833e5b83666 100644 (file)
@@ -1017,3 +1017,4 @@ lv:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 6f2fb2a0fca996b4fd0574046ee45167cbaf097a..ea32c97debc8603a24f9a647f729485cea554bf8 100644 (file)
@@ -1023,3 +1023,4 @@ mk:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index c4f3ca752df72b64350bf0615eaae177ea93d8de..8ce7c21483bd390c56e65c26be32910f43153a5e 100644 (file)
@@ -1023,3 +1023,4 @@ mn:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 4db1f7425014e6e47a68e84295d7524370eb2dc3..00bcf3345c651116c8453450f5d5920301be72f6 100644 (file)
@@ -1005,3 +1005,4 @@ nl:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 18689cb9261de0ca59f23d0fb5b902eeeff45b4a..027d66ba3e64a9337ed8c02557221f31754993fe 100644 (file)
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 4aa4181676e30dcde7f03f647deaa660dec13222..c7a4b230ec95d92b0c434ee65cdeaafadaed660b 100644 (file)
@@ -1040,3 +1040,4 @@ pl:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index b26d133678edb8b59cd999523ae23f9f2951f6a9..87520721da203e4d60df54c892989a1cbb8a7eec 100644 (file)
@@ -1046,3 +1046,4 @@ pt-BR:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index ecbca943110129b4c29ebeeb5bb04cbcd7676300..775fe5596e8c6ec32e68586e682f2d84aa6b3410 100644 (file)
@@ -1028,3 +1028,4 @@ pt:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 6b243c65ea0159306f5acc62594d050911c3aff3..2ac306642e29d9a4bc3afa08a5d9bd7e55a2a617 100644 (file)
@@ -1020,3 +1020,4 @@ ro:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index f927abcf8fa51e4cbabea2a338729e3c4ac50b45..a4bbdc4d97c1eff90266b7facb67ac0c23bbeaa8 100644 (file)
@@ -1138,3 +1138,4 @@ ru:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index d8c71c6abd6868585334735ff411194ee7f4a157..1cfe719f33c044863f7315f4159a47f7c45b6702 100644 (file)
@@ -1023,3 +1023,4 @@ sk:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 0016aceb158a2df50e2e1c22e1614f442463d0ba..0fc57856afe2adcdd579503a1a08570967f60e76 100644 (file)
@@ -1023,3 +1023,4 @@ sl:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index a98aaedb3613bb83723bb89fbbdb75e923b6ebff..ea4e68c7a5ffc23cbcfa12e67c571e9ad7c62108 100644 (file)
@@ -1023,3 +1023,4 @@ sr-YU:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 7c5b0f24984ce91ec77dc5239553fe2cd7248ace..2c8d3bcd1a9992dd74568c2033a3ebc87b503fd0 100644 (file)
@@ -1024,3 +1024,4 @@ sr:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index e4a9dd893c18dc7b54acfe40f8a6b8a1bee22d06..c39e4828974e337771c45516343cef8fc58b0f8b 100644 (file)
@@ -1064,3 +1064,4 @@ sv:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 26e468c118a39e350c1b03972816a7f3d1b99542..905a57fa826aa29253afe6040df42fed630586b6 100644 (file)
@@ -1020,3 +1020,4 @@ th:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index d73663adfc9e8a9d4494721a8cef8ba20aa79f6b..383f1fd017d358e3987293ea942e19a7eec365df 100644 (file)
@@ -1042,3 +1042,4 @@ tr:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 86d1d9e0cba6b2fd7b24d5dc314d2e722fde6743..6c16c7186e567246f03669231851c05409427c75 100644 (file)
@@ -1020,3 +1020,4 @@ uk:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 0d2068be9051a4c2d3a7887c1d14f96e3b24b91a..9419ef2f6c760148dfed0493a6a23e8eef6e15e4 100644 (file)
@@ -1074,3 +1074,4 @@ vi:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
index 8c373ad6c33c3aae2055ddbe037517ba5dbb505a..7b67bf20fd0c616e59b8c8ccdd03ff76fd59927c 100644 (file)
     zero:  0 問題
     one:   1 問題
     other: "%{count} 問題清單"
+  field_ldap_filter: LDAP filter
index 9da84db9e3c4e1405a1b14067bc8eb848b58ad07..7be3096bc0a8b65ae178901ea8e161b659bab08b 100644 (file)
@@ -1025,3 +1025,4 @@ zh:
   notice_issue_update_conflict: The issue has been updated by an other user while you were editing it.
   text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link}
   permission_manage_related_issues: Manage related issues
+  field_ldap_filter: LDAP filter
diff --git a/db/migrate/20120301153455_add_auth_sources_filter.rb b/db/migrate/20120301153455_add_auth_sources_filter.rb
new file mode 100644 (file)
index 0000000..617b3b7
--- /dev/null
@@ -0,0 +1,9 @@
+class AddAuthSourcesFilter < ActiveRecord::Migration
+  def self.up
+    add_column :auth_sources, :filter, :string
+  end
+
+  def self.down
+    remove_column :auth_sources, :filter
+  end
+end
index 5dc532f236b22484def25506e1b57319eccf4163..55e1479b882f09b508009e99a5727f51a95b5e6d 100644 (file)
@@ -18,6 +18,7 @@
 require File.expand_path('../../test_helper', __FILE__)
 
 class AuthSourceLdapTest < ActiveSupport::TestCase
+  include Redmine::I18n
   fixtures :auth_sources
 
   def setup
@@ -44,6 +45,18 @@ class AuthSourceLdapTest < ActiveSupport::TestCase
     assert_equal 389, a.port
   end
 
+  def test_filter_should_be_validated
+    set_language_if_valid 'en'
+
+    a = AuthSourceLdap.new(:name => 'My LDAP', :host => 'ldap.example.net', :port => 389, :attr_login => 'sn')
+    a.filter = "(mail=*@redmine.org"
+    assert !a.valid?
+    assert_equal "is invalid", a.errors[:filter].to_s
+
+    a.filter = "(mail=*@redmine.org)"
+    assert a.valid?
+  end
+
   if ldap_configured?
     context '#authenticate' do
       setup do
@@ -83,6 +96,23 @@ class AuthSourceLdapTest < ActiveSupport::TestCase
         end
       end
 
+      context 'without filter' do
+        should 'return any user' do
+          assert @auth.authenticate('example1','123456')
+          assert @auth.authenticate('edavis', '123456')
+        end
+      end
+
+      context 'with filter' do
+        setup do
+          @auth.filter = "(mail=*@redmine.org)"
+        end
+
+        should 'return user who matches the filter only' do
+          assert @auth.authenticate('example1','123456')
+          assert_nil @auth.authenticate('edavis', '123456')
+        end
+      end
     end
   else
     puts '(Test LDAP server not configured)'