diff options
author | Eric Davis <edavis@littlestreamsoftware.com> | 2009-02-11 19:07:28 +0000 |
---|---|---|
committer | Eric Davis <edavis@littlestreamsoftware.com> | 2009-02-11 19:07:28 +0000 |
commit | 8194cfaf8690e09766120eb6517ca1b1c8cdc6e0 (patch) | |
tree | b33b2ffe1925621771433b420b7502f4ec514c43 /app/controllers/account_controller.rb | |
parent | 876fb69271edf6b5d7fe15fc68ee49e246d38f19 (diff) | |
download | redmine-8194cfaf8690e09766120eb6517ca1b1c8cdc6e0.tar.gz redmine-8194cfaf8690e09766120eb6517ca1b1c8cdc6e0.zip |
Added user setup needed based on the system's registration settings
* Copied the register action's chunk of code used to setup the account
based on Setting.self_registration
* Extracted method for when onthefly_creation_failed
* Added tests to confirm the behavior
#699
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2446 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/controllers/account_controller.rb')
-rw-r--r-- | app/controllers/account_controller.rb | 48 |
1 files changed, 41 insertions, 7 deletions
diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 09c11927c..c29942f4a 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -122,6 +122,7 @@ class AccountController < ApplicationController else @user.login = params[:user][:login] @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] + # TODO: Duplicated in open_id_authenticate action. A good sized refactoring would be good here case Setting.self_registration when '1' # Email activation @@ -205,14 +206,40 @@ private user.mail = registration['email'] unless registration['email'].nil? user.firstname, user.lastname = registration['fullname'].split(' ') unless registration['fullname'].nil? user.random_password - if user.save - successful_authentication(user) + user.status = User::STATUS_REGISTERED + + # TODO: Duplicated in register action. A good sized refactoring would be good here + case Setting.self_registration + when '1' + # Email activation + token = Token.new(:user => user, :action => "register") + if user.save and token.save + Mailer.deliver_register(token) + flash[:notice] = l(:notice_account_register_done) + redirect_to :action => 'login' + else + onthefly_creation_failed(user, {:login => user.login, :identity_url => identity_url }) + end + when '3' + # Automatic activation + user.status = User::STATUS_ACTIVE + if user.save + flash[:notice] = l(:notice_account_activated) + successful_authentication(user) + else + onthefly_creation_failed(user, {:login => user.login, :identity_url => identity_url }) + end 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 + # Manual activation by the administrator + if user.save + # Sends an email to the administrators + Mailer.deliver_account_activation_request(user) + flash[:notice] = l(:notice_account_pending) + redirect_to :action => 'login' + else + onthefly_creation_failed(user, {:login => user.login, :identity_url => identity_url }) + end + end else # Existing record successful_authentication(user) @@ -232,4 +259,11 @@ private redirect_back_or_default :controller => 'my', :action => 'page' end + # Onthefly creation failed, display the registration form to fill/fix attributes + def onthefly_creation_failed(user, auth_source_options = { }) + @user = user + session[:auth_source_registration] = auth_source_options unless auth_source_options.empty? + render :action => 'register' + end + end |