Skip to content

Commit d845a98

Browse files
author
mpv1989
committed
Add ArangoDB.updateUserDefaultDatabaseAccess &
ArangoDB.updateUserDefaultCollectionAccess
1 parent 0644284 commit d845a98

File tree

4 files changed

+47
-0
lines changed

4 files changed

+47
-0
lines changed

ChangeLog

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ v4.2.2 (xxxx-xx-xx)
44
* added ArangoCollection.grantAccess(String, Permissions)
55
* added ArangoDatabase.resetAccess(String)
66
* added ArangoCollection.resetAccess(String)
7+
* added ArangoDB.updateUserDefaultDatabaseAccess(String, Permissions)
8+
* added ArangoDB.updateUserDefaultCollectionAccess(String, Permissions)
79
* added ArangoCollection.getDocuments(Collection<String>, Class)
810

911
v4.2.1 (2017-06-20)

src/main/java/com/arangodb/ArangoDB.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import com.arangodb.entity.ArangoDBVersion;
3434
import com.arangodb.entity.LogEntity;
3535
import com.arangodb.entity.LogLevelEntity;
36+
import com.arangodb.entity.Permissions;
3637
import com.arangodb.entity.ServerRole;
3738
import com.arangodb.entity.UserEntity;
3839
import com.arangodb.internal.ArangoDBConstants;
@@ -612,6 +613,14 @@ public UserEntity replaceUser(final String user, final UserUpdateOptions options
612613
return executor.execute(replaceUserRequest(db().name(), user, options), UserEntity.class);
613614
}
614615

616+
public void updateUserDefaultDatabaseAccess(final String user, final Permissions permissions) {
617+
executor.execute(updateUserDefaultDatabaseAccessRequest(user, permissions), Void.class);
618+
}
619+
620+
public void updateUserDefaultCollectionAccess(final String user, final Permissions permissions) {
621+
executor.execute(updateUserDefaultDatabaseAccessRequest(user, permissions), Void.class);
622+
}
623+
615624
/**
616625
* Generic Execute. Use this method to execute custom FOXX services.
617626
*

src/main/java/com/arangodb/internal/InternalArangoDB.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,15 @@
2929
import com.arangodb.ArangoDBException;
3030
import com.arangodb.Protocol;
3131
import com.arangodb.entity.LogLevelEntity;
32+
import com.arangodb.entity.Permissions;
3233
import com.arangodb.entity.ServerRole;
3334
import com.arangodb.entity.UserEntity;
3435
import com.arangodb.internal.ArangoExecutor.ResponseDeserializer;
3536
import com.arangodb.internal.velocystream.internal.Connection;
3637
import com.arangodb.model.DBCreateOptions;
3738
import com.arangodb.model.LogOptions;
3839
import com.arangodb.model.OptionsBuilder;
40+
import com.arangodb.model.UserAccessOptions;
3941
import com.arangodb.model.UserCreateOptions;
4042
import com.arangodb.model.UserUpdateOptions;
4143
import com.arangodb.util.ArangoSerialization;
@@ -252,6 +254,19 @@ protected Request replaceUserRequest(final String database, final String user, f
252254
return request;
253255
}
254256

257+
protected Request updateUserDefaultDatabaseAccessRequest(final String user, final Permissions permissions) {
258+
return new Request(ArangoDBConstants.SYSTEM, RequestType.PUT,
259+
executor.createPath(ArangoDBConstants.PATH_API_USER, user, ArangoDBConstants.DATABASE, "*")).setBody(
260+
util().serialize(OptionsBuilder.build(new UserAccessOptions(), permissions.toString())));
261+
}
262+
263+
protected Request updateUserDefaultCollectionAccessRequest(final String user, final Permissions permissions) {
264+
return new Request(ArangoDBConstants.SYSTEM, RequestType.PUT,
265+
executor.createPath(ArangoDBConstants.PATH_API_USER, user, ArangoDBConstants.DATABASE, "*", "*"))
266+
.setBody(
267+
util().serialize(OptionsBuilder.build(new UserAccessOptions(), permissions.toString())));
268+
}
269+
255270
protected Request getLogsRequest(final LogOptions options) {
256271
final LogOptions params = options != null ? options : new LogOptions();
257272
return new Request(ArangoDBConstants.SYSTEM, RequestType.GET, ArangoDBConstants.PATH_API_ADMIN_LOG)

src/test/java/com/arangodb/ArangoDBTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import com.arangodb.entity.LogEntity;
4848
import com.arangodb.entity.LogLevel;
4949
import com.arangodb.entity.LogLevelEntity;
50+
import com.arangodb.entity.Permissions;
5051
import com.arangodb.entity.UserEntity;
5152
import com.arangodb.model.LogOptions;
5253
import com.arangodb.model.LogOptions.SortOrder;
@@ -256,6 +257,26 @@ public void replaceUser() {
256257
}
257258
}
258259

260+
@Test
261+
public void updateUserDefaultDatabaseAccess() {
262+
try {
263+
arangoDB.createUser(USER, PW);
264+
arangoDB.updateUserDefaultDatabaseAccess(USER, Permissions.RW);
265+
} finally {
266+
arangoDB.deleteUser(USER);
267+
}
268+
}
269+
270+
@Test
271+
public void updateUserDefaultCollectionAccess() {
272+
try {
273+
arangoDB.createUser(USER, PW);
274+
arangoDB.updateUserDefaultCollectionAccess(USER, Permissions.RW);
275+
} finally {
276+
arangoDB.deleteUser(USER);
277+
}
278+
}
279+
259280
@Test
260281
public void authenticationFailPassword() {
261282
final ArangoDB arangoDB = new ArangoDB.Builder().password("no").build();

0 commit comments

Comments
 (0)