Changes made for Role assignment 81/104681/1
authorSudarshan Kumar <sudarshan.kumar@att.com>
Mon, 30 Mar 2020 11:29:58 +0000 (16:59 +0530)
committerSudarshan Kumar <sudarshan.kumar@att.com>
Mon, 30 Mar 2020 11:31:20 +0000 (17:01 +0530)
Support Addition of Roles to Non Human User Id

Issue-ID: PORTAL-866
Change-Id: Ib45f4f56ca97c89e3305090dc5c61a9960049a54
Signed-off-by: Sudarshan Kumar <sudarshan.kumar@att.com>
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/UserRolesController.java
ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/UserRolesCommonServiceImpl.java
portal-FE-common/src/app/pages/users/users.component.ts
portal-FE-os/src/app/pages/users/new-user-modal/new-user-modal.component.ts

index 852e2bb..aa180b0 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START==========================================
  * ONAP Portal
  * ===================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
  * ===================================================================
  *
  * Unless otherwise specified, all software contained herein is licensed
@@ -46,6 +46,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.apache.cxf.transport.http.HTTPException;
 import org.onap.portalapp.controller.EPRestrictedBaseController;
+import org.onap.portalapp.portal.domain.EPApp;
 import org.onap.portalapp.portal.domain.EPRole;
 import org.onap.portalapp.portal.domain.EPUser;
 import org.onap.portalapp.portal.domain.EPUserAppCatalogRoles;
@@ -58,6 +59,7 @@ import org.onap.portalapp.portal.logging.aop.EPEELFLoggerAdvice;
 import org.onap.portalapp.portal.logging.logic.EPLogUtil;
 import org.onap.portalapp.portal.service.AdminRolesService;
 import org.onap.portalapp.portal.service.ApplicationsRestClientService;
+import org.onap.portalapp.portal.service.EPAppService;
 import org.onap.portalapp.portal.service.SearchService;
 import org.onap.portalapp.portal.service.UserRolesService;
 import org.onap.portalapp.portal.transport.AppNameIdIsAdmin;
@@ -75,6 +77,7 @@ import org.onap.portalsdk.core.domain.AuditLog;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.portalsdk.core.restful.domain.EcompRole;
 import org.onap.portalsdk.core.service.AuditService;
