Commit 6fe4cacdfbbe0012501e3fd5ef21af009c1dd518
1 parent
f72ac6a9
Exists in
master
and in
23 other branches
ActionItem1193: fixing user registration!
Showing
3 changed files
with
15 additions
and
0 deletions
Show diff stats
app/controllers/public/account_controller.rb
| ... | ... | @@ -51,6 +51,7 @@ class AccountController < ApplicationController |
| 51 | 51 | @user.terms_of_use = environment.terms_of_use |
| 52 | 52 | @user.environment = environment |
| 53 | 53 | @terms_of_use = environment.terms_of_use |
| 54 | + @user.person_data = params[:profile_data] | |
| 54 | 55 | @person = Person.new(params[:profile_data]) |
| 55 | 56 | @person.name = @user.login |
| 56 | 57 | @person.environment = @user.environment | ... | ... |
app/models/user.rb
| ... | ... | @@ -29,10 +29,16 @@ class User < ActiveRecord::Base |
| 29 | 29 | |
| 30 | 30 | after_create do |user| |
| 31 | 31 | user.person ||= Person.new |
| 32 | + user.person.attributes = user.person_data | |
| 32 | 33 | user.person.name ||= user.login |
| 33 | 34 | user.person.update_attributes(:identifier => user.login, :user_id => user.id, :environment_id => user.environment_id) |
| 34 | 35 | end |
| 35 | 36 | |
| 37 | + attr_writer :person_data | |
| 38 | + def person_data | |
| 39 | + @person_data || {} | |
| 40 | + end | |
| 41 | + | |
| 36 | 42 | before_update do |user| |
| 37 | 43 | if !User.find(user.id).enable_email and user.enable_email and !user.environment.nil? |
| 38 | 44 | User::Mailer.deliver_activation_email_notify(user) | ... | ... |
test/functional/account_controller_test.rb
| ... | ... | @@ -635,6 +635,14 @@ class AccountControllerTest < Test::Unit::TestCase |
| 635 | 635 | end |
| 636 | 636 | end |
| 637 | 637 | |
| 638 | + should 'signup filling in mandatory person fields' do | |
| 639 | + Person.any_instance.stubs(:required_fields).returns(['organization_website']) | |
| 640 | + assert_difference User, :count do | |
| 641 | + post :signup, :user => { :login => 'testuser', :password => '123456', :password_confirmation => '123456', :email => 'testuser@example.com' }, :profile_data => { :organization_website => 'example.com' } | |
| 642 | + assert_redirected_to :controller => 'profile_editor', :profile => 'testuser' | |
| 643 | + end | |
| 644 | + end | |
| 645 | + | |
| 638 | 646 | protected |
| 639 | 647 | def new_user(options = {}, extra_options ={}) |
| 640 | 648 | data = {:profile_data => person_data} | ... | ... |