Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -1399,6 +1399,7 @@ public void listUser(CloseableHttpClient httpClient) {
List<Object> columnNames =
new ArrayList<Object>() {
{
add(ColumnHeaderConstant.USER_ID);
add(ColumnHeaderConstant.USER);
}
};
Expand All @@ -1409,7 +1410,7 @@ public void listUser(CloseableHttpClient httpClient) {
}
};
Assert.assertEquals(columnNames, columnNamesResult);
Assert.assertEquals(values1, valuesResult.get(0));
Assert.assertEquals(values1, valuesResult.get(1));
}

public void selectCount(CloseableHttpClient httpClient) {
Expand Down Expand Up @@ -2062,6 +2063,7 @@ public void listUserV2(CloseableHttpClient httpClient) {
List<Object> columnNames =
new ArrayList<Object>() {
{
add(ColumnHeaderConstant.USER_ID);
add(ColumnHeaderConstant.USER);
}
};
Expand All @@ -2072,7 +2074,7 @@ public void listUserV2(CloseableHttpClient httpClient) {
}
};
Assert.assertEquals(columnNames, columnNamesResult);
Assert.assertEquals(values1, valuesResult.get(0));
Assert.assertEquals(values1, valuesResult.get(1));
}

public void selectCountV2(CloseableHttpClient httpClient) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,8 @@ public void allPrivilegesTest() throws SQLException {

ResultSet resultSet = userStmt.executeQuery("LIST USER");
Assert.assertTrue(resultSet.next());
Assert.assertEquals("tempuser", resultSet.getString(1));
Assert.assertEquals("10000", resultSet.getString(1));
Assert.assertEquals("tempuser", resultSet.getString(2));
Assert.assertFalse(resultSet.next());

resultSet = userStmt.executeQuery("LIST PRIVILEGES OF USER tempuser");
Expand Down Expand Up @@ -469,7 +470,7 @@ public void testListUser() throws SQLException {

try {
ResultSet resultSet = adminStmt.executeQuery("LIST USER");
String ans = "root,\n";
String ans = "0,root,\n";
try {
validateResultSet(resultSet, ans);

Expand All @@ -478,17 +479,17 @@ public void testListUser() throws SQLException {
}
resultSet = adminStmt.executeQuery("LIST USER");
ans =
"root,\n"
+ "user0,\n"
+ "user1,\n"
+ "user2,\n"
+ "user3,\n"
+ "user4,\n"
+ "user5,\n"
+ "user6,\n"
+ "user7,\n"
+ "user8,\n"
+ "user9,\n";
"0,root,\n"
+ "10000,user0,\n"
+ "10001,user1,\n"
+ "10002,user2,\n"
+ "10003,user3,\n"
+ "10004,user4,\n"
+ "10005,user5,\n"
+ "10006,user6,\n"
+ "10007,user7,\n"
+ "10008,user8,\n"
+ "10009,user9,\n";
validateResultSet(resultSet, ans);

for (int i = 0; i < 10; i++) {
Expand All @@ -497,7 +498,13 @@ public void testListUser() throws SQLException {
}
}
resultSet = adminStmt.executeQuery("LIST USER");
ans = "root,\n" + "user1,\n" + "user3,\n" + "user5,\n" + "user7,\n" + "user9,\n";
ans =
"0,root,\n"
+ "10001,user1,\n"
+ "10003,user3,\n"
+ "10005,user5,\n"
+ "10007,user7,\n"
+ "10009,user9,\n";
validateResultSet(resultSet, ans);
} finally {
resultSet.close();
Expand Down Expand Up @@ -581,7 +588,7 @@ public void testListUserRole() throws SQLException {
ans = "role1,\nrole2,\n";
validateResultSet(resultSet, ans);
resultSet = userStmt.executeQuery("LIST USER OF ROLE role1");
ans = "user1,\nuser2,\n";
ans = "10000,user1,\n10001,user2,\n";
validateResultSet(resultSet, ans);
} finally {
userStmt.close();
Expand Down Expand Up @@ -764,25 +771,25 @@ public void testListRoleUsers() throws SQLException {

ResultSet resultSet = adminStmt.executeQuery("LIST USER OF ROLE dalao");
String ans =
"DailySecurity,\n"
+ "DoubleLight,\n"
+ "East,\n"
+ "Eastwards,\n"
+ "GoldLuck,\n"
+ "GoodWoods,\n"
+ "HealthHonor,\n"
+ "HighFly,\n"
+ "Moon,\n"
+ "Persistence,\n"
+ "RayBud,\n"
+ "ScentEffusion,\n"
+ "Smart,\n"
+ "SunComparison,\n";
"10011,DailySecurity,\n"
+ "10006,DoubleLight,\n"
+ "10010,East,\n"
+ "10007,Eastwards,\n"
+ "10005,GoldLuck,\n"
+ "10003,GoodWoods,\n"
+ "10004,HealthHonor,\n"
+ "10000,HighFly,\n"
+ "10012,Moon,\n"
+ "10002,Persistence,\n"
+ "10013,RayBud,\n"
+ "10008,ScentEffusion,\n"
+ "10009,Smart,\n"
+ "10001,SunComparison,\n";
try {
validateResultSet(resultSet, ans);

resultSet = adminStmt.executeQuery("LIST USER OF ROLE zhazha");
ans = "RiverSky,\n";
ans = "10014,RiverSky,\n";
validateResultSet(resultSet, ans);

adminStmt.execute("REVOKE ROLE zhazha from RiverSky");
Expand Down Expand Up @@ -837,25 +844,25 @@ public void testListUserPrivilege() throws SQLException {
try (Connection userCon = EnvFactory.getEnv().getConnection("tempuser", "temppw123456");
Statement userStmt = userCon.createStatement()) {
try {
String ans = "tempuser,\n";
String ans = "10010,tempuser,\n";
ResultSet resultSet = userStmt.executeQuery("LIST USER");
validateResultSet(resultSet, ans);
// with list user privilege
adminStmt.execute("GRANT SECURITY on root.** TO USER tempuser");
resultSet = userStmt.executeQuery("LIST USER");
ans =
"root,\n"
+ "tempuser,\n"
+ "user0,\n"
+ "user1,\n"
+ "user2,\n"
+ "user3,\n"
+ "user4,\n"
+ "user5,\n"
+ "user6,\n"
+ "user7,\n"
+ "user8,\n"
+ "user9,\n";
"0,root,\n"
+ "10010,tempuser,\n"
+ "10000,user0,\n"
+ "10001,user1,\n"
+ "10002,user2,\n"
+ "10003,user3,\n"
+ "10004,user4,\n"
+ "10005,user5,\n"
+ "10006,user6,\n"
+ "10007,user7,\n"
+ "10008,user8,\n"
+ "10009,user9,\n";
validateResultSet(resultSet, ans);
} finally {
userStmt.close();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ public void listUserPrivileges() throws SQLException {
Statement userStmt = userCon.createStatement()) {
ResultSet resultSet = userStmt.executeQuery("LIST USER");
Assert.assertTrue(resultSet.next());
Assert.assertEquals("testuser", resultSet.getString(1));
Assert.assertEquals("10000", resultSet.getString(1));
Assert.assertEquals("testuser", resultSet.getString(2));
Assert.assertFalse(resultSet.next());
}
adminStmt.execute("create database testdb");
Expand Down Expand Up @@ -136,7 +137,7 @@ public void listUserPrivileges() throws SQLException {
adminStmt.execute("create role testrole");
adminStmt.execute("GRANT ROLE testrole to testuser");
rs = adminStmt.executeQuery("LIST USER OF ROLE testrole");
TestUtils.assertResultSetEqual(rs, "User,", Collections.singleton("testuser,"));
TestUtils.assertResultSetEqual(rs, "UserId,User,", Collections.singleton("10000,testuser,"));
rs = adminStmt.executeQuery("LIST ROLE OF USER testuser");
TestUtils.assertResultSetEqual(rs, "Role,", Collections.singleton("testrole,"));
}
Expand Down Expand Up @@ -533,11 +534,11 @@ public void testCreateUserAndRole() throws SQLException {

ResultSet resultSet = adminStmt.executeQuery("List user");
Set<String> resultSetList = new HashSet<>();
resultSetList.add("root,");
resultSetList.add("testuser,");
resultSetList.add("!@#$%^*()_+-=1,");
resultSetList.add("!@#$%^*()_+-=2,");
TestUtils.assertResultSetEqual(resultSet, "User,", resultSetList);
resultSetList.add("0,root,");
resultSetList.add("10000,testuser,");
resultSetList.add("10001,!@#$%^*()_+-=1,");
resultSetList.add("10002,!@#$%^*()_+-=2,");
TestUtils.assertResultSetEqual(resultSet, "UserId,User,", resultSetList);
resultSet = adminStmt.executeQuery("List role");
TestUtils.assertResultSetEqual(resultSet, "Role,", Collections.singleton("!@#$%^*()_+-=3,"));
adminStmt.execute("GRANT role \"!@#$%^*()_+-=3\" to \"!@#$%^*()_+-=1\"");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,8 +230,8 @@ public void testAuthInclusion() throws Exception {
TestUtils.assertDataEventuallyOnEnv(
receiverEnv,
"list user of role `admin`",
ColumnHeaderConstant.USER + ",",
Collections.singleton("thulab,"));
ColumnHeaderConstant.USER_ID + "," + ColumnHeaderConstant.USER + ",",
Collections.singleton("10000,thulab,"));
TestUtils.assertDataEventuallyOnEnv(
receiverEnv,
"list privileges of role `admin`",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,8 @@ private void testWithSink(final String sink) throws Exception {
TestUtils.assertDataEventuallyOnEnv(
receiverEnv,
"list user",
"User,",
new HashSet<>(Arrays.asList("root,", "user,", "thulab,")));
"UserId,User,",
new HashSet<>(Arrays.asList("0,root,", "10001,user,", "10000,thulab,")));
final Set<String> expectedResSet = new HashSet<>();
expectedResSet.add(
"root.ln.wf02.wt01.temperature,null,root.ln,INT64,PLAIN,LZ4,null,null,null,null,BASE,");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
package org.apache.iotdb.confignode.consensus.response.auth;

import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.confignode.rpc.thrift.TListUserInfo;
import org.apache.iotdb.confignode.rpc.thrift.TPermissionInfoResp;
import org.apache.iotdb.consensus.common.DataSet;

Expand All @@ -32,6 +33,8 @@ public class PermissionInfoResp implements DataSet {
private String tag;
private List<String> memberList;

private List<TListUserInfo> usersInfo;

private TPermissionInfoResp permissionInfoResp;

public PermissionInfoResp() {}
Expand Down Expand Up @@ -62,6 +65,14 @@ public List<String> getMemberList() {
return memberList;
}

public void setUsersInfo(List<TListUserInfo> usersInfo) {
this.usersInfo = usersInfo;
}

public List<TListUserInfo> getUsersInfo() {
return usersInfo;
}

public TPermissionInfoResp getPermissionInfoResp() {
return permissionInfoResp;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,4 +141,8 @@ public TPermissionInfoResp checkRoleOfUser(String username, String rolename)
public TPermissionInfoResp getUser(String username) throws AuthException {
return authorInfo.getUser(username);
}

public String getUserName(long userId) throws AuthException {
return authorInfo.getUserName(userId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ public class PipeConfigRegionSnapshotEvent extends PipeSnapshotEvent
SNAPSHOT_FILE_TYPE_2_CONFIG_PHYSICAL_PLAN_TYPE_MAP = new EnumMap<>(CNSnapshotFileType.class);
private CNSnapshotFileType fileType;

private String authUserName = "";

static {
SNAPSHOT_FILE_TYPE_2_CONFIG_PHYSICAL_PLAN_TYPE_MAP.put(
CNSnapshotFileType.ROLE,
Expand Down Expand Up @@ -136,6 +138,14 @@ public PipeConfigRegionSnapshotEvent(
this.fileType = type;
}

public String getAuthUserName() {
return authUserName;
}

public void setAuthUserName(String authUserName) {
this.authUserName = authUserName;
}

public File getSnapshotFile() {
return new File(snapshotPath);
}
Expand Down Expand Up @@ -195,17 +205,20 @@ public EnrichedEvent shallowCopySelfAndBindPipeTaskMetaForProgressReport(
final boolean skipIfNoPrivileges,
final long startTime,
final long endTime) {
return new PipeConfigRegionSnapshotEvent(
snapshotPath,
templateFilePath,
fileType,
pipeName,
creationTime,
pipeTaskMeta,
treePattern,
tablePattern,
userName,
skipIfNoPrivileges);
PipeConfigRegionSnapshotEvent pipeConfigRegionSnapshotEvent =
new PipeConfigRegionSnapshotEvent(
snapshotPath,
templateFilePath,
fileType,
pipeName,
creationTime,
pipeTaskMeta,
treePattern,
tablePattern,
userName,
skipIfNoPrivileges);
pipeConfigRegionSnapshotEvent.setAuthUserName(authUserName);
return pipeConfigRegionSnapshotEvent;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1033,7 +1033,8 @@ protected TSStatus loadFileV2(
Paths.get(fileAbsolutePaths.get(0)),
fileAbsolutePaths.size() > 1 ? Paths.get(fileAbsolutePaths.get(1)) : null,
CNSnapshotFileType.deserialize(
Byte.parseByte(parameters.get(PipeTransferConfigSnapshotSealReq.FILE_TYPE))));
Byte.parseByte(parameters.get(PipeTransferConfigSnapshotSealReq.FILE_TYPE))),
parameters.getOrDefault("authUserName", ""));
if (Objects.isNull(generator)) {
throw new IOException(
String.format("The config region snapshots %s cannot be parsed.", fileAbsolutePaths));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ public static PipeTransferConfigSnapshotSealReq toTPipeTransferReq(
final String templateFileName,
final long templateFileLength,
final CNSnapshotFileType fileType,
final String typeString)
final String typeString,
final String authUserName)
throws IOException {
final Map<String, String> parameters = new HashMap<>();
parameters.put(ColumnHeaderConstant.PATH_PATTERN, treePattern);
Expand All @@ -72,6 +73,7 @@ public static PipeTransferConfigSnapshotSealReq toTPipeTransferReq(
}
parameters.put(FILE_TYPE, Byte.toString(fileType.getType()));
parameters.put(ColumnHeaderConstant.TYPE, typeString);
parameters.put("authUserName", authUserName);

return (PipeTransferConfigSnapshotSealReq)
new PipeTransferConfigSnapshotSealReq()
Expand Down Expand Up @@ -103,7 +105,8 @@ public static byte[] toTPipeTransferBytes(
final String templateFileName,
final long templateFileLength,
final CNSnapshotFileType fileType,
final String typeString)
final String typeString,
final String authUserName)
throws IOException {
final Map<String, String> parameters = new HashMap<>();
parameters.put(ColumnHeaderConstant.PATH_PATTERN, treePattern);
Expand All @@ -117,6 +120,7 @@ public static byte[] toTPipeTransferBytes(
}
parameters.put(FILE_TYPE, Byte.toString(fileType.getType()));
parameters.put(ColumnHeaderConstant.TYPE, typeString);
parameters.put("authUserName", authUserName);
return new PipeTransferConfigSnapshotSealReq()
.convertToTPipeTransferSnapshotSealBytes(
Objects.nonNull(templateFileName)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,8 @@ private void doTransfer(
Objects.nonNull(templateFile) ? templateFile.getName() : null,
Objects.nonNull(templateFile) ? templateFile.length() : 0,
pipeConfigRegionSnapshotEvent.getFileType(),
pipeConfigRegionSnapshotEvent.toSealTypeString()))) {
pipeConfigRegionSnapshotEvent.toSealTypeString(),
pipeConfigRegionSnapshotEvent.getAuthUserName()))) {
final String errorMessage =
String.format("Seal config region snapshot %s error. Socket %s.", snapshot, socket);
// Send handshake because we don't know whether the receiver side configNode
Expand Down
Loading
Loading