diff --git a/app/models/user.rb b/app/models/user.rb index 80f53eb..266b6a7 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -102,12 +102,6 @@ class User < ActiveRecord::Base end end - def signup - User.transaction do - self.person.save if self.save - end - end - has_one :person, :dependent => :destroy belongs_to :environment diff --git a/lib/noosfero/api/session.rb b/lib/noosfero/api/session.rb index c877263..7d8aef8 100644 --- a/lib/noosfero/api/session.rb +++ b/lib/noosfero/api/session.rb @@ -45,14 +45,16 @@ module Noosfero # test_captcha will render_api_error! and exit in case of any problem # this return is just to improve the clarity of the execution path return unless test_captcha(remote_ip, params, environment) + name = params[:name].present? ? params[:name] : attrs[:email] user = User.new(attrs.merge(:name => name)) - if user.signup! + + begin + user.signup! user.generate_private_token! if user.activated? present user, :with => Entities::UserLogin - else - user.destroy - message = user.errors.as_json.merge(user.person.errors.as_json).to_json + rescue ActiveRecord::RecordInvalid + message = user.errors.as_json.merge((user.person.present? ? user.person.errors : {}).as_json).to_json render_api_error!(message, 400) end end diff --git a/test/unit/api/session_test.rb b/test/unit/api/session_test.rb index 73496f3..85261fe 100644 --- a/test/unit/api/session_test.rb +++ b/test/unit/api/session_test.rb @@ -27,8 +27,8 @@ class SessionTest < ActiveSupport::TestCase assert_equal 201, last_response.status json = JSON.parse(last_response.body) assert User['newuserapi'].activated? - assert json['user']['activated'] - assert json['user']['private_token'].present? + assert json['activated'] + assert json['private_token'].present? end should 'register a user with name' do -- libgit2 0.21.2