| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | const Mn        = require('backbone.marionette');const App       = require('../main');const UserModel = require('../../models/user');const template  = require('./permissions.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',        error:   '.secret-error'    },    events: {        'click @ui.save': function (e) {            e.preventDefault();            let view = this;            let data = this.ui.form.serializeJSON();            // Manipulate            if (view.model.isAdmin()) {                // Force some attributes for admin                data = _.assign({}, data, {                    access_lists:      'manage',                    dead_hosts:        'manage',                    proxy_hosts:       'manage',                    redirection_hosts: 'manage',                    streams:           'manage',                    certificates:      'manage'                });            }            this.ui.buttons.prop('disabled', true).addClass('btn-disabled');            App.Api.Users.setPermissions(view.model.get('id'), data)                .then(() => {                    if (view.model.get('id') === App.Cache.User.get('id')) {                        App.Cache.User.set({permissions: data});                    }                    view.model.set({permissions: data});                    App.UI.closeModal();                })                .catch(err => {                    this.ui.error.text(err.message).show();                    this.ui.buttons.prop('disabled', false).removeClass('btn-disabled');                });        }    },    templateContext: function () {        let perms    = this.model.get('permissions');        let is_admin = this.model.isAdmin();        return {            getPerm: function (key) {                if (perms !== null && typeof perms[key] !== 'undefined') {                    return perms[key];                }                return null;            },            getPermProps: function (key, item, forced_admin) {                if (forced_admin && is_admin) {                    return 'checked disabled';                } else if (is_admin) {                    return 'disabled';                } else if (perms !== null && typeof perms[key] !== 'undefined' && perms[key] === item) {                    return 'checked';                }                return '';            },            isAdmin: function () {                return is_admin;            }        };    },    initialize: function (options) {        if (typeof options.model === 'undefined' || !options.model) {            this.model = new UserModel.Model();        }    }});
 |