send another ajax request to create account

This commit is contained in:
Rimian Perkins 2017-03-22 13:56:45 +11:00
parent 61361bb69d
commit 3896866d5b
5 changed files with 34 additions and 32 deletions

View File

@ -22,21 +22,7 @@ module DiscourseDonations
:currency => currency :currency => currency
) )
create_user(params) if current_user.nil?
render :json => charge render :json => charge
end end
private
def create_user(options)
User.create(
email: options[:email],
username: options[:username],
name: options[:name],
password: options[:password],
active: true
).approve(-1, false)
end
end end
end end

View File

@ -55,15 +55,30 @@ export default Ember.Component.extend({
stripeToken: data.token.id, stripeToken: data.token.id,
amount: self.get('amount') * 100, amount: self.get('amount') * 100,
email: self.get('email'), email: self.get('email'),
};
ajax('/charges', { data: params, method: 'post' }).then(data => {
self.set('result', data.outcome.seller_message);
if(!this.get('create_accounts')) {
if(data.status == 'succeeded') { self.set('success', true) };
self.set('transactionInProgress', false);
}
else {
let params = {
email: self.get('email'),
username: self.get('username'), username: self.get('username'),
name: self.get('name'), name: self.get('name'),
password: self.get('password') password: self.get('password')
}; };
ajax('/charges', { data: params, method: 'post' }).then(data => { ajax('/users', { data: params, method: 'post' }).then(data => {
if(data.status == 'succeeded') { self.set('success', true) }; self.set('success', data.success);
self.set('transactionInProgress', false); self.set('transactionInProgress', false);
self.set('result', data.outcome.seller_message); self.set('result', self.get('result') + data.message);
});
}
}); });
} }
}); });

View File

@ -50,7 +50,11 @@
<div class="control-group save-button"> <div class="control-group save-button">
<div class="controls"> <div class="controls">
{{#d-button action="submitStripeCard" disabled=transactionInProgress class="btn btn-primary btn-payment"}} {{#d-button action="submitStripeCard" disabled=transactionInProgress class="btn btn-primary btn-payment"}}
{{#if create_accounts}}
{{i18n 'discourse_donations.submit_with_create_account'}}
{{else}}
{{i18n 'discourse_donations.submit'}} {{i18n 'discourse_donations.submit'}}
{{/if}}
{{/d-button}} {{/d-button}}
{{#if transactionInProgress}} {{#if transactionInProgress}}

View File

@ -6,5 +6,6 @@ en:
amount: Amount amount: Amount
card: Credit or debit card card: Credit or debit card
submit: Make Payment submit: Make Payment
submit_with_create_account: Make Payment and Create Account
messages: messages:
success: Thank you for your donation! success: Thank you for your donation!

View File

@ -9,19 +9,15 @@ module DiscourseDonations
SiteSetting.stubs(:discourse_donations_secret_key).returns('secret-key-yo') SiteSetting.stubs(:discourse_donations_secret_key).returns('secret-key-yo')
end end
describe 'creating user accounts' do it 'responds ok for anonymous users' do
it 'creates a new user account' do
controller.expects(:create_user).once
post :create, { email: 'foobar@example.com' } post :create, { email: 'foobar@example.com' }
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
end end
it 'does not create a new user account' do it 'responds ok for logged in user' do
controller.expects(:create_user).never
current_user = log_in(:coding_horror) current_user = log_in(:coding_horror)
post :create post :create
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
end end
end end
end end
end