Fix LDAP on the fly creation. The User object doesn't have a :dn attribute.

Fixes #4918 and adds a test for the behavior.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3485 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Eric Davis 2010-02-25 16:19:55 +00:00
parent 39c97279ca
commit 19d4ddf2f2
2 changed files with 32 additions and 1 deletions

View File

@ -111,7 +111,8 @@ class User < Principal
# user is not yet registered, try to authenticate with available sources # user is not yet registered, try to authenticate with available sources
attrs = AuthSource.authenticate(login, password) attrs = AuthSource.authenticate(login, password)
if attrs if attrs
user = new(*attrs) attributes = *attrs
user = new(attributes.symbolize_keys.except(:dn))
user.login = login user.login = login
user.language = Setting.default_language user.language = Setting.default_language
if user.save if user.save

View File

@ -120,6 +120,36 @@ class UserTest < ActiveSupport::TestCase
assert_equal nil, user assert_equal nil, user
end end
if ldap_configured?
context "#try_to_login using LDAP" do
context "on the fly registration" do
setup do
@auth_source = AuthSourceLdap.generate!(:name => 'localhost',
:host => '127.0.0.1',
:port => 389,
:base_dn => 'OU=Person,DC=redmine,DC=org',
:attr_login => 'uid',
:attr_firstname => 'givenName',
:attr_lastname => 'sn',
:attr_mail => 'mail',
:onthefly_register => true)
end
context "with a successful authentication" do
should "create a new user account" do
assert_difference('User.count') do
User.try_to_login('edavis', '123456')
end
end
end
end
end
else
puts "Skipping LDAP tests."
end
def test_create_anonymous def test_create_anonymous
AnonymousUser.delete_all AnonymousUser.delete_all
anon = User.anonymous anon = User.anonymous