CADI AAF Integration and merging the code
[portal.git] / ecomp-portal-BE-common / src / main / java / org / onap / portalapp / portal / controller / ExternalAccessRolesController.java
index f846253..5f6818f 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START==========================================
  * ONAP Portal
  * ===================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
  * ===================================================================
  *
  * Unless otherwise specified, all software contained herein is licensed
@@ -33,7 +33,7 @@
  *
  * ============LICENSE_END============================================
  *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * 
  */
 package org.onap.portalapp.portal.controller;
 
@@ -43,6 +43,8 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -69,7 +71,6 @@ import org.onap.portalapp.portal.utils.EcompPortalUtils;
 import org.onap.portalapp.portal.utils.PortalConstants;
 import org.onap.portalsdk.core.domain.AuditLog;
 import org.onap.portalsdk.core.domain.Role;
-import org.onap.portalsdk.core.domain.RoleFunction;
 import org.onap.portalsdk.core.domain.User;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.portalsdk.core.restful.domain.EcompRole;
@@ -108,7 +109,7 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
 
        private static final String SUCCESSFULLY_DELETED = "Successfully Deleted";
 
-       private static final String INVALID_UEB_KEY = "Invalid uebkey!";
+       private static final String INVALID_UEB_KEY = "Invalid credentials!";
 
        private static final String LOGIN_ID = "LoginId";
        
