Skip to content

Commit 0098862

Browse files
committed
feat: add AliasesPermission to RBAC
1 parent 20fece7 commit 0098862

6 files changed

Lines changed: 67 additions & 4 deletions

File tree

src/main/java/io/weaviate/client/v1/rbac/api/WeaviatePermission.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.ArrayList;
44
import java.util.List;
55

6+
import io.weaviate.client.v1.rbac.model.AliasesPermission;
67
import io.weaviate.client.v1.rbac.model.BackupsPermission;
78
import io.weaviate.client.v1.rbac.model.CollectionsPermission;
89
import io.weaviate.client.v1.rbac.model.DataPermission;
@@ -25,6 +26,7 @@
2526
@ToString
2627
public class WeaviatePermission {
2728
String action;
29+
AliasesPermission aliases;
2830
BackupsPermission backups;
2931
CollectionsPermission collections;
3032
DataPermission data;
@@ -39,7 +41,9 @@ public WeaviatePermission(String action) {
3941

4042
public <P extends Permission<P>> WeaviatePermission(String action, Permission<P> perm) {
4143
this.action = action;
42-
if (perm instanceof BackupsPermission) {
44+
if (perm instanceof AliasesPermission) {
45+
this.aliases = (AliasesPermission) perm;
46+
} else if (perm instanceof BackupsPermission) {
4347
this.backups = (BackupsPermission) perm;
4448
} else if (perm instanceof CollectionsPermission) {
4549
this.collections = (CollectionsPermission) perm;
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package io.weaviate.client.v1.rbac.model;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.EqualsAndHashCode;
5+
import lombok.Getter;
6+
7+
@Getter
8+
@EqualsAndHashCode(callSuper = true)
9+
public class AliasesPermission extends Permission<AliasesPermission> {
10+
final String alias;
11+
12+
public AliasesPermission(String alias, Action... actions) {
13+
super(actions);
14+
this.alias = alias;
15+
}
16+
17+
AliasesPermission(String alias, String action) {
18+
this(alias, RbacAction.fromString(Action.class, action));
19+
}
20+
21+
@AllArgsConstructor
22+
public enum Action implements RbacAction {
23+
CREATE("create_aliases"),
24+
READ("read_aliases"),
25+
UPDATE("update_aliases"),
26+
DELETE("delete_aliases");
27+
28+
@Getter
29+
private final String value;
30+
}
31+
}

src/main/java/io/weaviate/client/v1/rbac/model/Permission.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ private WeaviatePermission toWeaviate(String action) {
6666
*/
6767
public static Permission<?> fromWeaviate(WeaviatePermission perm) {
6868
String action = perm.getAction();
69-
if (perm.getBackups() != null) {
69+
if (perm.getAliases() != null) {
70+
return new AliasesPermission(perm.getAliases().getAlias(), action);
71+
} else if (perm.getBackups() != null) {
7072
return new BackupsPermission(perm.getBackups().getCollection(), action);
7173
} else if (perm.getCollections() != null) {
7274
return new CollectionsPermission(perm.getCollections().getCollection(), action);
@@ -126,11 +128,22 @@ private Key(Object object) {
126128
return result.values().stream().collect(Collectors.toList());
127129
}
128130

131+
/**
132+
* Create {@link AliasesPermission} for a alias.
133+
* <p>
134+
* Example:
135+
* {@code Permission.backups("Pizza", AliasPermission.Action.MANAGE) }
136+
*/
137+
public static AliasesPermission alias(String alias, AliasesPermission.Action... actions) {
138+
checkDeprecation(actions);
139+
return new AliasesPermission(alias, actions);
140+
}
141+
129142
/**
130143
* Create {@link BackupsPermission} for a collection.
131144
* <p>
132145
* Example:
133-
* {@code Permission.backups(BackupsPermission.Action.MANAGE, "Pizza") }
146+
* {@code Permission.backups("Pizza", BackupsPermission.Action.MANAGE) }
134147
*/
135148
public static BackupsPermission backups(String collection, BackupsPermission.Action... actions) {
136149
checkDeprecation(actions);
@@ -140,7 +153,7 @@ public static BackupsPermission backups(String collection, BackupsPermission.Act
140153
/**
141154
* Create {@link ClusterPermission} permission.
142155
* <p>
143-
* Example: {@code Permission.cluster(ClusterPermission.Action.READ, "Pizza") }
156+
* Example: {@code Permission.cluster(ClusterPermission.Action.READ) }
144157
*/
145158
public static ClusterPermission cluster(ClusterPermission.Action... actions) {
146159
checkDeprecation(actions);

src/test/java/io/weaviate/client/v1/rbac/api/WeaviatePermissionTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import org.junit.Test;
88

9+
import io.weaviate.client.v1.rbac.model.AliasesPermission;
910
import io.weaviate.client.v1.rbac.model.BackupsPermission;
1011
import io.weaviate.client.v1.rbac.model.ClusterPermission;
1112
import io.weaviate.client.v1.rbac.model.CollectionsPermission;
@@ -26,6 +27,10 @@ public class WeaviatePermissionTest {
2627
@Test
2728
public void testMergedPermissions() {
2829
WeaviatePermission[] apiPermissions = {
30+
// Create and delete PizzaAlias alias
31+
new WeaviatePermission("create_alias", new AliasesPermission("PizzaAlias")),
32+
new WeaviatePermission("delete_alias", new AliasesPermission("PizzaAlias")),
33+
2934
// Manage Pizza backups
3035
new WeaviatePermission("manage_backups", new BackupsPermission("Pizza")),
3136

@@ -70,6 +75,7 @@ public void testMergedPermissions() {
7075
};
7176

7277
Permission<?>[] libraryPermissions = {
78+
new AliasesPermission("PizzaAlias", AliasesPermission.Action.CREATE, AliasesPermission.Action.DELETE),
7379
new BackupsPermission("Pizza", BackupsPermission.Action.MANAGE),
7480
new DataPermission("Pizza", DataPermission.Action.MANAGE, DataPermission.Action.READ),
7581
new DataPermission("Songs", DataPermission.Action.UPDATE, DataPermission.Action.DELETE),

src/test/java/io/weaviate/client/v1/rbac/model/PermissionTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
@RunWith(JParamsTestRunner.class)
2424
public class PermissionTest {
2525
public static Object[][] serializationTestCases() {
26+
AliasesPermission alias = new AliasesPermission("PizzaAlias", AliasesPermission.Action.CREATE);
2627
BackupsPermission backups = new BackupsPermission("Pizza", BackupsPermission.Action.MANAGE);
2728
DataPermission data = new DataPermission("Pizza", DataPermission.Action.MANAGE);
2829
NodesPermission nodes = new NodesPermission("Pizza", NodesPermission.Action.READ);
@@ -33,6 +34,11 @@ public static Object[][] serializationTestCases() {
3334
UsersPermission users = new UsersPermission(UsersPermission.Action.READ);
3435

3536
return new Object[][] {
37+
{
38+
"alias permission",
39+
(Supplier<Permission<?>>) () -> alias,
40+
new WeaviatePermission("create_backups", alias),
41+
},
3642
{
3743
"backup permission",
3844
(Supplier<Permission<?>>) () -> backups,

src/test/java/io/weaviate/integration/tests/rbac/ClientRbacTestSuite.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import io.weaviate.client.Config;
2626
import io.weaviate.client.base.Result;
27+
import io.weaviate.client.v1.rbac.model.AliasesPermission;
2728
import io.weaviate.client.v1.rbac.model.BackupsPermission;
2829
import io.weaviate.client.v1.rbac.model.ClusterPermission;
2930
import io.weaviate.client.v1.rbac.model.CollectionsPermission;
@@ -133,8 +134,10 @@ public void testCreate(String _name, Supplier<Rbac> rbac) {
133134
Rbac roles = rbac.get();
134135
String myRole = roleName("VectorOwner");
135136
String myCollection = "Pizza";
137+
String myCollectionAlias = "PizzaAlias";
136138

137139
Permission<?>[] wantPermissions = new Permission<?>[] {
140+
Permission.alias(myCollectionAlias, AliasesPermission.Action.CREATE),
138141
Permission.backups(myCollection, BackupsPermission.Action.MANAGE),
139142
Permission.cluster(ClusterPermission.Action.READ),
140143
Permission.nodes(myCollection, NodesPermission.Action.READ),

0 commit comments

Comments
 (0)