Skip to content

Commit

Permalink
Address ACL V2 changes (approach 2)
Browse files Browse the repository at this point in the history
  • Loading branch information
sazzad16 committed Jan 25, 2022
1 parent fe4ea7b commit 1172314
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 57 deletions.
4 changes: 2 additions & 2 deletions src/main/java/redis/clients/jedis/BuilderFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -744,10 +744,10 @@ public AccessControlUser build(Object data) {
// TODO: Proper implementation of ACL V2.

// keys
accessControlUser.setKeys(SafeEncoder.encode((byte[]) objectList.get(7)));
accessControlUser.addKeys(SafeEncoder.encode((byte[]) objectList.get(7)));

// channels
accessControlUser.setChannels(SafeEncoder.encode((byte[]) objectList.get(9)));
accessControlUser.addChannels(SafeEncoder.encode((byte[]) objectList.get(9)));
}

// selectors
Expand Down
68 changes: 17 additions & 51 deletions src/main/java/redis/clients/jedis/resps/AccessControlUser.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
package redis.clients.jedis.resps;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class AccessControlUser {

private final List<String> flags = new ArrayList<>();
private final List<String> keysList = new ArrayList<>();
private String keysString;
private final List<String> keys = new ArrayList<>();
private final List<String> passwords = new ArrayList<>();
private final List<String> channelsList = new ArrayList<>();
private String channelsString;
private final List<String> channels = new ArrayList<>();
private String commands;

public AccessControlUser() {
Expand All @@ -25,33 +24,17 @@ public List<String> getFlags() {
}

public void addKey(String key) {
keysList.add(key);
keys.add(key);
}

/**
* @deprecated Use {@link AccessControlUser#getKeysList()}.
*/
@Deprecated
public List<String> getKeys() {
return keysList;
return keys;
}

/**
* For Redis version below 7.
*/
public List<String> getKeysList() {
return keysList;
}

/**
* For Redis version from 7.
*/
public String getKeysString() {
return keysString;
}

public void setKeys(String keys) {
this.keysString = keys;
public void addKeys(String keys) {
if (!keys.isEmpty()) {
this.keys.addAll(Arrays.asList(keys.split(" ")));
}
}

public void addPassword(String password) {
Expand All @@ -63,33 +46,17 @@ public List<String> getPassword() {
}

public void addChannel(String channel) {
channelsList.add(channel);
channels.add(channel);
}

/**
* @deprecated Use {@link AccessControlUser#getChannelsList()}.
*/
@Deprecated
public List<String> getChannels() {
return channelsList;
}

/**
* For Redis version below 7.
*/
public List<String> getChannelsList() {
return channelsList;
}

/**
* For Redis version from 7.
*/
public String getChannelsString() {
return channelsString;
return channels;
}

public void setChannels(String channels) {
this.channelsString = channels;
public void addChannels(String channels) {
if (!channels.isEmpty()) {
this.channels.addAll(Arrays.asList(channels.split(" ")));
}
}

public String getCommands() {
Expand All @@ -102,8 +69,7 @@ public void setCommands(String commands) {

@Override
public String toString() {
return "AccessControlUser{" + "flags=" + flags + ", passwords=" + passwords + ", commands='" + commands
+ "', keys='" + (keysString != null ? keysString : keysList)
+ "', channels='" + (channelsString != null ? channelsString : channelsList) + "'}";
return "AccessControlUser{" + "flags=" + flags + ", passwords=" + passwords
+ ", commands='" + commands + "', keys='" + keys + "', channels='" + channels + "'}";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,7 @@ public void aclGetUser() {
assertEquals(1, userInfo.getFlags().size());
assertEquals(1, userInfo.getPassword().size());
assertEquals("+@all", userInfo.getCommands());
// assertEquals("*", userInfo.getKeys().get(0));
assertEquals("~*", userInfo.getKeysString());
assertEquals("~*", userInfo.getKeys().get(0));

// create new user
jedis.aclDelUser(USER_ZZZ);
Expand Down Expand Up @@ -463,8 +462,7 @@ public void aclBinaryCommandsTest() {
assertThat(userInfo.getCommands(), containsString("+@all"));
assertThat(userInfo.getCommands(), containsString("-@string"));
assertThat(userInfo.getCommands(), containsString("+debug|digest"));
// assertEquals("testchannel:*", userInfo.getChannels().get(0));
assertEquals("&testchannel:*", userInfo.getChannelsString());
assertEquals("&testchannel:*", userInfo.getChannels().get(0));

jedis.aclDelUser(USER_ZZZ.getBytes());

Expand Down

0 comments on commit 1172314

Please sign in to comment.