You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by is...@apache.org on 2020/03/13 14:55:39 UTC

[airavata-custos] branch develop updated: Bug fix in profile linker

This is an automated email from the ASF dual-hosted git repository.

isjarana pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/airavata-custos.git


The following commit(s) were added to refs/heads/develop by this push:
     new 0c1ad46  Bug fix in profile linker
     new 8c26709  Merge pull request #25 from isururanawaka/microservices_based_impl
0c1ad46 is described below

commit 0c1ad46acd4280f4d33787588b60778d9a94607d
Author: Isuru Ranawaka <ir...@gmail.com>
AuthorDate: Fri Mar 13 10:53:58 2020 -0400

    Bug fix in profile linker
---
 .../management/interceptors/InputValidator.java    |   3 +
 .../src/main/resources/user-management-service.pb  | Bin 102396 -> 103510 bytes
 .../management/interceptors/InputValidator.java    |   8 +-
 .../management/service/UserManagementService.java  | 177 ++++++++++-----------
 .../src/main/proto/UserManagementService.proto     |  18 +--
 5 files changed, 103 insertions(+), 103 deletions(-)

diff --git a/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/interceptors/InputValidator.java b/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/interceptors/InputValidator.java
index f8cf3a8..a50d268 100644
--- a/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/interceptors/InputValidator.java
+++ b/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/interceptors/InputValidator.java
@@ -69,10 +69,13 @@ public class InputValidator implements IntegrationServiceInterceptor {
                 break;
             case "addTenantRoles":
                 validateAddRoleToTenant(headers, body, methodName);
+                break;
             case "addProtocolMapper":
                 validateAddProtocolMapper(headers, body, methodName);
+                break;
             case "updateTenantStatus":
                 validateUpdateTenantStatus(headers, body, methodName);
+                break;
             default:
         }
     }
