diff --git a/packages/nc-cli/package.json b/packages/nc-cli/package.json index c894e77b08..73217f665e 100644 --- a/packages/nc-cli/package.json +++ b/packages/nc-cli/package.json @@ -1,6 +1,6 @@ { "name": "create-nocodb-app", - "version": "0.1.21", + "version": "0.1.22", "description": "nc-cli", "main": "dist/bundle.js", "module": "dist/bundle.js", diff --git a/packages/nc-cli/src/lib/mgr/NewMgr.ts b/packages/nc-cli/src/lib/mgr/NewMgr.ts index db8216ce64..c09d7415da 100644 --- a/packages/nc-cli/src/lib/mgr/NewMgr.ts +++ b/packages/nc-cli/src/lib/mgr/NewMgr.ts @@ -231,7 +231,7 @@ class NewMgr { args.folder = path.join(args.folder, args._[1]); mkdirp.sync(args.folder); process.chdir(args.folder); - await Util.runCmd(`cd ${args.folder}`); + await Util.runCmd(`cd ${Util.escapeShellArg(args.folder)}`); await promisify(download)('direct:https://github.com/nocodb/nocodb-seed/archive/refs/heads/main.zip', args.folder); if (answers.type !== 'sqlite3') { @@ -239,7 +239,7 @@ class NewMgr { } if (os.type() === 'Windows_NT') { - console.log(boxen(`# Project created successfully\n\n# Please run the following commands\n\n${('cd ' + args.folder + '\nnpm install \nnpm start\n').green.bold}`, { + console.log(boxen(`# Project created successfully\n\n# Please run the following commands\n\n${('cd ' + Util.escapeShellArg(args.folder) + '\nnpm install \nnpm start\n').green.bold}`, { borderColor: 'green', borderStyle: 'round', margin: 1, @@ -490,7 +490,7 @@ class NewMgr { args.folder = path.join(args.folder, args._[1]); mkdirp.sync(args.folder); process.chdir(args.folder); - await Util.runCmd(`cd ${args.folder}`); + await Util.runCmd(`cd ${Util.escapeShellArg(args.folder)}`); await promisify(download)('gitlab:xc-public/test10', args.folder); const config = { diff --git a/packages/nc-cli/src/lib/util/Util.ts b/packages/nc-cli/src/lib/util/Util.ts index 69087ff94e..825abcb4b5 100644 --- a/packages/nc-cli/src/lib/util/Util.ts +++ b/packages/nc-cli/src/lib/util/Util.ts @@ -889,6 +889,10 @@ ${'VARIATIONS :'.bold} } } + public static escapeShellArg(cmd) { + return '"' + cmd.replace(/(["'$`\\])/g, '\\$1') + '"'; + }; + public async play(sound) { switch (sound) { diff --git a/packages/nc-cli/webpack.config.js b/packages/nc-cli/webpack.config.js index 948913a7c0..e8c78a7a87 100644 --- a/packages/nc-cli/webpack.config.js +++ b/packages/nc-cli/webpack.config.js @@ -3,7 +3,7 @@ const nodeExternals = require('webpack-node-externals'); // // const TerserPlugin = require('terser-webpack-plugin'); const webpack = require('webpack'); -const JavaScriptObfuscator = require('webpack-obfuscator'); +// const JavaScriptObfuscator = require('webpack-obfuscator'); const path = require('path'); module.exports = { entry: './src/index.ts', @@ -43,11 +43,6 @@ module.exports = { // }, plugins: [ - new JavaScriptObfuscator({ - rotateStringArray: true, - splitStrings: true, - splitStringsChunkLength: 6 - }, []), new webpack.BannerPlugin({banner: "#! /usr/bin/env node", raw: true}), // new CopyPlugin({ diff --git a/packages/nc-gui/components/ProjectTreeView.vue b/packages/nc-gui/components/ProjectTreeView.vue index 14189ba654..8c7a5acf76 100644 --- a/packages/nc-gui/components/ProjectTreeView.vue +++ b/packages/nc-gui/components/ProjectTreeView.vue @@ -599,6 +599,7 @@ ({ + validateTableName, roleIcon: { owner: 'mdi-account-star', creator: 'mdi-account-hard-hat', @@ -1299,7 +1302,7 @@ export default { env: this.menuItem._nodes.env, dbAlias: this.menuItem._nodes.dbAlias, tn: this.menuItem._nodes.tn, - _tn:_tn, + _tn: _tn, dbConnection: this.menuItem._nodes.dbConnection, type: 'table', diff --git a/packages/nc-gui/components/auth/userManagement.vue b/packages/nc-gui/components/auth/userManagement.vue index 6d1da0abb0..14429f2304 100644 --- a/packages/nc-gui/components/auth/userManagement.vue +++ b/packages/nc-gui/components/auth/userManagement.vue @@ -120,12 +120,11 @@ - {{ role }} + {{ getRole(item.roles) }} @@ -411,7 +410,6 @@ hide-details="auto" :items="roles" label="Select User roles" - multiple dense deletable-chips @change="edited = true" @@ -421,6 +419,14 @@ {{ item }} + @@ -490,10 +496,13 @@ export default { return !invalidEmails.length || `"${invalidEmails.join(', ')}" - invalid email` } ], - userList: [] + userList: [], + roleDescriptions: {} }), computed: { - + roleNames() { + return this.roles.map(r => r.title) + }, inviteUrl() { return this.invite_token ? `${location.origin}${location.pathname}#/user/authentication/signup/${this.invite_token.invite_token}` : null }, @@ -506,11 +515,11 @@ export default { }, selectedRoles: { get() { - return this.selectedUser && this.selectedUser.roles ? this.selectedUser.roles.split(',') : [] + return (this.selectedUser && this.selectedUser.roles ? this.selectedUser.roles.split(',') : []).sort((a, b) => this.roleNames.indexOf(a) - this.roleNames.indexOf(a))[0] }, set(roles) { if (this.selectedUser) { - this.selectedUser.roles = roles.filter(Boolean).join(',') + this.selectedUser.roles = roles // .filter(Boolean).join(',') } } }, @@ -524,9 +533,6 @@ export default { } }, watch: { - userEditDialog(v) { - if (!v) { this.validate = false } - }, options: { async handler() { await this.loadUsers() @@ -534,6 +540,7 @@ export default { deep: true }, userEditDialog(v) { + // if (!v) { this.validate = false } if (v && (this.selectedUser && !this.selectedUser.id)) { this.$nextTick(() => { setTimeout(() => { @@ -552,6 +559,9 @@ export default { this.$eventBus.$off('show-add-user', this.addUser) }, methods: { + getRole(roles) { + return (roles ? roles.split(',') : []).sort((a, b) => this.roleNames.indexOf(a) - this.roleNames.indexOf(a))[0] + }, simpleAnim() { const count = 30 const defaults = { @@ -651,7 +661,10 @@ export default { params: { project_id: this.$route.params.project_id } - })).data.map(role => role.title).filter(role => role !== 'guest') + })).data.map((role) => { + this.roleDescriptions[role.title] = role.description + return role.title + }).filter(role => role !== 'guest') } catch (e) { console.log(e) } diff --git a/packages/nc-gui/components/import/excelImport.vue b/packages/nc-gui/components/import/excelImport.vue index b57a2df2d7..487cd73d7d 100644 --- a/packages/nc-gui/components/import/excelImport.vue +++ b/packages/nc-gui/components/import/excelImport.vue @@ -128,15 +128,17 @@