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:
parent
39c97279ca
commit
19d4ddf2f2
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue