register-form.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import Ember from 'ember';
  2. export default Ember.Component.extend({
  3. tagName: 'form',
  4. classNames: 'form-horizontal',
  5. zxcvbn: Ember.inject.service('zxcvbn'),
  6. isReady: false,
  7. isErrored: false,
  8. isLoading: false,
  9. username: '',
  10. email: '',
  11. password: '',
  12. captcha: Ember.computed.alias('captcha.value'),
  13. validation: null,
  14. loadServices: function() {
  15. var self = this;
  16. var promises = [
  17. this.get('zxcvbn').load(),
  18. this.get('captcha').load()
  19. ];
  20. Ember.RSVP.allSettled(promises).then(function(array) {
  21. if (array[0].state === 'rejected') {
  22. self.set('isErrored', true);
  23. console.log('zxcvbn service failed to load.');
  24. }
  25. if (array[1].state === 'rejected') {
  26. self.set('isErrored', true);
  27. console.log('captcha service failed to load.');
  28. }
  29. self.set('isReady', !self.get('isErrored'));
  30. });
  31. }.on('didInsertElement'),
  32. submit: function() {
  33. if (this.get('isLoading')) {
  34. return false;
  35. }
  36. this.set('isLoading', true);
  37. var self = this;
  38. this.rpc.ajax('users', {
  39. username: this.get('username'),
  40. email: this.get('email'),
  41. password: this.get('password'),
  42. captcha: this.get('captcha.value')
  43. }).then(function(response) {
  44. self.success(response);
  45. }, function(jqXHR) {
  46. self.error(jqXHR);
  47. }).finally(function() {
  48. self.set('isLoading', false);
  49. })
  50. return false;
  51. },
  52. success: function(response) {
  53. console.log(response);
  54. },
  55. error: function(jqXHR) {
  56. if (jqXHR.status === 400) {
  57. this.set('validation', Ember.Object.create(jqXHR.responseJSON));
  58. }
  59. }
  60. });