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 |