From 2f01559c65d33b00e42988ee829af98fef9881f2 Mon Sep 17 00:00:00 2001 From: Christian Himpe Date: Wed, 27 Dec 2023 09:55:16 +0100 Subject: [PATCH 1/5] fix: add pwd command to console help --- console/src/main/java/com/arcadedb/console/Console.java | 1 + 1 file changed, 1 insertion(+) diff --git a/console/src/main/java/com/arcadedb/console/Console.java b/console/src/main/java/com/arcadedb/console/Console.java index 80e3134a58..581e6c5254 100644 --- a/console/src/main/java/com/arcadedb/console/Console.java +++ b/console/src/main/java/com/arcadedb/console/Console.java @@ -872,6 +872,7 @@ private void executeHelp() { outputLine(1, "info transaction -> prints current transaction"); outputLine(1, "list databases |remote: -> prints list of databases"); outputLine(1, "load -> runs local script"); + outputLine(1, "pwd -> returns current directory"); outputLine(1, "rollback -> rolls back current transaction"); outputLine(1, "set language = sql|sqlscript|cypher|gremlin|mongo -> sets console query language"); outputLine(1, "-- -> comment (no operation)"); From 15416142eaa75795f4d7b2cc106ece27297bdd0b Mon Sep 17 00:00:00 2001 From: Christian Himpe Date: Wed, 27 Dec 2023 21:18:39 +0100 Subject: [PATCH 2/5] Overload createUser method --- .../java/com/arcadedb/remote/RemoteServer.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/network/src/main/java/com/arcadedb/remote/RemoteServer.java b/network/src/main/java/com/arcadedb/remote/RemoteServer.java index 634f0122dc..d402ea5975 100644 --- a/network/src/main/java/com/arcadedb/remote/RemoteServer.java +++ b/network/src/main/java/com/arcadedb/remote/RemoteServer.java @@ -74,7 +74,7 @@ public String toString() { return protocol + "://" + currentServer + ":" + currentPort; } - public void createUser(final String userName, final String password, final List databases) { + public void createUser(final String userName, final String password, final HashMap databases) { try { final HttpURLConnection connection = createConnection("POST", getUrl("server")); @@ -83,8 +83,8 @@ public void createUser(final String userName, final String password, final List< jsonUser.put("password", password); if (databases != null && !databases.isEmpty()) { final JSONObject databasesJson = new JSONObject(); - for (final String dbName : databases) - databasesJson.put(dbName, new String[] { "admin" }); + for (Map.Entry entry : databases.entrySet()) + databasesJson.put(entry.getKey(), new String[] { entry.getValue() }); jsonUser.put("databases", databasesJson); } @@ -101,6 +101,16 @@ public void createUser(final String userName, final String password, final List< } } + public void createUser(final String userName, final String password, final List databases) { + + HashMap databasesWithGroups = new HashMap(); + + for (final String dbName : databases) + databasesWithGroups.put(dbName, "admin"); + + createUser(userName, password, databasesWithGroups); + } + public void dropUser(final String userName) { try { final HttpURLConnection connection = createConnection("POST", getUrl("server")); From 23ae1af963e3e2a1260703be885fba69f4d6a224 Mon Sep 17 00:00:00 2001 From: Christian Himpe Date: Wed, 27 Dec 2023 21:19:22 +0100 Subject: [PATCH 3/5] Enhance create user command to assign group --- .../main/java/com/arcadedb/console/Console.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/console/src/main/java/com/arcadedb/console/Console.java b/console/src/main/java/com/arcadedb/console/Console.java index 581e6c5254..ee84fc5d0b 100644 --- a/console/src/main/java/com/arcadedb/console/Console.java +++ b/console/src/main/java/com/arcadedb/console/Console.java @@ -467,16 +467,25 @@ private void executeCreateUser(final String params) { checkHasSpaces("User name", userName); final String password; - final List databases; + HashMap databases = new HashMap(); if (databasesByPos > -1) { password = params.substring(identifiedByPos + "IDENTIFIED BY".length() + 1, databasesByPos).trim(); final String databasesList = params.substring(databasesByPos + " GRANT CONNECT TO ".length()).trim(); final String[] databasesArray = databasesList.split(","); - databases = List.of(databasesArray); + final List databasesName = List.of(databasesArray); + for (final String db : databasesName) { + final int colonPos = db.indexOf(":"); + if (colonPos > -1) { + final String dbname = db.substring(0,colonPos -1).trim(); + final String dbgroup = db.substring(colonPos + 1).trim(); + databases.put(dbname,dbgroup); + } else { + databases.put(db,"admin"); + } + } } else { password = params.substring(identifiedByPos + "IDENTIFIED BY".length() + 1).trim(); - databases = new ArrayList<>(); } checkIsEmpty("User password", password); From 9528b7c88f8f1707f6f038862c843740f918b26e Mon Sep 17 00:00:00 2001 From: Christian Himpe Date: Wed, 27 Dec 2023 21:20:03 +0100 Subject: [PATCH 4/5] Add minimal passing usermgmt console test --- console/src/test/java/com/arcadedb/console/RemoteConsoleIT.java | 1 + 1 file changed, 1 insertion(+) diff --git a/console/src/test/java/com/arcadedb/console/RemoteConsoleIT.java b/console/src/test/java/com/arcadedb/console/RemoteConsoleIT.java index 7e44e9c51c..87ec6f82d4 100644 --- a/console/src/test/java/com/arcadedb/console/RemoteConsoleIT.java +++ b/console/src/test/java/com/arcadedb/console/RemoteConsoleIT.java @@ -198,6 +198,7 @@ public void testUserMgmt() throws IOException { } Assertions.assertTrue(console.parse("create user elon identified by musk grant connect to db1")); + Assertions.assertTrue(console.parse("create user jeff identified by amazon grant connect to db1:readonly")); Assertions.assertTrue(console.parse("drop user elon")); } From affb1ba4c81d417ea1c27676e84cd8257ee578e3 Mon Sep 17 00:00:00 2001 From: Christian Himpe Date: Thu, 28 Dec 2023 13:02:46 +0100 Subject: [PATCH 5/5] Use Map type instead of HashMap --- console/src/main/java/com/arcadedb/console/Console.java | 2 +- network/src/main/java/com/arcadedb/remote/RemoteServer.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/console/src/main/java/com/arcadedb/console/Console.java b/console/src/main/java/com/arcadedb/console/Console.java index ee84fc5d0b..9278a98047 100644 --- a/console/src/main/java/com/arcadedb/console/Console.java +++ b/console/src/main/java/com/arcadedb/console/Console.java @@ -467,7 +467,7 @@ private void executeCreateUser(final String params) { checkHasSpaces("User name", userName); final String password; - HashMap databases = new HashMap(); + Map databases = new HashMap(); if (databasesByPos > -1) { password = params.substring(identifiedByPos + "IDENTIFIED BY".length() + 1, databasesByPos).trim(); diff --git a/network/src/main/java/com/arcadedb/remote/RemoteServer.java b/network/src/main/java/com/arcadedb/remote/RemoteServer.java index d402ea5975..1d6f5d1649 100644 --- a/network/src/main/java/com/arcadedb/remote/RemoteServer.java +++ b/network/src/main/java/com/arcadedb/remote/RemoteServer.java @@ -74,7 +74,7 @@ public String toString() { return protocol + "://" + currentServer + ":" + currentPort; } - public void createUser(final String userName, final String password, final HashMap databases) { + public void createUser(final String userName, final String password, final Map databases) { try { final HttpURLConnection connection = createConnection("POST", getUrl("server")); @@ -103,7 +103,7 @@ public void createUser(final String userName, final String password, final HashM public void createUser(final String userName, final String password, final List databases) { - HashMap databasesWithGroups = new HashMap(); + Map databasesWithGroups = new HashMap(); for (final String dbName : databases) databasesWithGroups.put(dbName, "admin");