Hooked up on the fly OpenID user creation.

* Use OpenID registration fields for the user.
* Generate a random password when a user is created.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2443 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Eric Davis
2009-02-11 19:07:12 +00:00
parent 896e64b759
commit 0310f43126
3 changed files with 30 additions and 11 deletions
+11 -11
View File
@@ -196,25 +196,25 @@ private
def open_id_authenticate(openid_url)
user = nil
authenticate_with_open_id(openid_url, :required => [:nickname, :fullname, :email], :return_to => signin_url) do |result, identity_url, registration|
if result.successful?
user = User.find_or_initialize_by_identity_url(identity_url)
if user.new_record?
# Create on the fly
# TODO: name
user.login = registration['nickname']
user.mail = registration['email']
user.save
end
user.reload
if user.new_record?
# Onthefly creation failed, display the registration form to fill/fix attributes
@user = user
session[:auth_source_registration] = {:login => user.login, :identity_url => identity_url }
render :action => 'register'
user.firstname, user.lastname = registration['fullname'].split(' ')
user.random_password
if user.save
successful_authentication(user)
else
# Onthefly creation failed, display the registration form to fill/fix attributes
@user = user
session[:auth_source_registration] = {:login => user.login, :identity_url => identity_url }
render :action => 'register'
end
else
# Existing record
successful_authentication(user)
end
end