* ============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
*
* ============LICENSE_END============================================
*
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ *
*/
package org.onap.portalapp.portal.controller;
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;
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;
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";
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");
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");
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");
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");
@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;
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());
}
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());
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 {}",
"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);
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")
@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")
@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")
@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")
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);