| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- const Mn = require('backbone.marionette');
- const App = require('../main');
- const template = require('./password.ejs');
- require('jquery-serializejson');
- module.exports = Mn.View.extend({
- template: template,
- className: 'modal-dialog',
- ui: {
- form: 'form',
- buttons: '.modal-footer button',
- cancel: 'button.cancel',
- save: 'button.save',
- newSecretError: '.new-secret-error',
- generalError: '#error-info',
- },
- events: {
- 'click @ui.save': function (e) {
- e.preventDefault();
- this.ui.newSecretError.hide();
- this.ui.generalError.hide();
- let form = this.ui.form.serializeJSON();
- if (form.new_password1 !== form.new_password2) {
- this.ui.newSecretError.text('Passwords do not match!').show();
- return;
- }
- let data = {
- type: 'password',
- current: form.current_password,
- secret: form.new_password1
- };
- this.ui.buttons.prop('disabled', true).addClass('btn-disabled');
- App.Api.Users.setPassword(this.model.get('id'), data)
- .then(() => {
- App.UI.closeModal();
- App.Controller.showUsers();
- })
- .catch(err => {
- // Change error message to make it a little clearer
- if (err.message === 'Invalid password') {
- err.message = 'Current password is invalid';
- }
- this.ui.generalError.text(err.message).show();
- this.ui.buttons.prop('disabled', false).removeClass('btn-disabled');
- });
- }
- },
- isSelf: function () {
- return App.Cache.User.get('id') === this.model.get('id');
- },
- templateContext: function () {
- return {
- isSelf: this.isSelf.bind(this)
- };
- },
- onRender: function () {
- this.ui.newSecretError.hide();
- this.ui.generalError.hide();
- },
- });
|