@@ -170,7 +171,7 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
                try {
                        fieldsValidation(request);      
                        EPApp app = externalAccessRolesService.getApp(request.getHeader(UEBKEY)).get(0);
-                       // Sync all roles from external system into Ecomp portal DB
+                       // Sync all roles from external system into ONAP portal DB
                        logger.debug(EELFLoggerDelegate.debugLogger, "getRolesForApp: Entering into syncApplicationRolesWithEcompDB");
                        externalAccessRolesService.syncApplicationRolesWithEcompDB(app);
                        logger.debug(EELFLoggerDelegate.debugLogger, "getRolesForApp: Finished syncApplicationRolesWithEcompDB");
@@ -193,7 +194,7 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
                try {
                        fieldsValidation(request);
                        EPApp app = externalAccessRolesService.getApp(request.getHeader(UEBKEY)).get(0);
-                       // Sync all roles from external system into Ecomp portal DB
+                       // Sync all roles from external system into ONAP portal DB
                        logger.debug(EELFLoggerDelegate.debugLogger, "getV2RolesForApp: Entering into syncApplicationRolesWithEcompDB");
                        externalAccessRolesService.syncApplicationRolesWithEcompDB(app);
                        logger.debug(EELFLoggerDelegate.debugLogger, "getV2RolesForApp: Finished syncApplicationRolesWithEcompDB");
@@ -217,7 +218,7 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
                try {
                        fieldsValidation(request);
                        EPApp app = externalAccessRolesService.getApp(request.getHeader(UEBKEY)).get(0);
-                       // Sync all functions from external system into Ecomp portal DB
+                       // Sync all functions from external system into ONAP portal DB
                        logger.debug(EELFLoggerDelegate.debugLogger, "getRoleFunctionsList: Entering into syncRoleFunctionFromExternalAccessSystem");
                        externalAccessRolesService.syncRoleFunctionFromExternalAccessSystem(app);
                        logger.debug(EELFLoggerDelegate.debugLogger, "getRoleFunctionsList: Finished syncRoleFunctionFromExternalAccessSystem");
@@ -241,7 +242,7 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
                try {
                        fieldsValidation(request);
                        EPApp app = externalAccessRolesService.getApp(request.getHeader(UEBKEY)).get(0);
-                       // Sync all functions from external system into Ecomp portal DB
+                       // Sync all functions from external system into ONAP portal DB
                        logger.debug(EELFLoggerDelegate.debugLogger, "getV2RoleFunctionsList: Entering into syncRoleFunctionFromExternalAccessSystem");
                        externalAccessRolesService.syncRoleFunctionFromExternalAccessSystem(app);
                        logger.debug(EELFLoggerDelegate.debugLogger, "getV2RoleFunctionsList: Finished syncRoleFunctionFromExternalAccessSystem");
@@ -334,6 +335,7 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
        @RequestMapping(value = { "/roleFunction" }, method = RequestMethod.POST, produces = "application/json")
        public PortalRestResponse<String> saveRoleFunction(HttpServletRequest request, HttpServletResponse response,
                        @RequestBody String roleFunc) throws Exception {
+               String status = "Successfully saved!";
                try {
                        fieldsValidation(request);
                        String data = roleFunc;
@@ -343,7 +345,11 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
                        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
                        CentralV2RoleFunction availableRoleFunction = mapper.readValue(data, CentralV2RoleFunction.class);
                        CentralV2RoleFunction domainRoleFunction = null;
+                       boolean isCentralV2Version = false;
                        if(availableRoleFunction.getType()!=null && availableRoleFunction.getAction()!= null) {
+                               isCentralV2Version = true;
+                       }
+                       if(isCentralV2Version) {
                                String code = availableRoleFunction.getType()+"|"+availableRoleFunction.getCode()+"|"+availableRoleFunction.getAction();
                                domainRoleFunction = externalAccessRolesService.getRoleFunction(code,
                                                requestedApp.getUebKey());
@@ -353,7 +359,7 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
                        }
        
                        boolean saveOrUpdateResponse = false;
-                       if (domainRoleFunction != null && domainRoleFunction.getCode().equals(availableRoleFunction.getCode())
+                       if (domainRoleFunction != null && isCentralV2Version && domainRoleFunction.getCode().equals(availableRoleFunction.getCode())
                                        && domainRoleFunction.getType().equals(availableRoleFunction.getType())
                                        && domainRoleFunction.getAction().equals(availableRoleFunction.getAction())) {
                                domainRoleFunction.setName(availableRoleFunction.getName());
@@ -363,13 +369,15 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
                                availableRoleFunction.setAppId(requestedApp.getId());
                                saveOrUpdateResponse = externalAccessRolesService.saveCentralRoleFunction(availableRoleFunction,
                                                requestedApp);
-                       }                       
+                       }               
+               
+                       if(domainRoleFunction != null) {
+                               status = "Successfully updated!";
+                       }
                        if (saveOrUpdateResponse) {
                                EPUser user = externalAccessRolesService.getUser(request.getHeader(LOGIN_ID)).get(0);
                                EPApp app = externalAccessRolesService.getApp(request.getHeader(UEBKEY)).get(0);
-                               CentralV2RoleFunction function = externalAccessRolesService
-                                               .getRoleFunction(availableRoleFunction.getCode(), request.getHeader(UEBKEY));
-                               String activityCode = (function.getCode() == null)
+                               String activityCode = (!status.equals("Successfully updated!"))
                                                ? EcompAuditLog.CD_ACTIVITY_EXTERNAL_AUTH_ADD_FUNCTION
                                                : EcompAuditLog.CD_ACTIVITY_EXTERNAL_AUTH_UPDATE_FUNCTION;
                                logger.info(EELFLoggerDelegate.applicationLogger, "saveRoleFunction: succeeded for app {}, function {}",
@@ -401,7 +409,7 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
                                                "Failed to saveRoleFunction for '" + availableRoleFunction.getCode() + "'", "Failed");
                        }
                } catch (Exception e) {
-                       if (e.getMessage().contains(INVALID_UEB_KEY)) {
+                       if (e.getMessage() == null ||e.getMessage().contains(INVALID_UEB_KEY)) {
                                response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
                        }else {
                                response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
@@ -409,7 +417,7 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
                        logger.error(EELFLoggerDelegate.errorLogger, "saveRoleFunction failed", e);
                        return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.getMessage(), "Failed");
                }
-               return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully Saved", "Success");
+               return new PortalRestResponse<String>(PortalRestStatusEnum.OK, status, "Success");
        }
        
        @ApiOperation(value = "Deletes role function for an application.", response = PortalRestResponse.class, responseContainer = "Json")
@@ -731,15 +739,16 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
        
        @ApiOperation(value = "Bulk upload functions for an partner application.", response = PortalRestResponse.class, responseContainer = "Json")
        @RequestMapping(value = { "/upload/partner/functions" }, method = RequestMethod.POST, produces = "application/json")
-       public  PortalRestResponse<String> bulkUploadPartnerFunctions(HttpServletRequest request, HttpServletResponse response, @RequestBody List<RoleFunction> upload) throws Exception {
+       public  PortalRestResponse<String> bulkUploadPartnerFunctions(HttpServletRequest request, HttpServletResponse response) throws Exception {
+               Integer addedFunctions = 0;
                try {
-                       externalAccessRolesService.bulkUploadPartnerFunctions(request.getHeader(UEBKEY), upload);
+                       addedFunctions = externalAccessRolesService.bulkUploadPartnerFunctions(request.getHeader(UEBKEY));
                } catch (Exception e) {
                        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                        logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadFunctions failed", e);
                        return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadFunctions", "Failed");
                }
-               return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully added", "Success");
+               return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully added: '"+addedFunctions+"' functions", "Success");
        }
        
        @ApiOperation(value = "Bulk upload roles for an partner application.", response = PortalRestResponse.class, responseContainer = "Json")
@@ -757,15 +766,16 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
        
        @ApiOperation(value = "Bulk upload role functions for an partner application.", response = PortalRestResponse.class, responseContainer = "Json")
        @RequestMapping(value = { "/upload/partner/roleFunctions" }, method = RequestMethod.POST, produces = "application/json")
-       public  PortalRestResponse<String> bulkUploadPartnerRoleFunctions(HttpServletRequest request, HttpServletResponse response, @RequestBody List<Role> upload) throws Exception {
+       public  PortalRestResponse<String> bulkUploadPartnerRoleFunctions(HttpServletRequest request, HttpServletResponse response) throws Exception {
+               Integer addedRoleFunctions = 0;
                try {
-                       externalAccessRolesService.bulkUploadPartnerRoleFunctions(request.getHeader(UEBKEY), upload);
+                       addedRoleFunctions = externalAccessRolesService.bulkUploadPartnerRoleFunctions(request.getHeader(UEBKEY));
                } catch (Exception e) {
                        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-                       logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadRoles failed", e);
+                       logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadPartnerRoleFunctions failed", e);
                        return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadPartnerRoleFunctions", "Failed");
                }
-               return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully added", "Success");
+               return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully added: '"+addedRoleFunctions + "' role functions", "Success");
        }
        
        @ApiOperation(value = "Gets all functions along with global functions", response = List.class, responseContainer = "Json")
@@ -846,24 +856,27 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
        @RequestMapping(value = { "/v2/user/{loginId}" }, method = RequestMethod.GET, produces = "application/json")
        public String getEcompUser(HttpServletRequest request, HttpServletResponse response,
                        @PathVariable("loginId") String loginId) throws Exception {
-               EcompUser user = null;
+               EcompUser user = new EcompUser();
                ObjectMapper mapper = new ObjectMapper();
                String answer = null;
                try {
                        fieldsValidation(request);
+                       
                        answer = externalAccessRolesService.getV2UserWithRoles(loginId, request.getHeader(UEBKEY));
                        if (answer != null) {
                 User ecompUser = userservice.userMapper(answer);
                                user = UserUtils.convertToEcompUser(ecompUser);
+                           List<EcompRole> missingRolesOfUser = externalAccessRolesService.missingUserApplicationRoles(request.getHeader(UEBKEY), loginId, user.getRoles());
+                               if (missingRolesOfUser.size() > 0) {
+                                       Set<EcompRole> roles = new TreeSet<EcompRole>(missingRolesOfUser);
+                                       user.getRoles().addAll(roles);
+                               }
                        }
                } catch (Exception e) {
                        sendErrorResponse(response, e); 
                        logger.error(EELFLoggerDelegate.errorLogger, "getEcompUser failed", e);
                }
-               if (user != null) {
-                       return mapper.writeValueAsString(user);
-               }
-               return null;
+               return mapper.writeValueAsString(user);
        }
 
        @ApiOperation(value = "Gets user ecomp role for an application.", response = CentralUser.class, responseContainer = "List")
@@ -876,7 +889,7 @@ public class ExternalAccessRolesController implements BasicAuthenticationControl
                try {
                        fieldsValidation(request);
                        EPApp app = externalAccessRolesService.getApp(request.getHeader(UEBKEY)).get(0);
-                       // Sync all roles from external system into Ecomp portal DB
+                       // Sync all roles from external system into ONAP portal DB
                        logger.debug(EELFLoggerDelegate.debugLogger,
                                        "getRolesForApp: Entering into syncApplicationRolesWithEcompDB");
                        externalAccessRolesService.syncApplicationRolesWithEcompDB(app);