v2.1.0 (#293)
* Fix wrapping when too many hosts are shown (#207) * Update npm packages, fixes CVE-2019-10757 * Revert some breaking packages * Major overhaul - Docker buildx support in CI - Cypress API Testing in CI - Restructured folder layout (insert clean face meme) - Added Swagger documentation and validate API against that (to be completed) - Use common base image for all supported archs, which includes updated nginx with ipv6 support - Updated certbot and changes required for it - Large amount of Hosts names will wrap in UI - Updated packages for frontend - Version bump 2.1.0 * Updated documentation * Fix JWT expire time going crazy. Now set to 1day * Backend JS formatting rules * Remove v1 importer, I doubt anyone is using v1 anymore * Added backend formatting rules and enforce them in Jenkins builds * Fix CI, doesn't need a tty * Thanks bcrypt. Why can't you just be normal. * Cleanup after syntax check Co-authored-by: Marcelo Castagna <margaale@users.noreply.github.com>
This commit is contained in:
.babelrc.gitignore
.jenkins
.versionDockerfileDockerfile.arm64Dockerfile.armv6lDockerfile.armv7lJenkinsfileREADME.mdbackend
.eslintrc.json.gitignore.prettierrcapp.js
config
db.jsdoc
index.jsinternal
access-list.jsaudit-log.jscertificate.jsdead-host.jshost.jsip_ranges.jsnginx.jsproxy-host.jsredirection-host.jsreport.jssetting.jsstream.jstoken.jsuser.js
knexfile.jslib
access.js
logger.jsmigrate.jsaccess
access_lists-create.jsonaccess_lists-delete.jsonaccess_lists-get.jsonaccess_lists-list.jsonaccess_lists-update.jsonauditlog-list.jsoncertificates-create.jsoncertificates-delete.jsoncertificates-get.jsoncertificates-list.jsoncertificates-update.jsondead_hosts-create.jsondead_hosts-delete.jsondead_hosts-get.jsondead_hosts-list.jsondead_hosts-update.jsonpermissions.jsonproxy_hosts-create.jsonproxy_hosts-delete.jsonproxy_hosts-get.jsonproxy_hosts-list.jsonproxy_hosts-update.jsonredirection_hosts-create.jsonredirection_hosts-delete.jsonredirection_hosts-get.jsonredirection_hosts-list.jsonredirection_hosts-update.jsonreports-hosts.jsonroles.jsonsettings-get.jsonsettings-list.jsonsettings-update.jsonstreams-create.jsonstreams-delete.jsonstreams-get.jsonstreams-list.jsonstreams-update.jsonusers-create.jsonusers-delete.jsonusers-get.jsonusers-list.jsonusers-loginas.jsonusers-password.jsonusers-permissions.jsonusers-update.json
error.jsexpress
helpers.jsmigrate_template.jsutils.jsvalidator
migrations
20180618015850_initial.js20180929054513_websockets.js20181019052346_forward_host.js20181113041458_http2_support.js20181213013211_forward_scheme.js20190104035154_disabled.js20190215115310_customlocations.js20190218060101_hsts.js20190227065017_settings.js
models
access_list.jsaccess_list_auth.jsaudit-log.jsauth.jscertificate.jsdead_host.jsproxy_host.jsredirection_host.jssetting.jsstream.jstoken.jsuser.jsuser_permission.js
nodemon.jsonpackage.jsonroutes
api
schema
definitions.json
setup.jsendpoints
access-lists.jsoncertificates.jsondead-hosts.jsonproxy-hosts.jsonredirection-hosts.jsonsettings.jsonstreams.jsontokens.jsonusers.json
examples.jsonindex.jsontemplates
_assets.conf_certificates.conf_exploits.conf_forced_ssl.conf_header_comment.conf_hsts.conf_listen.conf_location.confdead_host.confdefault.confip_ranges.confletsencrypt-request.confproxy_host.confredirection_host.confstream.conf
yarn.lockbin
config
doc
docker-compose.ymldocker
Dockerfile
dev
docker-compose.ci.ymldocker-compose.dev.ymlrootfs
bin
etc
cont-finish.d
cont-init.d
fix-attrs.d
letsencrypt.ininginx
conf.d
default.confdev.conf
mime.typesnginx.confinclude
.gitignoreassets.confblock-exploits.confforce-ssl.confip_ranges.confletsencrypt-acme-challenge.confproxy.confssl-ciphers.conf
production.confservices.d
root
var
www
html
frontend
.babelrc.gitignorepackage.json
knexfile.jspackage.jsonapp-images
default-avatar.jpg
fontsfavicons
html
imagesjs
app
api.jsrouter.js
audit-log
cache.jscontroller.jsdashboard
empty
error
help
i18n.jsmain.jsnginx
access
certificates-list-item.ejscertificates
dead
proxy
access-list-item.ejsdelete.ejsdelete.jsform.ejsform.js
list
location-item.ejslocation.jsmain.ejsmain.jsredirection
stream
settings
tokens.jsui
user
users
i18n
index.jslib
login.jslogin
models
scss
webpack.config.jsyarn.lockrootfs
scripts
src
backend
app.jsdb.jsimporter.jsindex.js
internal
access-list.jsaudit-log.jscertificate.jsdead-host.jshost.jsip_ranges.jsnginx.jsproxy-host.jsredirection-host.jsreport.jssetting.jsstream.jstoken.jsuser.js
lib
access.js
logger.jsmigrate.jsaccess
access_lists-create.jsonaccess_lists-delete.jsonaccess_lists-get.jsonaccess_lists-list.jsonaccess_lists-update.jsonauditlog-list.jsoncertificates-create.jsoncertificates-delete.jsoncertificates-get.jsoncertificates-list.jsoncertificates-update.jsondead_hosts-create.jsondead_hosts-delete.jsondead_hosts-get.jsondead_hosts-list.jsondead_hosts-update.jsonpermissions.jsonproxy_hosts-create.jsonproxy_hosts-delete.jsonproxy_hosts-get.jsonproxy_hosts-list.jsonproxy_hosts-update.jsonredirection_hosts-create.jsonredirection_hosts-delete.jsonredirection_hosts-get.jsonredirection_hosts-list.jsonredirection_hosts-update.jsonreports-hosts.jsonroles.jsonsettings-get.jsonsettings-list.jsonsettings-update.jsonstreams-create.jsonstreams-delete.jsonstreams-get.jsonstreams-list.jsonstreams-update.jsonusers-create.jsonusers-delete.jsonusers-get.jsonusers-list.jsonusers-loginas.jsonusers-password.jsonusers-permissions.jsonusers-update.json
error.jsexpress
helpers.jsmigrate_template.jsutils.jsvalidator
migrations
20180618015850_initial.js20180929054513_websockets.js20181113041458_http2_support.js20190104035154_disabled.js20190218060101_hsts.js20190227065017_settings.js
models
access_list.jsaccess_list_auth.jsaudit-log.jsauth.jscertificate.jsdead_host.jsproxy_host.jsredirection_host.jssetting.jsstream.jstoken.jsuser.jsuser_permission.js
routes
setup.jsviews
partials
frontend
test
.eslintrc.json.gitignore.prettierrcREADME.md
webpack.config.jscypress
jsconfig.jsonpackage.jsonyarn.lock
95
frontend/js/app/user/permissions.js
Normal file
95
frontend/js/app/user/permissions.js
Normal file
@ -0,0 +1,95 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
});
|
Reference in New Issue
Block a user