+import org.onap.portalsdk.core.service.DataAccessService;
 import org.onap.portalsdk.core.util.SystemProperties;
 import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -103,6 +106,8 @@ public class UserRolesController extends EPRestrictedBaseController {
     private ApplicationsRestClientService applicationsRestClientService;
     @Autowired
     private AuditService auditService;
+    @Autowired
+       private DataAccessService dataAccessService;
 
     private static final String FAILURE = "failure";
 
@@ -288,6 +293,18 @@ public class UserRolesController extends EPRestrictedBaseController {
             EcompPortalUtils.setBadPermissions(user, response, "getAppRolesForUser");
             feErrorString = EcompPortalUtils.getFEErrorString(true, response.getStatus());
         } else {
+               try {
+                       if(orgUserId!=null) {
+                               EPUser localUser  = getUserInfo(orgUserId,applicationsRestClientService);
+                               if(localUser !=null) {
+                                       if(localUser.isSystemUser()) {
+                                               isSystemUser = true;
+                                       }
+                               }
+                       }
+                       } catch (Exception e) {
+                               logger.error(EELFLoggerDelegate.errorLogger, "isSystemUser update failed", e);
+                       }
             if ((!isSystemUser && EcompPortalUtils.legitimateUserId(orgUserId)) || isSystemUser) {
                 result = userRolesService.getAppRolesForUser(appid, orgUserId, extRequestValue, user);
                 logger.debug(EELFLoggerDelegate.debugLogger, "getAppRolesForUser: result {}, appId {}", result, appid);
@@ -572,4 +589,23 @@ public class UserRolesController extends EPRestrictedBaseController {
         }
         return isSuperAdmin;
     }
+    
+    /**
+        * 
+        * @param userId
+        * @param app
+        * @param applicationsRestClientService
+        * @return EPUser
+        * @throws HTTPException
+        */
+       protected EPUser getUserInfo(String userId, ApplicationsRestClientService applicationsRestClientService)
+                       throws HTTPException {
+               @SuppressWarnings("unchecked")
+               List<EPUser> userList = (List<EPUser>) dataAccessService
+                               .executeQuery("from EPUser where orgUserId='" + userId + "'", null);
+               if (userList != null && !userList.isEmpty())
+                       return userList.get(0);
+               else
+                       return null;
+       }
 }
index ab68882..e5ce206 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START==========================================
  * ONAP Portal
  * ===================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
  * ===================================================================
  *
  * Unless otherwise specified, all software contained herein is licensed
@@ -1192,7 +1192,7 @@ public class UserRolesCommonServiceImpl  {
         * @param roleInAppUser Contains list of active roles 
         */
        @SuppressWarnings("unchecked")
-       private void updateUserRolesInExternalSystem(EPApp app, String orgUserId, List<RoleInAppForUser> roleInAppUser, boolean isPortalRequest,boolean isSystemUser,Set<EcompRole> deletedRolesByApprover,boolean isLoggedInUserRoleAdminofApp) throws Exception
+       private void updateUserRolesInExternalSystem(EPApp app, String orgUserId, List<RoleInAppForUser> roleInAppUser, boolean isPortalRequest,boolean nonHumanUserId,Set<EcompRole> deletedRolesByApprover,boolean isLoggedInUserRoleAdminofApp) throws Exception
        {
                try {
                        // check if user exists
@@ -1200,15 +1200,23 @@ public class UserRolesCommonServiceImpl  {
                        userParams.put("orgUserIdValue", orgUserId);
                        List<EPUser> userInfo = checkIfUserExists(userParams);
                        if (userInfo.isEmpty()) {
-                               createLocalUserIfNecessary(orgUserId, isSystemUser);
+                               createLocalUserIfNecessary(orgUserId, nonHumanUserId);
                        }
                        String name = "";
                        if (EPCommonSystemProperties
-                                       .containsProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_USER_DOMAIN) && !isSystemUser) {
-                               name = orgUserId
-                                               + SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_USER_DOMAIN);
+                                       .containsProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_USER_DOMAIN) && !nonHumanUserId) {
+                               if(orgUserId.indexOf("@") ==-1) {
+                                       name = orgUserId + SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_USER_DOMAIN);
+                               }else {
+                                       name = orgUserId;
+                               }
                        } else {
                                name = orgUserId;
+                               if(nonHumanUserId && orgUserId!=null) {
+                       if(orgUserId.indexOf("@") ==-1) {
+                               name = orgUserId + SystemProperties.getProperty(EPCommonSystemProperties.EXTERNAL_CENTRAL_ACCESS_USER_DOMAIN);
+                       }                       
+               }
                        }
                        ObjectMapper mapper = new ObjectMapper();
                        HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
index 23538b5..935be92 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START==========================================
  * ONAP Portal
  * ===================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
  * ===================================================================
  *
  * Unless otherwise specified, all software contained herein is licensed
@@ -93,7 +93,19 @@ export class UsersComponent implements OnInit {
 
   openExistingUserModal(userData: any) {
     const modalRef = this.ngbModal.open(NewUserModalComponent);
-    modalRef.componentInstance.userTitle = `${userData.firstName}, ${userData.lastName} ` + '(' + `${userData.orgUserId}` + ')';
+    let firstName = '';
+    let lastName = '';
+    let orgUserId = '';
+    if(userData && userData.firstName && userData.firstName!=null){
+      firstName = userData.firstName;
+    }
+    if(userData && userData.lastName && userData.lastName!=null){
+      lastName = ',' + userData.lastName;
+    }
+    if(userData && userData.orgUserId && userData.orgUserId!=null){
+      orgUserId = ' (' +userData.orgUserId + ')';
+    }
+    modalRef.componentInstance.userTitle = `${firstName} ${lastName} ${orgUserId}` ;
     modalRef.componentInstance.dialogState = 2;
     modalRef.componentInstance.userModalData = userData;
     modalRef.componentInstance.disableBack = true;
index 76c14f1..e5133a9 100644 (file)
@@ -122,7 +122,7 @@ export class NewUserModalComponent implements OnInit {
   searchUserRadioChange($event: MatRadioChange) {
     if ($event.value === 'System') {
       this.searchTitleText = 'Enter System UserID';
-      this.placeholderText = 'xxxxxx@org.com';
+      this.placeholderText = 'xxxxxx or xxxxxx@org.com';
       this.isSystemUserCheck = true;
     } else {
       this.searchTitleText = 'Enter First Name, Last Name or ATTUID';