diff --git a/package.json b/package.json index 07326d1a2..024bc5883 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,8 @@ "express": "4.14.0", "express-hbs": "1.0.2", "express-session": "1.14.0", + "exports-loader": "0.6.3", + "expose-loader": "0.7.1", "fast-csv": "^2.3.1", "file-tail": "0.3.0", "grunt": "1.0.1", @@ -45,6 +47,7 @@ "grunt-shell": "1.3.0", "handlebars": "4.0.6", "imap": "0.8.17", + "imports-loader": "0.7.0", "ip-address": "5.8.6", "js-string-escape": "1.0.1", "jsdoc": "3.4.3", @@ -74,6 +77,7 @@ "request": "2.73.0", "rimraf": "^2.6.0", "sanitize-html": "1.13.0", + "script-loader": "0.7.0", "serve-favicon": "2.3.0", "socket.io": "1.4.8", "socket.io-client": "1.4.8", @@ -84,6 +88,8 @@ "underscore.string": "3.3.4", "unzip": "0.1.11", "util": "0.10.3", + "webpack": "2.2.1", + "webpack-node-externals": "1.5.4", "winston": "2.2.0" }, "devDependencies": { @@ -94,24 +100,18 @@ "eslint-config-angular": "0.5.0", "eslint-plugin-angular": "1.6.1", "eslint-plugin-node": "3.0.5", - "exports-loader": "0.6.3", - "expose-loader": "0.7.1", "grunt-contrib-watch": "1.0.0", "grunt-conventional-changelog": "6.1.0", "grunt-express-server": "0.5.3", "grunt-htmlhint": "0.9.13", "grunt-parallel": "0.5.1", - "imports-loader": "0.7.0", "istanbul": "0.4.4", "istanbul-coveralls": "1.0.3", "jsdoc": "3.4.3", "mocha": "2.5.3", "mocha-lcov-reporter": "1.2.0", - "script-loader": "0.7.0", "superagent": "2.0.0", - "supertest": "1.2.0", - "webpack": "2.2.1", - "webpack-node-externals": "1.5.4" + "supertest": "1.2.0" }, "config": { "blanket": { diff --git a/runner.js b/runner.js index 2d84c9964..9c60b2e86 100644 --- a/runner.js +++ b/runner.js @@ -12,13 +12,17 @@ pm2.start({ name: 'trudesk', - script: 'app.js', + script: path.join(__dirname, '/app.js'), output: path.join(__dirname, '/logs/output.log'), error: path.join(__dirname, '/logs/output.log'), mergeLogs: true }, function(err) { + if (err) { + console.log(err); + throw err; + } + pm2.disconnect(); - if (err) throw err; }); }); })(); \ No newline at end of file diff --git a/src/permissions/roles.js b/src/permissions/roles.js index 93e1c8393..993463504 100644 --- a/src/permissions/roles.js +++ b/src/permissions/roles.js @@ -29,6 +29,7 @@ ticket:viewHistory = can view ticket history on single page ticket:setAssignee = can set ticket Assignee ticket:public = can view public created tickets + plugins:manage = user can add/remove Plugins */ var roles = { admin: { diff --git a/src/public/js/angularjs/controllers/plugins.js b/src/public/js/angularjs/controllers/plugins.js index 953498b20..125c8636c 100644 --- a/src/public/js/angularjs/controllers/plugins.js +++ b/src/public/js/angularjs/controllers/plugins.js @@ -51,19 +51,25 @@ define(['angular', 'underscore', 'jquery', 'modules/helpers', 'modules/socket', var update = false; if (hasPluginInstalled) update = compareVersions(loadedPlugin.version, '<', p.pluginjson.version); + var canUserManage = helpers.canUser('plugins:manage'); html += ''; html += '' + p.name.toLowerCase() + ''; html += '' + description + ''; html += '' + p.pluginjson.version + ''; - if (hasPluginInstalled) { - html += ''; - if (update) - html += ''; - html += ''; + if (canUserManage) { + if (hasPluginInstalled) { + html += ''; + if (update) + html += ''; + html += ''; + } + else + html += ''; + } else { + html += ''; } - else - html += ''; + html += ''; }); diff --git a/webpack.config.js b/webpack.config.js index ca132d700..b5e8bd4a0 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -4,7 +4,7 @@ var webpack = require('webpack'); module.exports = { //context: path.resolve(__dirname, 'public/js'), entry : { - vendor: ['jquery', 'angular', 'angularRoute', 'angularCookies', 'angularSanitize', 'datatables', 'dt_responsive', 'dt_grouping', 'dt_ipaddress', 'modernizr', 'underscore'], + vendor: ['jquery', 'jquery_custom', 'angular', 'angularRoute', 'angularCookies', 'angularSanitize', 'datatables', 'dt_responsive', 'dt_grouping', 'dt_ipaddress', 'modernizr', 'underscore'], truRequire: 'expose-loader?truRequire!' + path.resolve(__dirname, './src/public/js/truRequire'), "trudesk.min": path.resolve(__dirname, 'src/public/js/app.js') },