diff --git a/custos-integration-services/user-management-service-parent/user-management-service-sidecar/src/main/resources/user-management-service.pb b/custos-integration-services/user-management-service-parent/user-management-service-sidecar/src/main/resources/user-management-service.pb
index dd877cc..8b350e0 100644
Binary files a/custos-integration-services/user-management-service-parent/user-management-service-sidecar/src/main/resources/user-management-service.pb and b/custos-integration-services/user-management-service-parent/user-management-service-sidecar/src/main/resources/user-management-service.pb differ
diff --git a/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/interceptors/InputValidator.java b/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/interceptors/InputValidator.java
index e1af057..7869e60 100644
--- a/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/interceptors/InputValidator.java
+++ b/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/interceptors/InputValidator.java
@@ -58,11 +58,11 @@ public class InputValidator implements IntegrationServiceInterceptor {
         validationAuthorizationHeader(headers);
         LinkUserProfileRequest request = ((LinkUserProfileRequest) body);
 
-        if (request.getUsername() == null || request.getUsername().equals("")) {
-            throw new MissingParameterException("Username should not be null", null);
+        if (request.getPreviousUsername() == null || request.getPreviousUsername().equals("")) {
+            throw new MissingParameterException("Previous Username should not be null", null);
         }
-        if (!(request.getSearchByName() || request.getSearchByEmail() || request.getSearchByUsername())) {
-            throw new MissingParameterException("At least one search parameter should ne true", null);
+        if (request.getCurrentUsername() == null || request.getCurrentUsername().equals("")) {
+            throw new MissingParameterException("Current username  should not be null", null);
         }
         if (request.getLinkingAttributesList().isEmpty()) {
             throw new MissingParameterException("Linking attributes should not be empty", null);
diff --git a/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/service/UserManagementService.java b/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/service/UserManagementService.java
index 358b712..41402f3 100644
--- a/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/service/UserManagementService.java
+++ b/custos-integration-services/user-management-service-parent/user-management-service/src/main/java/org/apache/custos/user/management/service/UserManagementService.java
@@ -940,133 +940,132 @@ public class UserManagementService extends UserManagementServiceGrpc.UserManagem
         try {
             LOGGER.debug("Request received to linkUserProfile   at " + request.getTenantId());
 
-            UserSearchMetadata metadata = UserSearchMetadata
-                    .newBuilder()
-                    .setUsername(request.getUsername()).build();
-
-            UserSearchRequest searchRequest = UserSearchRequest
+            GetUserManagementSATokenRequest userManagementSATokenRequest = GetUserManagementSATokenRequest
                     .newBuilder()
                     .setClientId(request.getIamClientId())
+                    .setClientSecret(request.getIamClientSecret())
                     .setTenantId(request.getTenantId())
-                    .setAccessToken(request.getAccessToken())
-                    .setUser(metadata)
                     .build();
+            AuthToken token = identityClient.getUserManagementSATokenRequest(userManagementSATokenRequest);
 
-            UserRepresentation userTobeLinked = iamAdminServiceClient.getUser(searchRequest);
-
-
-            if (userTobeLinked != null && !userTobeLinked.getUsername().equals("")) {
-
-                UserSearchMetadata.Builder exMetadata = UserSearchMetadata
-                        .newBuilder();
-
-                if (request.getSearchByEmail()) {
-                    exMetadata.setEmail(userTobeLinked.getEmail());
-                }
-
-                if (request.getSearchByUsername()) {
-                    exMetadata.setUsername(userTobeLinked.getUsername());
-                }
+            if (token != null && token.getAccessToken() != null) {
 
-                if (request.getSearchByName()) {
-                    exMetadata.setFirstName(userTobeLinked.getFirstName());
-                    exMetadata.setLastName(userTobeLinked.getLastName());
-                }
 
+                UserSearchMetadata metadata = UserSearchMetadata
+                        .newBuilder()
+                        .setUsername(request.getCurrentUsername()).build();
 
-                UserSearchRequest exSearchRequest = UserSearchRequest
+                UserSearchRequest searchRequest = UserSearchRequest
                         .newBuilder()
                         .setClientId(request.getIamClientId())
                         .setTenantId(request.getTenantId())
-                        .setAccessToken(request.getAccessToken())
+                        .setAccessToken(token.getAccessToken())
                         .setUser(metadata)
                         .build();
 
-                UserRepresentation exRep = iamAdminServiceClient.getUser(exSearchRequest);
 
-                if (exRep != null && !exRep.getUsername().equals("")) {
+                UserRepresentation userTobeLinked = iamAdminServiceClient.getUser(searchRequest);
 
-                    boolean profileUpdate = false;
 
-                    List<UserAttribute> userAttributeList = new ArrayList<>();
+                if (userTobeLinked != null && !userTobeLinked.getUsername().equals("")) {
 
-                    for (String attribute : request.getLinkingAttributesList()) {
+                    UserSearchMetadata exMetadata = UserSearchMetadata
+                            .newBuilder().setUsername(request.getPreviousUsername()).build();
 
-                        if ("name".equals(attribute)) {
-                            profileUpdate = true;
-                            userTobeLinked = userTobeLinked.toBuilder()
-                                    .setFirstName(exRep.getFirstName())
-                                    .setLastName(exRep.getLastName())
-                                    .build();
+                    UserSearchRequest exSearchRequest = UserSearchRequest
+                            .newBuilder()
+                            .setClientId(request.getIamClientId())
+                            .setTenantId(request.getTenantId())
+                            .setAccessToken(token.getAccessToken())
+                            .setUser(exMetadata)
+                            .build();
+
+                    UserRepresentation exRep = iamAdminServiceClient.getUser(exSearchRequest);
+
+                    if (exRep != null && !exRep.getUsername().equals("")) {
+
+                        boolean profileUpdate = false;
+
+                        List<UserAttribute> userAttributeList = new ArrayList<>();
+
+                        for (String attribute : request.getLinkingAttributesList()) {
+
+                            if ("name".equals(attribute)) {
+                                profileUpdate = true;
+                                userTobeLinked = userTobeLinked.toBuilder()
+                                        .setFirstName(exRep.getFirstName())
+                                        .setLastName(exRep.getLastName())
+                                        .build();
 
-                        } else if (("email").equals(attribute)) {
-                            profileUpdate = true;
-                            userTobeLinked = userTobeLinked.toBuilder().setEmail(exRep.getEmail()).build();
+                            } else if (("email").equals(attribute)) {
+                                profileUpdate = true;
+                                userTobeLinked = userTobeLinked.toBuilder().setEmail(exRep.getEmail()).build();
 
-                        } else {
-                            List<UserAttribute> userAttributes = exRep.getAttributesList().stream().
-                                    filter(atr -> atr.getKey().equals(attribute)).collect(Collectors.toList());
+                            } else {
+                                List<UserAttribute> userAttributes = exRep.getAttributesList().stream().
+                                        filter(atr -> atr.getKey().equals(attribute)).collect(Collectors.toList());
 
-                            if (!userAttributes.isEmpty()) {
-                                UserAttribute userAttribute = userAttributes.get(0);
-                                userAttributeList.add(userAttribute);
+                                if (!userAttributes.isEmpty()) {
+                                    UserAttribute userAttribute = userAttributes.get(0);
+                                    userAttributeList.add(userAttribute);
+                                }
                             }
                         }
-                    }
 
-                    if (profileUpdate) {
-                        UpdateUserProfileRequest updateUserProfileRequest = UpdateUserProfileRequest
-                                .newBuilder()
-                                .setUser(userTobeLinked)
-                                .setAccessToken(request.getAccessToken())
-                                .setTenantId(request.getTenantId())
-                                .build();
-                        iamAdminServiceClient.updateUserProfile(updateUserProfileRequest);
-                    }
+                        if (profileUpdate) {
+                            UpdateUserProfileRequest updateUserProfileRequest = UpdateUserProfileRequest
+                                    .newBuilder()
+                                    .setUser(userTobeLinked)
+                                    .setAccessToken(token.getAccessToken())
+                                    .setTenantId(request.getTenantId())
+                                    .build();
+                            iamAdminServiceClient.updateUserProfile(updateUserProfileRequest);
+                        }
 
-                    if (!userAttributeList.isEmpty()) {
+                        if (!userAttributeList.isEmpty()) {
 
-                        AddUserAttributesRequest addUserAttributesRequest = AddUserAttributesRequest
-                                .newBuilder()
-                                .addUsers(request.getUsername())
-                                .addAllAttributes(userAttributeList)
-                                .setTenantId(request.getTenantId())
-                                .setAccessToken(request.getAccessToken())
-                                .setClientId(request.getIamClientId())
-                                .setPerformedBy(request.getPerformedBy())
-                                .build();
-                        iamAdminServiceClient.addUserAttributes(addUserAttributesRequest);
+                            AddUserAttributesRequest addUserAttributesRequest = AddUserAttributesRequest
+                                    .newBuilder()
+                                    .addUsers(request.getCurrentUsername())
+                                    .addAllAttributes(userAttributeList)
+                                    .setTenantId(request.getTenantId())
+                                    .setAccessToken(token.getAccessToken())
+                                    .setClientId(request.getIamClientId())
+                                    .setPerformedBy(request.getPerformedBy())
+                                    .build();
+                            iamAdminServiceClient.addUserAttributes(addUserAttributesRequest);
 
-                    }
+                        }
 
 
-                    UserRepresentation updatedUser = iamAdminServiceClient.getUser(searchRequest);
+                        UserRepresentation updatedUser = iamAdminServiceClient.getUser(searchRequest);
 
-                    if (updatedUser != null) {
+                        if (updatedUser != null) {
 
-                        UserProfile profile = this.convertToProfile(updatedUser);
+                            UserProfile profile = this.convertToProfile(updatedUser);
 
-                        org.apache.custos.user.profile.service.UserProfileRequest req =
-                                org.apache.custos.user.profile.service.UserProfileRequest
-                                        .newBuilder()
-                                        .setTenantId(request.getTenantId())
-                                        .setProfile(profile)
-                                        .build();
+                            org.apache.custos.user.profile.service.UserProfileRequest req =
+                                    org.apache.custos.user.profile.service.UserProfileRequest
+                                            .newBuilder()
+                                            .setTenantId(request.getTenantId())
+                                            .setProfile(profile)
+                                            .build();
 
-                        userProfileClient.updateUserProfile(req);
+                            userProfileClient.updateUserProfile(req);
 
-                    }
+                        }
 
-                    CheckingResponse response = CheckingResponse.newBuilder().setIsExist(true).build();
-                    responseObserver.onNext(response);
-                    responseObserver.onCompleted();
+                        CheckingResponse response = CheckingResponse.newBuilder().setIsExist(true).build();
+                        responseObserver.onNext(response);
+                        responseObserver.onCompleted();
 
-                } else {
-                    String msg = "Cannot found existing user ";
-                    LOGGER.error(msg);
-                    responseObserver.onError(Status.NOT_FOUND.withDescription(msg).asRuntimeException());
-                }
+                    } else {
+                        String msg = "Cannot found existing user ";
+                        LOGGER.error(msg);
+                        responseObserver.onError(Status.NOT_FOUND.withDescription(msg).asRuntimeException());
+                    }
 
+                }
             }
 
         } catch (Exception ex) {
diff --git a/custos-integration-services/user-management-service-parent/user-management-service/src/main/proto/UserManagementService.proto b/custos-integration-services/user-management-service-parent/user-management-service/src/main/proto/UserManagementService.proto
index 04da5d0..66cd9bd 100644
--- a/custos-integration-services/user-management-service-parent/user-management-service/src/main/proto/UserManagementService.proto
+++ b/custos-integration-services/user-management-service-parent/user-management-service/src/main/proto/UserManagementService.proto
@@ -67,16 +67,14 @@ message ResetPasswordRequest {
 }
 
 message LinkUserProfileRequest {
-    string username = 1;
-    int64 tenantId = 2;
-    bool search_by_email = 3;
-    bool search_by_name = 4;
-    bool search_by_username = 6;
-    repeated  string linking_attributes = 7;
-    string iamClientId = 8;
-    string iamClientSecret = 9;
-    string accessToken = 10;
-    string performedBy = 11;
+    string current_username = 1;
+    string previous_username = 2;
+    repeated  string linking_attributes = 3;
+    int64 tenantId = 4;
+    string iamClientId = 5;
+    string iamClientSecret = 6;
+    string accessToken = 7;
+    string performedBy = 8;
 }