FIX: ensure staged accounts are always inactive

If for any reason active is stored in the user model, clear it out
prior to creating an account
This commit is contained in:
Sam 2017-12-13 14:21:56 +11:00
parent 3190c13c22
commit a393d3bcbb
2 changed files with 6 additions and 4 deletions

View File

@ -321,6 +321,7 @@ class UsersController < ApplicationController
if user = User.where(staged: true).with_email(params[:email].strip.downcase).first
user_params.each { |k, v| user.send("#{k}=", v) }
user.staged = false
user.active = false
else
user = User.new(user_params)
end

View File

@ -1035,7 +1035,7 @@ describe UsersController do
end
context "when taking over a staged account" do
let!(:staged) { Fabricate(:staged, email: "staged@account.com") }
let!(:staged) { Fabricate(:staged, email: "staged@account.com", active: true) }
it "succeeds" do
post :create, params: {
@ -1045,9 +1045,10 @@ describe UsersController do
result = ::JSON.parse(response.body)
expect(result["success"]).to eq(true)
active_user = User.find_by_email(staged.email)
expect(active_user.staged).to eq(false)
expect(active_user.registration_ip_address).to be_present
created_user = User.find_by_email(staged.email)
expect(created_user.staged).to eq(false)
expect(created_user.active).to eq(false)
expect(created_user.registration_ip_address).to be_present
end
end