password.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. const Mn = require('backbone.marionette');
  2. const App = require('../main');
  3. const template = require('./password.ejs');
  4. require('jquery-serializejson');
  5. module.exports = Mn.View.extend({
  6. template: template,
  7. className: 'modal-dialog',
  8. ui: {
  9. form: 'form',
  10. buttons: '.modal-footer button',
  11. cancel: 'button.cancel',
  12. save: 'button.save',
  13. error: '.secret-error'
  14. },
  15. events: {
  16. 'click @ui.save': function (e) {
  17. e.preventDefault();
  18. this.ui.error.hide();
  19. let form = this.ui.form.serializeJSON();
  20. if (form.new_password1 !== form.new_password2) {
  21. this.ui.error.text('Passwords do not match!').show();
  22. return;
  23. }
  24. let data = {
  25. type: 'password',
  26. current: form.current_password,
  27. secret: form.new_password1
  28. };
  29. this.ui.buttons.prop('disabled', true).addClass('btn-disabled');
  30. App.Api.Users.setPassword(this.model.get('id'), data)
  31. .then(() => {
  32. App.UI.closeModal();
  33. App.Controller.showUsers();
  34. })
  35. .catch(err => {
  36. this.ui.error.text(err.message).show();
  37. this.ui.buttons.prop('disabled', false).removeClass('btn-disabled');
  38. });
  39. }
  40. },
  41. isSelf: function () {
  42. return App.Cache.User.get('id') === this.model.get('id');
  43. },
  44. templateContext: function () {
  45. return {
  46. isSelf: this.isSelf.bind(this)
  47. };
  48. }
  49. });