Project

General

Profile

Feature #1060 » ldap_filter_r5657.patch

Florian Mutter, 2011-05-06 01:13

View differences:

app/models/auth_source_ldap.rb (working copy)
21 21
class AuthSourceLdap < AuthSource 
22 22
  validates_presence_of :host, :port, :attr_login
23 23
  validates_length_of :name, :host, :maximum => 60, :allow_nil => true
24
  validates_length_of :account, :account_password, :base_dn, :maximum => 255, :allow_nil => true
24
  validates_length_of :account, :account_password, :base_dn, :filter, :maximum => 255, :allow_nil => true
25 25
  validates_length_of :attr_login, :attr_firstname, :attr_lastname, :attr_mail, :maximum => 30, :allow_nil => true
26 26
  validates_numericality_of :port, :only_integer => true
27 27
  
......
104 104
    ldap_con = initialize_ldap_con(self.account, self.account_password)
105 105
    login_filter = Net::LDAP::Filter.eq( self.attr_login, login ) 
106 106
    object_filter = Net::LDAP::Filter.eq( "objectClass", "*" ) 
107

  
108
    filter = login_filter & object_filter
109
    if not self.filter.blank?
110
      begin
111
        custom_filter = Net::LDAP::Filter.construct( self.filter )
112
        filter = filter & custom_filter
113
      rescue Net::LDAP::LdapError => e
114
        logger.error "Error during authentication: #{e.message}"
115
        return nil
116
      end
117
    end
118

  
107 119
    attrs = {}
108 120
    
109 121
    ldap_con.search( :base => self.base_dn, 
110
                     :filter => object_filter & login_filter, 
122
                     :filter => filter, 
111 123
                     :attributes=> search_attributes) do |entry|
112 124

  
113 125
      if onthefly_register?
app/views/ldap_auth_sources/_form.rhtml (working copy)
23 23
<p><label for="auth_source_base_dn"><%=l(:field_base_dn)%> <span class="required">*</span></label>
24 24
<%= text_field 'auth_source', 'base_dn', :size => 60 %></p>
25 25

  
26
<p><label for="auth_source_filter"><%=l(:field_filter)%></label>
27
<%= text_field 'auth_source', 'filter', :size => 60 %></p>
28

  
26 29
<p><label for="auth_source_onthefly_register"><%=l(:field_onthefly)%></label>
27 30
<%= check_box 'auth_source', 'onthefly_register' %></p>
28 31
</div>
db/migrate/001_setup.rb (working copy)
43 43
      t.column "account", :string, :limit => 60
44 44
      t.column "account_password", :string, :limit => 60
45 45
      t.column "base_dn", :string, :limit => 255
46
      t.column "filter", :string, :limit => 255
46 47
      t.column "attr_login", :string, :limit => 30
47 48
      t.column "attr_firstname", :string, :limit => 30
48 49
      t.column "attr_lastname", :string, :limit => 30
db/migrate/20110505224753_add_filter_to_auth_sources.rb (revision 0)
1
class AddFilterToAuthSources < ActiveRecord::Migration
2
  def self.up
3
    add_column :auth_sources, :filter, :string, :limit => 255
4
  end
5

  
6
  def self.down
7
    remove_column :auth_sources, :filter
8
  end
9
end
10

  
config/locales/en.yml (working copy)
265 265
  field_port: Port
266 266
  field_account: Account
267 267
  field_base_dn: Base DN
268
  field_filter: Filter
268 269
  field_attr_login: Login attribute
269 270
  field_attr_firstname: Firstname attribute
270 271
  field_attr_lastname: Lastname attribute
(3-3/4)