Feature #1060 » ldap_filter_r5657.patch
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 |