Skip to content

Commit 61e0940

Browse files
author
klaus.freitas.scclouds
committed
fix db migration logic, list permissions with keys
1 parent 5cb0eb9 commit 61e0940

File tree

3 files changed

+15
-16
lines changed

3 files changed

+15
-16
lines changed

api/src/main/java/org/apache/cloudstack/api/command/admin/user/DeleteUserKeysCmd.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
public class DeleteUserKeysCmd extends BaseAsyncCmd {
3434

3535
@ACL
36-
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = ApiKeyPairResponse.class, required = true, description = "ID of the keypair to be deleted.")
36+
@Parameter(name = ApiConstants.KEYPAIR_ID, type = CommandType.UUID, entityType = ApiKeyPairResponse.class, required = true, description = "ID of the keypair to be deleted.")
3737
private Long id;
3838

3939
@Override

engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41910to42000.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public InputStream[] getPrepareScripts() {
6464
private void performKeyPairMigration(Connection conn) throws SQLException {
6565
try {
6666
logger.debug("Performing keypair migration from user table to api_keypair table.");
67-
PreparedStatement pstmt = conn.prepareStatement("SELECT u.id, u.api_key, u.secret_key, a.domain_id, u.id FROM `cloud`.`user` AS u JOIN `cloud`.`account` AS a " +
67+
PreparedStatement pstmt = conn.prepareStatement("SELECT u.id, u.api_key, u.secret_key, a.domain_id, u.account_id FROM `cloud`.`user` AS u JOIN `cloud`.`account` AS a " +
6868
"ON u.account_id = a.id WHERE u.api_key IS NOT NULL AND u.secret_key IS NOT NULL");
6969
ResultSet resultSet = pstmt.executeQuery();
7070

server/src/main/java/com/cloud/user/AccountManagerImpl.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
import org.apache.cloudstack.api.command.admin.user.RegisterUserKeysCmd;
8181
import org.apache.cloudstack.api.command.admin.user.UpdateUserCmd;
8282
import org.apache.cloudstack.api.response.ApiKeyPairResponse;
83+
import org.apache.cloudstack.api.response.BaseRolePermissionResponse;
8384
import org.apache.cloudstack.api.response.ListResponse;
8485
import org.apache.cloudstack.api.response.UserTwoFactorAuthenticationSetupResponse;
8586
import org.apache.cloudstack.auth.UserAuthenticator;
@@ -2987,20 +2988,6 @@ private Boolean isApiKeySupersetOfPermission(List<RolePermissionEntity> baseKeyP
29872988
return roleService.roleHasPermission(apiNameToBaseKeyPermissions, comparedPermissions);
29882989
}
29892990

2990-
private Boolean validatePermission(List<RolePermissionEntity> supersetPermissions, RolePermissionEntity comparedPermission) {
2991-
for (RolePermissionEntity supersetPermission : supersetPermissions) {
2992-
if (!supersetPermission.getRule().matches(comparedPermission.getRule().getRuleString())) {
2993-
continue;
2994-
}
2995-
2996-
if (!supersetPermission.getPermission().equals(RolePermissionEntity.Permission.ALLOW) && (comparedPermission.getPermission() == RolePermissionEntity.Permission.ALLOW)) {
2997-
return false;
2998-
}
2999-
return true;
3000-
}
3001-
return false;
3002-
}
3003-
30042991
private void markExpiredKeysWithStateExpired(ApiKeyPair apiKeyPair) {
30052992
if (apiKeyPair.hasEndDatePassed()) {
30062993
internalDeleteApiKey(apiKeyPair);
@@ -3073,6 +3060,18 @@ private void addKeypairResponse(ApiKeyPair keyPair, List<ApiKeyPairResponse> res
30733060
return;
30743061
}
30753062
ApiKeyPairResponse response = cmd._responseGenerator.createKeyPairResponse(keyPair);
3063+
if (Boolean.TRUE.equals(cmd.getShowPermissions())) {
3064+
Account account = _accountDao.findById(keyPair.getAccountId());
3065+
List<ApiKeyPairPermission> apiKeyPairPermissions = apiKeyPairService.findAllPermissionsByKeyPairId(keyPair.getId(), account.getRoleId());
3066+
response.setPermissions(apiKeyPairPermissions.stream().map(apiKeyPairPermission -> {
3067+
BaseRolePermissionResponse rolePermissionResponse = new BaseRolePermissionResponse();
3068+
rolePermissionResponse.setRule(apiKeyPairPermission.getRule());
3069+
rolePermissionResponse.setDescription(apiKeyPairPermission.getDescription());
3070+
rolePermissionResponse.setRulePermission(apiKeyPairPermission.getPermission());
3071+
3072+
return rolePermissionResponse;
3073+
}).collect(Collectors.toList()));
3074+
}
30763075
response.setObjectName(ApiConstants.USER_API_KEY);
30773076
responses.add(response);
30783077
}

0 commit comments

Comments
 (0)