From: Parshad Patel Date: Mon, 16 Sep 2019 12:19:08 +0000 (+0900) Subject: Fix NPE & other sonar issues X-Git-Tag: 3.2.0~84^2 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=portal.git;a=commitdiff_plain;h=a084a8b0c35ddc1ea3a3159043b30f43f221c787 Fix NPE & other sonar issues A "NullPointerException" could be thrown Either log or rethrow this exception Use isEmpty() to check whether the collection is empty or not Replace the type specification in this constructor call with the diamond operator ("<>") Issue-ID: PORTAL-562 Change-Id: I7a0317b66a66e2302c77d8244f4a01c93846c466 Signed-off-by: Parshad Patel --- diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/TicketEventController.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/TicketEventController.java index 71f7f81a..17b5a127 100644 --- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/TicketEventController.java +++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/TicketEventController.java @@ -33,7 +33,7 @@ * * ============LICENSE_END============================================ * - * + * */ package org.onap.portalapp.portal.controller; @@ -85,163 +85,165 @@ import io.swagger.annotations.ApiOperation; @EnableAspectJAutoProxy @EPAuditLog public class TicketEventController implements BasicAuthenticationController { - private static final ValidatorFactory VALIDATOR_FACTORY = Validation.buildDefaultValidatorFactory(); - - @Autowired - private UserNotificationService userNotificationService; - - @Autowired - private TicketEventService ticketEventService; - - private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(TicketEventController.class); - - public boolean isAuxRESTfulCall() { - return true; - } - - private final ObjectMapper mapper = new ObjectMapper(); - - - - @ApiOperation(value = "Accepts messages from external ticketing systems and creates notifications for Portal users.", response = PortalRestResponse.class) - @RequestMapping(value = { "/ticketevent" }, method = RequestMethod.POST) - public PortalRestResponse handleRequest(HttpServletRequest request, HttpServletResponse response, - @RequestBody String ticketEventJson) throws Exception { - - logger.debug(EELFLoggerDelegate.debugLogger, "Ticket Event notification" + ticketEventJson); - PortalRestResponse portalResponse = new PortalRestResponse<>(); - - if (ticketEventJson!=null){ - SecureString secureString = new SecureString(ticketEventJson); - Validator validator = VALIDATOR_FACTORY.getValidator(); - - Set> constraintViolations = validator.validate(secureString); - if (!constraintViolations.isEmpty()){ - portalResponse.setStatus(PortalRestStatusEnum.ERROR); - portalResponse.setMessage("Data is not valid"); - return portalResponse; - } - } - - try { - JsonNode ticketEventNotif = mapper.readTree(ticketEventJson); - - // Reject request if required fields are missing. - String error = validateTicketEventMessage(ticketEventNotif); - if (error != null) { - portalResponse.setStatus(PortalRestStatusEnum.ERROR); - portalResponse.setMessage(error); - response.setStatus(400); - return portalResponse; - } - - EpNotificationItem epItem = new EpNotificationItem(); - epItem.setCreatedDate(new Date()); - epItem.setIsForOnlineUsers("Y"); - epItem.setIsForAllRoles("N"); - epItem.setActiveYn("Y"); - - JsonNode event = ticketEventNotif.get("event"); - JsonNode header = event.get("header"); - JsonNode body = event.get("body"); - JsonNode application = ticketEventNotif.get("application"); - epItem.setMsgDescription(body.toString()); - Long eventDate = System.currentTimeMillis(); - if (body.get("eventDate") != null) { - eventDate = body.get("eventDate").asLong(); - } - String eventSource = header.get("eventSource").asText(); - epItem.setMsgSource(eventSource); - String ticket = body.get("ticketNum").asText(); - String hyperlink = ticketEventService.getNotificationHyperLink(application, ticket, eventSource); - if(body.get("notificationHyperlink")!=null){ - hyperlink=body.get("notificationHyperlink").asText(); - } - epItem.setNotificationHyperlink(hyperlink); - epItem.setStartTime(new Date(eventDate)); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(epItem.getStartTime()); - int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); - calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth + 30); - epItem.setEndTime(calendar.getTime()); - String severityString = "1"; - if (body.get("severity") != null) { - severityString = (body.get("severity").toString()).substring(1, 2); - } - Long severity = Long.parseLong(severityString); - epItem.setPriority(severity); - epItem.setCreatorId(null); - Set roles = new HashSet<>(); - JsonNode SubscriberInfo = ticketEventNotif.get("SubscriberInfo"); - JsonNode userList = SubscriberInfo.get("UserList"); - String UserIds[] = userList.toString().replace("[", "").replace("]", "").trim().replace("\"", "") - .split(","); - String assetID = eventSource + ' ' - + userList.toString().replace("[", "").replace("]", "").trim().replace("\"", "") + ' ' - + new Date(eventDate); - if (body.get("assetID") != null) { - assetID = body.get("assetID").asText(); - } - epItem.setMsgHeader(assetID); - List users = userNotificationService.getUsersByOrgIds(Arrays.asList(UserIds)); - for (String userId : UserIds) { - EpRoleNotificationItem roleNotifItem = new EpRoleNotificationItem(); - for (EPUser user : users) { - if (user.getOrgUserId().equals(userId)) { - roleNotifItem.setRecvUserId(user.getId().intValue()); - roles.add(roleNotifItem); - break; - } - } - - } - epItem.setRoles(roles); - userNotificationService.saveNotification(epItem); - - portalResponse.setStatus(PortalRestStatusEnum.OK); - portalResponse.setMessage("processEventNotification: notification created"); - portalResponse.setResponse("NotificationId is :" + epItem.notificationId); - } catch (Exception ex) { - portalResponse.setStatus(PortalRestStatusEnum.ERROR); - response.setStatus(400); - portalResponse.setMessage(ex.toString()); - } - return portalResponse; - } - - /** - * Validates that mandatory fields are present. - * - * @param ticketEventNotif - * @return Error message if a problem is found; null if all is well. - */ - private String validateTicketEventMessage(JsonNode ticketEventNotif) { - JsonNode application = ticketEventNotif.get("application"); - JsonNode event = ticketEventNotif.get("event"); - JsonNode header = event.get("header"); - JsonNode eventSource=header.get("eventSource"); - JsonNode body = event.get("body"); - JsonNode SubscriberInfo = ticketEventNotif.get("SubscriberInfo"); - JsonNode userList = SubscriberInfo.get("UserList"); - - if (application == null||application.asText().length()==0||application.asText().equalsIgnoreCase("null")) - return "Application is mandatory"; - if (body == null) - return "body is mandatory"; - if (eventSource == null||eventSource.asText().trim().length()==0||eventSource.asText().equalsIgnoreCase("null")) - return "Message Source is mandatory"; - if (userList == null) - return "At least one user Id is mandatory"; - JsonNode eventDate=body.get("eventDate"); - - if(eventDate!=null&&eventDate.asText().length()==8) - return "EventDate is invalid"; - String UserIds[] = userList.toString().replace("[", "").replace("]", "").trim().replace("\"", "") - .split(","); - List users = userNotificationService.getUsersByOrgIds(Arrays.asList(UserIds)); - if(users==null||users.size()==0) - return "Invalid Org User ID"; - return null; - } - + private static final ValidatorFactory VALIDATOR_FACTORY = Validation.buildDefaultValidatorFactory(); + + @Autowired + private UserNotificationService userNotificationService; + + @Autowired + private TicketEventService ticketEventService; + + private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(TicketEventController.class); + + public boolean isAuxRESTfulCall() { + return true; + } + + private final ObjectMapper mapper = new ObjectMapper(); + private static final String EVENT_DATE = "eventDate"; + + @ApiOperation( + value = "Accepts messages from external ticketing systems and creates notifications for Portal users.", + response = PortalRestResponse.class) + @RequestMapping(value = { "/ticketevent" }, method = RequestMethod.POST) + public PortalRestResponse handleRequest(HttpServletRequest request, HttpServletResponse response, + @RequestBody String ticketEventJson) throws Exception { + + logger.debug(EELFLoggerDelegate.debugLogger, "Ticket Event notification" + ticketEventJson); + PortalRestResponse portalResponse = new PortalRestResponse<>(); + + if (ticketEventJson != null) { + SecureString secureString = new SecureString(ticketEventJson); + Validator validator = VALIDATOR_FACTORY.getValidator(); + + Set> constraintViolations = validator.validate(secureString); + if (!constraintViolations.isEmpty()) { + portalResponse.setStatus(PortalRestStatusEnum.ERROR); + portalResponse.setMessage("Data is not valid"); + return portalResponse; + } + } + + try { + JsonNode ticketEventNotif = mapper.readTree(ticketEventJson); + + // Reject request if required fields are missing. + String error = validateTicketEventMessage(ticketEventNotif); + if (error != null) { + portalResponse.setStatus(PortalRestStatusEnum.ERROR); + portalResponse.setMessage(error); + response.setStatus(400); + return portalResponse; + } + + EpNotificationItem epItem = new EpNotificationItem(); + epItem.setCreatedDate(new Date()); + epItem.setIsForOnlineUsers("Y"); + epItem.setIsForAllRoles("N"); + epItem.setActiveYn("Y"); + + JsonNode event = ticketEventNotif.get("event"); + JsonNode header = event.get("header"); + JsonNode body = event.get("body"); + JsonNode application = ticketEventNotif.get("application"); + epItem.setMsgDescription(body.toString()); + Long eventDate = System.currentTimeMillis(); + if (body.get(EVENT_DATE) != null) { + eventDate = body.get(EVENT_DATE).asLong(); + } + String eventSource = header.get("eventSource").asText(); + epItem.setMsgSource(eventSource); + String ticket = body.get("ticketNum").asText(); + String hyperlink = ticketEventService.getNotificationHyperLink(application, ticket, eventSource); + if (body.get("notificationHyperlink") != null) { + hyperlink = body.get("notificationHyperlink").asText(); + } + epItem.setNotificationHyperlink(hyperlink); + epItem.setStartTime(new Date(eventDate)); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(epItem.getStartTime()); + int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); + calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth + 30); + epItem.setEndTime(calendar.getTime()); + String severityString = "1"; + if (body.get("severity") != null) { + severityString = (body.get("severity").toString()).substring(1, 2); + } + Long severity = Long.parseLong(severityString); + epItem.setPriority(severity); + epItem.setCreatorId(null); + Set roles = new HashSet<>(); + JsonNode SubscriberInfo = ticketEventNotif.get("SubscriberInfo"); + JsonNode userList = SubscriberInfo.get("UserList"); + String UserIds[] = userList.toString().replace("[", "").replace("]", "").trim().replace("\"", "") + .split(","); + String assetID = eventSource + ' ' + + userList.toString().replace("[", "").replace("]", "").trim().replace("\"", "") + ' ' + + new Date(eventDate); + if (body.get("assetID") != null) { + assetID = body.get("assetID").asText(); + } + epItem.setMsgHeader(assetID); + List users = userNotificationService.getUsersByOrgIds(Arrays.asList(UserIds)); + for (String userId : UserIds) { + EpRoleNotificationItem roleNotifItem = new EpRoleNotificationItem(); + for (EPUser user : users) { + if (user.getOrgUserId().equals(userId)) { + roleNotifItem.setRecvUserId(user.getId().intValue()); + roles.add(roleNotifItem); + break; + } + } + + } + epItem.setRoles(roles); + userNotificationService.saveNotification(epItem); + + portalResponse.setStatus(PortalRestStatusEnum.OK); + portalResponse.setMessage("processEventNotification: notification created"); + portalResponse.setResponse("NotificationId is :" + epItem.notificationId); + } catch (Exception ex) { + portalResponse.setStatus(PortalRestStatusEnum.ERROR); + response.setStatus(400); + portalResponse.setMessage(ex.toString()); + } + return portalResponse; + } + + /** + * Validates that mandatory fields are present. + * + * @param ticketEventNotif + * @return Error message if a problem is found; null if all is well. + */ + private String validateTicketEventMessage(JsonNode ticketEventNotif) { + JsonNode application = ticketEventNotif.get("application"); + JsonNode event = ticketEventNotif.get("event"); + JsonNode header = event.get("header"); + JsonNode eventSource = header.get("eventSource"); + JsonNode body = event.get("body"); + JsonNode SubscriberInfo = ticketEventNotif.get("SubscriberInfo"); + JsonNode userList = SubscriberInfo.get("UserList"); + + if (application == null || application.asText().length() == 0 || application.asText().equalsIgnoreCase("null")) + return "Application is mandatory"; + if (body == null) + return "body is mandatory"; + if (eventSource == null || eventSource.asText().trim().length() == 0 + || eventSource.asText().equalsIgnoreCase("null")) + return "Message Source is mandatory"; + if (userList == null) + return "At least one user Id is mandatory"; + JsonNode eventDate = body.get(EVENT_DATE); + + if (eventDate != null && eventDate.asText().length() == 8) + return "EventDate is invalid"; + String UserIds[] = userList.toString().replace("[", "").replace("]", "").trim().replace("\"", "") + .split(","); + List users = userNotificationService.getUsersByOrgIds(Arrays.asList(UserIds)); + if (users == null || users.size() == 0) + return "Invalid Org User ID"; + return null; + } + } diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/UserNotificationController.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/UserNotificationController.java index af76cdc0..0dfccc9c 100644 --- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/UserNotificationController.java +++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/UserNotificationController.java @@ -33,7 +33,7 @@ * * ============LICENSE_END============================================ * - * + * */ package org.onap.portalapp.portal.controller; @@ -77,158 +77,161 @@ import org.onap.portalsdk.core.web.support.UserUtils; @EPAuditLog public class UserNotificationController extends EPRestrictedBaseController { - @Autowired - FunctionalMenuService functionalMenuService; - - @Autowired - UserNotificationService userNotificationService; - - EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(UserNotificationController.class); - - @RequestMapping(value = { - "/portalApi/getFunctionalMenuRole" }, method = RequestMethod.GET, produces = "application/json") - public List getMenuIdRoleId(HttpServletRequest request, HttpServletResponse response) { - // EPUser user = EPUserUtils.getUserSession(request); - List menuRoleList = null; - menuRoleList = functionalMenuService.getFunctionalMenuRole(); - return menuRoleList; - } - - @RequestMapping(value = { - "/portalApi/getNotifications" }, method = RequestMethod.GET, produces = "application/json") - public PortalRestResponse> getNotifications(HttpServletRequest request, - HttpServletResponse response) { - EPUser user = EPUserUtils.getUserSession(request); - PortalRestResponse> portalRestResponse = null; - try { - List notificationList = userNotificationService.getNotifications(user.getId()); - portalRestResponse = new PortalRestResponse>(PortalRestStatusEnum.OK, "success", - notificationList); - } catch (Exception e) { - logger.error(EELFLoggerDelegate.errorLogger, "getAllAppsAndContacts failed", e); - portalRestResponse = new PortalRestResponse>(PortalRestStatusEnum.ERROR, - e.getMessage(), null); - } - return portalRestResponse; - } - - @RequestMapping(value = { - "/portalApi/getAdminNotifications" }, method = RequestMethod.GET, produces = "application/json") - public List getAdminNotifications(HttpServletRequest request, HttpServletResponse response) { - List adminNotificationList = null; - EPUser user = EPUserUtils.getUserSession(request); - adminNotificationList = userNotificationService.getAdminNotificationVOS(user.getId()); - return adminNotificationList; - } - - @RequestMapping(value = "/portalApi/saveNotification", method = RequestMethod.POST, produces = "application/json") - public PortalRestResponse save(HttpServletRequest request, HttpServletResponse response, - @RequestBody EpNotificationItem notificationItem) { - - if (notificationItem == null || notificationItem.getMsgHeader() == null) - return new PortalRestResponse(PortalRestStatusEnum.ERROR, "FAILURE", - "Notification Header cannot be null or empty"); - if (notificationItem.getEndTime().compareTo(notificationItem.getStartTime()) < 0) { - return new PortalRestResponse(PortalRestStatusEnum.ERROR, "FAILURE", - "End Time should be greater than start time"); - } - - if ((notificationItem.getIsForAllRoles() == "N") && notificationItem.getRoleIds().isEmpty()) { - return new PortalRestResponse(PortalRestStatusEnum.ERROR, "FAILURE", - "No Roles Ids Exist for the selected Roles"); - } - - Long creatorId = UserUtils.getUserIdAsLong(request); - notificationItem.setCreatorId(creatorId); - - // Front-end date picker does not accept a time value, so all - // values are the start of the chosen day in the local time zone. - // Move the end time value to the very end of the chosen day. - // Avoid Calendar.getDefault() which uses the server's locale. - Long endTime = notificationItem.getEndTime().getTime(); - endTime += (23 * 3600 + 59 * 60 + 59) * 1000; - notificationItem.getEndTime().setTime(endTime); - - try { - userNotificationService.saveNotification(notificationItem); - } catch (Exception e) { - return new PortalRestResponse(PortalRestStatusEnum.ERROR, "FAILURE", e.getMessage()); - } - return new PortalRestResponse(PortalRestStatusEnum.OK, "SUCCESS", ""); - } - - @RequestMapping(value = { - "/portalApi/notificationUpdateRate" }, method = RequestMethod.GET, produces = "application/json") - public PortalRestResponse> getNotificationUpdateRate(HttpServletRequest request) { - try { - String updateRate = SystemProperties.getProperty(EPCommonSystemProperties.NOTIFICATION_UPDATE_RATE); - String updateDuration = SystemProperties.getProperty(EPCommonSystemProperties.NOTIFICATION_UPDATE_DURATION); - Integer rateInMiliSec = Integer.valueOf(updateRate) * 1000; - Integer durationInMiliSec = Integer.valueOf(updateDuration) * 1000; - Map results = new HashMap(); - results.put("updateRate", String.valueOf(rateInMiliSec)); - results.put("updateDuration", String.valueOf(durationInMiliSec)); - return new PortalRestResponse<>(PortalRestStatusEnum.OK, "success", results); - } catch (Exception e) { - logger.error(EELFLoggerDelegate.errorLogger, "getNotificationUpdateRate failed", e); - return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, e.toString(), null); - } - } - - @RequestMapping(value = { - "/portalApi/notificationRead" }, method = RequestMethod.GET, produces = "application/json") - public PortalRestResponse> notificationRead( - @RequestParam("notificationId") String notificationID, HttpServletRequest request) { - try { - userNotificationService.setNotificationRead(Long.parseLong(notificationID), UserUtils.getUserId(request)); - return new PortalRestResponse<>(PortalRestStatusEnum.OK, "success", null); - } catch (Exception e) { - logger.error(EELFLoggerDelegate.errorLogger, "notificationRead failed", e); - return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, e.toString(), null); - } - } - - @RequestMapping(value = { - "/portalApi/getNotificationHistory" }, method = RequestMethod.GET, produces = "application/json") - public List getNotificationHistory(HttpServletRequest request, HttpServletResponse response) { - EPUser user = EPUserUtils.getUserSession(request); - List notificationList = null; - notificationList = userNotificationService.getNotificationHistoryVO(user.getId()); - return notificationList; - } - - @RequestMapping(value = { "/portalApi/notificationRole/{notificationId}/roles" }, method = { - RequestMethod.GET }, produces = "application/json") - public List testGetRoles(HttpServletRequest request, @PathVariable("notificationId") Long notificationId) { - List NotifRoles = userNotificationService.getNotificationRoles(notificationId); - ArrayList rolesList = new ArrayList(); - for (EpRoleNotificationItem notifRole : NotifRoles) { - rolesList.add(notifRole.roleId); - } - return rolesList; - } - - @RequestMapping(value = { "/portalApi/getNotificationAppRoles" }, method = { - RequestMethod.GET }, produces = "application/json") - public List getNotificationAppRoles(HttpServletRequest request, HttpServletResponse response) { - List epAppRoleList = null; - try { - epAppRoleList = userNotificationService.getAppRoleList(); - } catch (Exception e) { - logger.error(EELFLoggerDelegate.errorLogger, - "Exception occurred while performing UserNofiticationController.getNotificationAppRoles. Details: ", - e); - } - return epAppRoleList; - } - - @RequestMapping(value = { - "/portalApi/getMessageRecipients" }, method = RequestMethod.GET, produces = "application/json") - public List getMessageRecipients(@RequestParam("notificationId") Long notificationID) { - // EPUser user = EPUserUtils.getUserSession(request); - List messageUserRecipients = null; - messageUserRecipients = userNotificationService.getMessageRecipients(notificationID); - return messageUserRecipients; - } + @Autowired + FunctionalMenuService functionalMenuService; + + @Autowired + UserNotificationService userNotificationService; + + EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(UserNotificationController.class); + private static final String SUCCESS = "success"; + private static final String FAILURE = "FAILURE"; + + @RequestMapping(value = { + "/portalApi/getFunctionalMenuRole" }, method = RequestMethod.GET, produces = "application/json") + public List getMenuIdRoleId(HttpServletRequest request, HttpServletResponse response) { + // EPUser user = EPUserUtils.getUserSession(request); + List menuRoleList = null; + menuRoleList = functionalMenuService.getFunctionalMenuRole(); + return menuRoleList; + } + + @RequestMapping(value = { + "/portalApi/getNotifications" }, method = RequestMethod.GET, produces = "application/json") + public PortalRestResponse> getNotifications(HttpServletRequest request, + HttpServletResponse response) { + EPUser user = EPUserUtils.getUserSession(request); + PortalRestResponse> portalRestResponse = null; + try { + List notificationList = userNotificationService.getNotifications(user.getId()); + portalRestResponse = new PortalRestResponse<>(PortalRestStatusEnum.OK, SUCCESS, + notificationList); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "getAllAppsAndContacts failed", e); + portalRestResponse = new PortalRestResponse<>(PortalRestStatusEnum.ERROR, + e.getMessage(), null); + } + return portalRestResponse; + } + + @RequestMapping(value = { + "/portalApi/getAdminNotifications" }, method = RequestMethod.GET, produces = "application/json") + public List getAdminNotifications(HttpServletRequest request, HttpServletResponse response) { + List adminNotificationList = null; + EPUser user = EPUserUtils.getUserSession(request); + adminNotificationList = userNotificationService.getAdminNotificationVOS(user.getId()); + return adminNotificationList; + } + + @RequestMapping(value = "/portalApi/saveNotification", method = RequestMethod.POST, produces = "application/json") + public PortalRestResponse save(HttpServletRequest request, HttpServletResponse response, + @RequestBody EpNotificationItem notificationItem) { + + if (notificationItem == null || notificationItem.getMsgHeader() == null) + return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, FAILURE, + "Notification Header cannot be null or empty"); + if (notificationItem.getEndTime().compareTo(notificationItem.getStartTime()) < 0) { + return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, FAILURE, + "End Time should be greater than start time"); + } + + if ((notificationItem.getIsForAllRoles() == "N") && notificationItem.getRoleIds().isEmpty()) { + return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, FAILURE, + "No Roles Ids Exist for the selected Roles"); + } + + Long creatorId = UserUtils.getUserIdAsLong(request); + notificationItem.setCreatorId(creatorId); + + // Front-end date picker does not accept a time value, so all + // values are the start of the chosen day in the local time zone. + // Move the end time value to the very end of the chosen day. + // Avoid Calendar.getDefault() which uses the server's locale. + Long endTime = notificationItem.getEndTime().getTime(); + endTime += (23 * 3600 + 59 * 60 + 59) * 1000; + notificationItem.getEndTime().setTime(endTime); + + try { + userNotificationService.saveNotification(notificationItem); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "saveNotification failed", e); + return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, FAILURE, e.getMessage()); + } + return new PortalRestResponse<>(PortalRestStatusEnum.OK, "SUCCESS", ""); + } + + @RequestMapping(value = { + "/portalApi/notificationUpdateRate" }, method = RequestMethod.GET, produces = "application/json") + public PortalRestResponse> getNotificationUpdateRate(HttpServletRequest request) { + try { + String updateRate = SystemProperties.getProperty(EPCommonSystemProperties.NOTIFICATION_UPDATE_RATE); + String updateDuration = SystemProperties.getProperty(EPCommonSystemProperties.NOTIFICATION_UPDATE_DURATION); + Integer rateInMiliSec = Integer.valueOf(updateRate) * 1000; + Integer durationInMiliSec = Integer.valueOf(updateDuration) * 1000; + Map results = new HashMap<>(); + results.put("updateRate", String.valueOf(rateInMiliSec)); + results.put("updateDuration", String.valueOf(durationInMiliSec)); + return new PortalRestResponse<>(PortalRestStatusEnum.OK, SUCCESS, results); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "getNotificationUpdateRate failed", e); + return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, e.toString(), null); + } + } + + @RequestMapping(value = { + "/portalApi/notificationRead" }, method = RequestMethod.GET, produces = "application/json") + public PortalRestResponse> notificationRead( + @RequestParam("notificationId") String notificationID, HttpServletRequest request) { + try { + userNotificationService.setNotificationRead(Long.parseLong(notificationID), UserUtils.getUserId(request)); + return new PortalRestResponse<>(PortalRestStatusEnum.OK, SUCCESS, null); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "notificationRead failed", e); + return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, e.toString(), null); + } + } + + @RequestMapping(value = { + "/portalApi/getNotificationHistory" }, method = RequestMethod.GET, produces = "application/json") + public List getNotificationHistory(HttpServletRequest request, HttpServletResponse response) { + EPUser user = EPUserUtils.getUserSession(request); + List notificationList = null; + notificationList = userNotificationService.getNotificationHistoryVO(user.getId()); + return notificationList; + } + + @RequestMapping(value = { "/portalApi/notificationRole/{notificationId}/roles" }, method = { + RequestMethod.GET }, produces = "application/json") + public List testGetRoles(HttpServletRequest request, @PathVariable("notificationId") Long notificationId) { + List notifRoles = userNotificationService.getNotificationRoles(notificationId); + ArrayList rolesList = new ArrayList<>(); + for (EpRoleNotificationItem notifRole : notifRoles) { + rolesList.add(notifRole.roleId); + } + return rolesList; + } + + @RequestMapping(value = { "/portalApi/getNotificationAppRoles" }, method = { + RequestMethod.GET }, produces = "application/json") + public List getNotificationAppRoles(HttpServletRequest request, HttpServletResponse response) { + List epAppRoleList = null; + try { + epAppRoleList = userNotificationService.getAppRoleList(); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, + "Exception occurred while performing UserNofiticationController.getNotificationAppRoles. Details: ", + e); + } + return epAppRoleList; + } + + @RequestMapping(value = { + "/portalApi/getMessageRecipients" }, method = RequestMethod.GET, produces = "application/json") + public List getMessageRecipients(@RequestParam("notificationId") Long notificationID) { + // EPUser user = EPUserUtils.getUserSession(request); + List messageUserRecipients = null; + messageUserRecipients = userNotificationService.getMessageRecipients(notificationID); + return messageUserRecipients; + } } diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/UserRolesController.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/UserRolesController.java index 0d665a98..852e2bb8 100644 --- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/UserRolesController.java +++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/UserRolesController.java @@ -33,7 +33,7 @@ * * ============LICENSE_END============================================ * - * + * */ package org.onap.portalapp.portal.controller; @@ -42,10 +42,8 @@ import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; - 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.EPRole; @@ -65,7 +63,6 @@ import org.onap.portalapp.portal.service.UserRolesService; import org.onap.portalapp.portal.transport.AppNameIdIsAdmin; import org.onap.portalapp.portal.transport.AppWithRolesForUser; import org.onap.portalapp.portal.transport.AppsListWithAdminRole; -import org.onap.portalapp.portal.transport.EpNotificationItem; import org.onap.portalapp.portal.transport.ExternalRequestFieldsValidator; import org.onap.portalapp.portal.transport.FieldsValidator; import org.onap.portalapp.portal.transport.RoleInAppForUser; @@ -82,7 +79,6 @@ import org.onap.portalsdk.core.util.SystemProperties; import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.EnableAspectJAutoProxy; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -96,481 +92,484 @@ import org.springframework.web.bind.annotation.RestController; @EPAuditLog public class UserRolesController extends EPRestrictedBaseController { - private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(UserRolesController.class); - - @Autowired - private SearchService searchService; - @Autowired - private AdminRolesService adminRolesService; - private @Autowired UserRolesService userRolesService; - @Autowired - private ApplicationsRestClientService applicationsRestClientService; - @Autowired - private AuditService auditService; - - private static final String FAILURE = "failure"; - - /** - * RESTful service method to fetch users in the WebPhone external service - * - * @param request - * HttpServletRequest - * @param searchString - * search string - * @param response - * HttpServletResponse - * @return array of found users as json - */ - @RequestMapping(value = { "/portalApi/queryUsers" }, method = RequestMethod.GET, produces = "application/json") - public String getPhoneBookSearchResult(HttpServletRequest request, @RequestParam("search") String searchString, - HttpServletResponse response) { - EPUser user = EPUserUtils.getUserSession(request); - String searchResult = null; - if (!adminRolesService.isSuperAdmin(user) && !adminRolesService.isAccountAdmin(user) && !adminRolesService.isRoleAdmin(user) ) { - EcompPortalUtils.setBadPermissions(user, response, "getPhoneBookSearchResult"); - } else { - searchString = searchString.trim(); - if (searchString.length() > 2) { - searchResult = searchService.searchUsersInPhoneBook(searchString); - } else { - logger.info(EELFLoggerDelegate.errorLogger, - "getPhoneBookSearchResult - too short search string: " + searchString); - } - } - EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/queryUsers", "result =", searchResult); - - return searchResult; - } - - /** - * RESTful service method to fetch applications where user is admin - * - * @param request - * HttpServletRequest - * @param orgUserId - * search string - * @param response - * HttpServletResponse - * @return for GET: array of all applications with boolean - * isAdmin=true/false for each application - */ - @RequestMapping(value = { "/portalApi/adminAppsRoles" }, method = { - RequestMethod.GET }, produces = "application/json") - public AppsListWithAdminRole getAppsWithAdminRoleStateForUser(HttpServletRequest request, - @RequestParam("user") String orgUserId, HttpServletResponse response) { - - EPUser user = EPUserUtils.getUserSession(request); - AppsListWithAdminRole result = null; - if (!adminRolesService.isSuperAdmin(user)) { - EcompPortalUtils.setBadPermissions(user, response, "getAppsWithAdminRoleStateForUser"); - } else { - if (EcompPortalUtils.legitimateUserId(orgUserId)) { - result = adminRolesService.getAppsWithAdminRoleStateForUser(orgUserId); - } else { - logger.info(EELFLoggerDelegate.errorLogger, - "getAppsWithAdminRoleStateForUser - parms error, no Organization User ID"); - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - } - } - - StringBuilder adminAppRoles = new StringBuilder(); - if(result != null){ - if ( result.appsRoles.size() >= 1) { - adminAppRoles.append("User '" + result.orgUserId + "' has admin role to the apps = {"); - for (AppNameIdIsAdmin adminAppRole : result.appsRoles) { - if (adminAppRole.isAdmin) { - adminAppRoles.append(adminAppRole.appName + ", "); - } - } - adminAppRoles.append("}."); - } else { - adminAppRoles.append("User '" + result.orgUserId + "' has no Apps with Admin Role."); - } - }else{ - logger.error(EELFLoggerDelegate.errorLogger, "putAppWithUserRoleStateForUser: getAppsWithAdminRoleStateForUser result is null"); - } - - logger.info(EELFLoggerDelegate.errorLogger, adminAppRoles.toString()); - - EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/adminAppsRoles", "get result =", result); - - return result; - } - - /** - * - * @param request - * HttpServletRequest - * @param newAppsListWithAdminRoles - * new apps - * @param response - * HttpServletResponse - * @return FieldsValidator - */ - @RequestMapping(value = { "/portalApi/adminAppsRoles" }, method = { - RequestMethod.PUT }, produces = "application/json") - public FieldsValidator putAppsWithAdminRoleStateForUser(HttpServletRequest request, - @RequestBody AppsListWithAdminRole newAppsListWithAdminRoles, HttpServletResponse response) { - - // newAppsListWithAdminRoles.appsRoles - FieldsValidator fieldsValidator = new FieldsValidator(); - StringBuilder newAppRoles = new StringBuilder(); - if(newAppsListWithAdminRoles != null ){ - if (newAppsListWithAdminRoles.appsRoles.size() >= 1) { - newAppRoles.append("User '" + newAppsListWithAdminRoles.orgUserId + "' has admin role to the apps = { "); - for (AppNameIdIsAdmin adminAppRole : newAppsListWithAdminRoles.appsRoles) { - if (adminAppRole.isAdmin) { - newAppRoles.append(adminAppRole.appName + " ,"); - } - } - newAppRoles.deleteCharAt(newAppRoles.length() - 1); - newAppRoles.append("}."); - } else { - newAppRoles.append("User '" + newAppsListWithAdminRoles.orgUserId + "' has no Apps with Admin Role."); - } - }else{ - logger.error(EELFLoggerDelegate.errorLogger, "putAppWithUserRoleStateForUser: putAppsWithAdminRoleStateForUser result is null"); - fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } - - logger.info(EELFLoggerDelegate.errorLogger, newAppRoles.toString()); - - EPUser user = EPUserUtils.getUserSession(request); - boolean changesApplied = false; - - if (!adminRolesService.isSuperAdmin(user)) { - EcompPortalUtils.setBadPermissions(user, response, "putAppsWithAdminRoleStateForUser"); - } else { - changesApplied = adminRolesService.setAppsWithAdminRoleStateForUser(newAppsListWithAdminRoles); - AuditLog auditLog = new AuditLog(); - auditLog.setUserId(user.getId()); - auditLog.setActivityCode(EcompAuditLog.CD_ACTIVITY_UPDATE_ACCOUNT_ADMIN); - auditLog.setAffectedRecordId(newAppsListWithAdminRoles.orgUserId); - auditLog.setComments(EcompPortalUtils.truncateString(newAppRoles.toString(), PortalConstants.AUDIT_LOG_COMMENT_SIZE)); - auditService.logActivity(auditLog, null); - - MDC.put(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP, EPEELFLoggerAdvice.getCurrentDateTimeUTC()); - MDC.put(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP, EPEELFLoggerAdvice.getCurrentDateTimeUTC()); - EcompPortalUtils.calculateDateTimeDifferenceForLog( - MDC.get(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP), - MDC.get(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP)); - logger.info(EELFLoggerDelegate.auditLogger, - EPLogUtil.formatAuditLogMessage("UserRolesController.putAppsWithAdminRoleStateForUser", - EcompAuditLog.CD_ACTIVITY_UPDATE_ACCOUNT_ADMIN, user.getOrgUserId(), - newAppsListWithAdminRoles.orgUserId, newAppRoles.toString())); - MDC.remove(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP); - MDC.remove(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP); - MDC.remove(SystemProperties.MDC_TIMER); - } - EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/adminAppsRoles", "put result =", changesApplied); - - return fieldsValidator; - } - - /** - * It returns a list of user app roles for single app - * - * @param request - * HttpServletRequest - * @param response - * HttpServletResponse - * @param orgUserId - * user ID - * @param appid - * application ID - * @param extRequestValue - * set to false if request is from users page otherwise true - * @return List - */ - @RequestMapping(value = { "/portalApi/userAppRoles" }, method = { - RequestMethod.GET }, produces = "application/json") - public List getAppRolesForUser(HttpServletRequest request, @RequestParam("user") String orgUserId, - @RequestParam("app") Long appid, @RequestParam("externalRequest") Boolean extRequestValue,@RequestParam("isSystemUser") Boolean isSystemUser, - HttpServletResponse response) { - EPUser user = EPUserUtils.getUserSession(request); - List result = null; - String feErrorString = ""; - if (!adminRolesService.isAccountAdmin(user) && !adminRolesService.isRoleAdmin(user) ) { - logger.debug(EELFLoggerDelegate.debugLogger, "getAppRolesForUser: Accountadminpermissioncheck {}, RoleAdmincheck {}", adminRolesService.isAccountAdmin(user) , adminRolesService.isRoleAdmin(user)); - EcompPortalUtils.setBadPermissions(user, response, "getAppRolesForUser"); - feErrorString = EcompPortalUtils.getFEErrorString(true, response.getStatus()); - } else { - if ((!isSystemUser && EcompPortalUtils.legitimateUserId(orgUserId)) || isSystemUser) { - result = userRolesService.getAppRolesForUser(appid, orgUserId, extRequestValue, user); - logger.debug(EELFLoggerDelegate.debugLogger, "getAppRolesForUser: result {}, appId {}", result , appid); - int responseCode = EcompPortalUtils.getExternalAppResponseCode(); - if (responseCode != 0 && responseCode != 200) { - // external error - response.setStatus(responseCode); - feErrorString = EcompPortalUtils.getFEErrorString(false, responseCode); - } else if (result == null) { - // If the result is null, there was an internal onap error - // in the service call. - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - feErrorString = EcompPortalUtils.getFEErrorString(true, - HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } - } else { - logger.info(EELFLoggerDelegate.errorLogger, "getAppRolesForUser - no Organization User ID"); - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - feErrorString = EcompPortalUtils.getFEErrorString(true, HttpServletResponse.SC_BAD_REQUEST); - } - } - - StringBuilder sbUserApps = new StringBuilder(); - if (result != null && result.size() >= 1) { - sbUserApps.append("User '" + orgUserId + "' has Roles={"); - for (RoleInAppForUser appRole : result) { - if (appRole.isApplied) { - sbUserApps.append(appRole.roleName + ", "); - } - } - sbUserApps.append("} assigned to the appId '" + appid + "'."); - } else { - // Not sure creating an empty object will make any difference - // but would like to give it a shot for defect #DE221057 - if (result == null) { - result = new ArrayList(); - } - sbUserApps.append("User '" + orgUserId + "' and appid " + appid + " has no roles"); - } - logger.info(EELFLoggerDelegate.errorLogger, sbUserApps.toString()); - - EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userAppRoles", "get result =", result); - if (feErrorString != "") { - logger.debug(EELFLoggerDelegate.debugLogger, "LR: FEErrorString to header: " + feErrorString); - - response.addHeader("FEErrorString", feErrorString); - response.addHeader("Access-Control-Expose-Headers", "FEErrorString"); - } - return result; - } - - @RequestMapping(value = { "/portalApi/userAppRoles" }, method = { - RequestMethod.PUT }, produces = "application/json") - public PortalRestResponse putAppWithUserRoleStateForUser(HttpServletRequest request, - @RequestBody AppWithRolesForUser newAppRolesForUser, HttpServletResponse response) { - //FieldsValidator fieldsValidator = new FieldsValidator(); - PortalRestResponse portalResponse = new PortalRestResponse<>(); - StringBuilder sbUserApps = new StringBuilder(); - if (newAppRolesForUser != null) { - sbUserApps.append("User '" + newAppRolesForUser.getOrgUserId()); - if (newAppRolesForUser.getAppId() != null && !newAppRolesForUser.getAppRoles().isEmpty()) { - sbUserApps.append("' has roles = { "); - for (RoleInAppForUser appRole : newAppRolesForUser.getAppRoles()) { - if (appRole.isApplied) { - sbUserApps.append(appRole.roleName + " ,"); - } - } - sbUserApps.deleteCharAt(sbUserApps.length() - 1); - sbUserApps.append("} assigned for the app " + newAppRolesForUser.getAppId()); - } else { - sbUserApps.append("' has no roles assigned for app " + newAppRolesForUser.getAppId()); - } - } - logger.info(EELFLoggerDelegate.applicationLogger, "putAppWithUserRoleStateForUser: {}", sbUserApps.toString()); - - EPUser user = EPUserUtils.getUserSession(request); - //boolean changesApplied = false; - ExternalRequestFieldsValidator changesApplied = null; - - if (!adminRolesService.isAccountAdmin(user) && !adminRolesService.isRoleAdmin(user) ) { - EcompPortalUtils.setBadPermissions(user, response, "putAppWithUserRoleStateForUser"); - } else if(newAppRolesForUser==null){ - logger.error(EELFLoggerDelegate.errorLogger, "putAppWithUserRoleStateForUser: newAppRolesForUser is null"); - } else{ - changesApplied= userRolesService.setAppWithUserRoleStateForUser(user, newAppRolesForUser); - try{ - if (changesApplied.isResult()) { - logger.info(EELFLoggerDelegate.applicationLogger, - "putAppWithUserRoleStateForUser: succeeded for app {}, user {}", newAppRolesForUser.getAppId(), - newAppRolesForUser.getAppId()); - - MDC.put(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP, EPEELFLoggerAdvice.getCurrentDateTimeUTC()); - AuditLog auditLog = new AuditLog(); - auditLog.setUserId(user.getId()); - auditLog.setActivityCode(EcompAuditLog.CD_ACTIVITY_UPDATE_USER); - auditLog.setAffectedRecordId(newAppRolesForUser.getOrgUserId()); - auditLog.setComments(EcompPortalUtils.truncateString(sbUserApps.toString(), PortalConstants.AUDIT_LOG_COMMENT_SIZE)); - auditService.logActivity(auditLog, null); - - MDC.put(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP, EPEELFLoggerAdvice.getCurrentDateTimeUTC()); - EcompPortalUtils.calculateDateTimeDifferenceForLog( - MDC.get(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP), - MDC.get(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP)); - logger.info(EELFLoggerDelegate.auditLogger, - EPLogUtil.formatAuditLogMessage("UserRolesController.putAppWithUserRoleStateForUser", - EcompAuditLog.CD_ACTIVITY_UPDATE_USER, user.getOrgUserId(), - newAppRolesForUser.getOrgUserId(), sbUserApps.toString())); - MDC.remove(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP); - MDC.remove(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP); - MDC.remove(SystemProperties.MDC_TIMER); - portalResponse = new PortalRestResponse<>(PortalRestStatusEnum.OK,"success",null); - - } - if (!changesApplied.isResult()) - throw new Exception(changesApplied.getDetailMessage()); - - }catch (Exception e){ - logger.error(EELFLoggerDelegate.errorLogger, - "putAppWithUserRoleStateForUser: failed for app {}, user {}", newAppRolesForUser.getAppId(), - newAppRolesForUser.getOrgUserId()); - portalResponse = new PortalRestResponse<>(PortalRestStatusEnum.ERROR, e.getMessage(), null); - } - } - - EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userAppRoles", "put result =", changesApplied); - return portalResponse; - } - - - @RequestMapping(value = { "/portalApi/updateRemoteUserProfile" }, method = { - RequestMethod.GET }, produces = "application/json") - public PortalRestResponse updateRemoteUserProfile(HttpServletRequest request, - HttpServletResponse response) { - - String updateRemoteUserFlag = FAILURE; - try { - // saveNewUser = userService.saveNewUser(newUser); - String orgUserId = request.getParameter("loginId"); - Long appId = Long.parseLong(request.getParameter("appId")); - userRolesService.updateRemoteUserProfile(orgUserId, appId); - - } catch (Exception e) { - return new PortalRestResponse(PortalRestStatusEnum.OK, updateRemoteUserFlag, e.getMessage()); - } - return new PortalRestResponse(PortalRestStatusEnum.ERROR, updateRemoteUserFlag, ""); - - } - - @RequestMapping(value = { "/portalApi/app/{appId}/users" }, method = { - RequestMethod.GET }, produces = "application/json") - public List getUsersFromAppEndpoint(HttpServletRequest request, - @PathVariable("appId") Long appId) throws HTTPException { - try { - logger.debug(EELFLoggerDelegate.debugLogger, "/portalApi/app/{}/users was invoked", appId); - List appUsers = userRolesService.getUsersFromAppEndpoint(appId); - return appUsers; - } catch (Exception e) { - logger.error(EELFLoggerDelegate.errorLogger, "getUsersFromAppEndpoint failed", e); - return new ArrayList(); - } - } - - @RequestMapping(value = { "/portalApi/app/{appId}/roles" }, method = { - RequestMethod.GET }, produces = "application/json") - public List testGetRoles(HttpServletRequest request, @PathVariable("appId") Long appId) - throws HTTPException { - EcompRole[] appRoles = applicationsRestClientService.get(EcompRole[].class, appId, "/roles"); - List rolesList = Arrays.asList(appRoles); - EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/app/{appId}/roles", "response for appId=" + appId, - rolesList); - - return rolesList; - } - - @RequestMapping(value = { "/portalApi/admin/import/app/{appId}/roles" }, method = { - RequestMethod.GET }, produces = "application/json") - public List importRolesFromRemoteApplication(HttpServletRequest request, @PathVariable("appId") Long appId) - throws HTTPException { - List rolesList = userRolesService.importRolesFromRemoteApplication(appId); - EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/admin/import/app/{appId}/roles", - "response for appId=" + appId, rolesList); - - return rolesList; - } - - @RequestMapping(value = { "/portalApi/app/{appId}/user/{orgUserId}/roles" }, method = { - RequestMethod.GET }, produces = "application/json") - public EcompRole testGetRoles(HttpServletRequest request, @PathVariable("appId") Long appId, - @PathVariable("orgUserId") String orgUserId) throws Exception { - if (!EcompPortalUtils.legitimateUserId(orgUserId)) { - String msg = "Error /user//roles not legitimate orgUserId = " + orgUserId; - logger.error(EELFLoggerDelegate.errorLogger, msg); - throw new Exception(msg); - } - EcompRole[] roles = applicationsRestClientService.get(EcompRole[].class, appId, - String.format("/user/%s/roles", orgUserId)); - if (roles.length != 1) { - String msg = "Error /user//roles returned array. expected size 1 recieved size = " + roles.length; - logger.error(EELFLoggerDelegate.errorLogger, msg); - throw new Exception(msg); - } - - EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/app/{appId}/user/{orgUserId}/roles", - "response for appId='" + appId + "' and orgUserId='" + orgUserId + "'", roles[0]); - return roles[0]; - } - - @RequestMapping(value = { "/portalApi/saveUserAppRoles" }, method = { - RequestMethod.PUT }, produces = "application/json") - public FieldsValidator putAppWithUserRoleRequest(HttpServletRequest request, - @RequestBody AppWithRolesForUser newAppRolesForUser, HttpServletResponse response) { - FieldsValidator fieldsValidator = null; - try { - - EPUser user = EPUserUtils.getUserSession(request); - fieldsValidator = userRolesService.putUserAppRolesRequest(newAppRolesForUser, user); - response.setStatus(fieldsValidator.httpStatusCode.intValue()); - - } catch (Exception e) { - logger.error(EELFLoggerDelegate.errorLogger, "putAppWithUserRoleRequest failed", e); - - } - // return fieldsValidator; - EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/saveUserAppRoles", "PUT result =", - response.getStatus()); - return fieldsValidator; - } - - @RequestMapping(value = { "/portalApi/appCatalogRoles" }, method = { - RequestMethod.GET }, produces = "application/json") - public List getUserAppCatalogRoles(HttpServletRequest request, - @RequestParam("appName") String appName) { - EPUser user = EPUserUtils.getUserSession(request); - List userAppRoleList = null; - try { - userAppRoleList = userRolesService.getUserAppCatalogRoles(user, appName); - } catch (Exception e) { - logger.error(EELFLoggerDelegate.errorLogger, "putUserWidgetsSortPref failed", e); - - } - Collections.sort(userAppRoleList, getUserAppCatalogRolesComparator); - EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userApplicationRoles", "result =", userAppRoleList); - - return userAppRoleList; - - } - - private Comparator getUserAppCatalogRolesComparator = new Comparator() { - public int compare(EPUserAppCatalogRoles o1, EPUserAppCatalogRoles o2) { - return o1.getRolename().compareTo(o2.getRolename()); - } - }; - - @RequestMapping(value = "/portalApi/externalRequestAccessSystem", method = RequestMethod.GET, produces = "application/json") - public ExternalSystemAccess readExternalRequestAccess(HttpServletRequest request) { - ExternalSystemAccess result = null; - try { - result = userRolesService.getExternalRequestAccess(); - EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/externalRequestAccessSystem", "GET result =", - result); - } catch (Exception e) { - logger.error(EELFLoggerDelegate.errorLogger, "readExternalRequestAccess failed: " + e.getMessage()); - } - return result; - } - - @RequestMapping(value = { "/portalApi/checkIfUserIsSuperAdmin" }, method = RequestMethod.GET, produces = "application/json") - public boolean checkIfUserIsSuperAdmin(HttpServletRequest request, - HttpServletResponse response) { - EPUser user = EPUserUtils.getUserSession(request); - boolean isSuperAdmin = false; - try { - isSuperAdmin = adminRolesService.isSuperAdmin(user) ; - } catch (Exception e) { - logger.error(EELFLoggerDelegate.errorLogger, "checkIfUserIsSuperAdmin failed: " + e.getMessage()); - } - return isSuperAdmin; - } + private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(UserRolesController.class); + + @Autowired + private SearchService searchService; + @Autowired + private AdminRolesService adminRolesService; + private @Autowired UserRolesService userRolesService; + @Autowired + private ApplicationsRestClientService applicationsRestClientService; + @Autowired + private AuditService auditService; + + private static final String FAILURE = "failure"; + + /** + * RESTful service method to fetch users in the WebPhone external service + * + * @param request HttpServletRequest + * @param searchString search string + * @param response HttpServletResponse + * @return array of found users as json + */ + @RequestMapping(value = { "/portalApi/queryUsers" }, method = RequestMethod.GET, produces = "application/json") + public String getPhoneBookSearchResult(HttpServletRequest request, @RequestParam("search") String searchString, + HttpServletResponse response) { + EPUser user = EPUserUtils.getUserSession(request); + String searchResult = null; + if (!adminRolesService.isSuperAdmin(user) && !adminRolesService.isAccountAdmin(user) + && !adminRolesService.isRoleAdmin(user)) { + EcompPortalUtils.setBadPermissions(user, response, "getPhoneBookSearchResult"); + } else { + searchString = searchString.trim(); + if (searchString.length() > 2) { + searchResult = searchService.searchUsersInPhoneBook(searchString); + } else { + logger.info(EELFLoggerDelegate.errorLogger, + "getPhoneBookSearchResult - too short search string: " + searchString); + } + } + EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/queryUsers", "result =", searchResult); + + return searchResult; + } + + /** + * RESTful service method to fetch applications where user is admin + * + * @param request HttpServletRequest + * @param orgUserId search string + * @param response HttpServletResponse + * @return for GET: array of all applications with boolean isAdmin=true/false for each application + */ + @RequestMapping(value = { "/portalApi/adminAppsRoles" }, method = { + RequestMethod.GET }, produces = "application/json") + public AppsListWithAdminRole getAppsWithAdminRoleStateForUser(HttpServletRequest request, + @RequestParam("user") String orgUserId, HttpServletResponse response) { + + EPUser user = EPUserUtils.getUserSession(request); + AppsListWithAdminRole result = null; + if (!adminRolesService.isSuperAdmin(user)) { + EcompPortalUtils.setBadPermissions(user, response, "getAppsWithAdminRoleStateForUser"); + } else { + if (EcompPortalUtils.legitimateUserId(orgUserId)) { + result = adminRolesService.getAppsWithAdminRoleStateForUser(orgUserId); + } else { + logger.info(EELFLoggerDelegate.errorLogger, + "getAppsWithAdminRoleStateForUser - parms error, no Organization User ID"); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + } + } + + StringBuilder adminAppRoles = new StringBuilder(); + if (result != null) { + if (!result.appsRoles.isEmpty()) { + adminAppRoles.append("User '" + result.orgUserId + "' has admin role to the apps = {"); + for (AppNameIdIsAdmin adminAppRole : result.appsRoles) { + if (adminAppRole.isAdmin) { + adminAppRoles.append(adminAppRole.appName + ", "); + } + } + adminAppRoles.append("}."); + } else { + adminAppRoles.append("User '" + result.orgUserId + "' has no Apps with Admin Role."); + } + } else { + logger.error(EELFLoggerDelegate.errorLogger, + "putAppWithUserRoleStateForUser: getAppsWithAdminRoleStateForUser result is null"); + } + + logger.info(EELFLoggerDelegate.errorLogger, adminAppRoles.toString()); + + EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/adminAppsRoles", "get result =", result); + + return result; + } + + /** + * + * @param request HttpServletRequest + * @param newAppsListWithAdminRoles new apps + * @param response HttpServletResponse + * @return FieldsValidator + */ + @RequestMapping(value = { "/portalApi/adminAppsRoles" }, method = { + RequestMethod.PUT }, produces = "application/json") + public FieldsValidator putAppsWithAdminRoleStateForUser(HttpServletRequest request, + @RequestBody AppsListWithAdminRole newAppsListWithAdminRoles, HttpServletResponse response) { + + // newAppsListWithAdminRoles.appsRoles + FieldsValidator fieldsValidator = new FieldsValidator(); + StringBuilder newAppRoles = new StringBuilder(); + if (newAppsListWithAdminRoles != null) { + if (!newAppsListWithAdminRoles.appsRoles.isEmpty()) { + newAppRoles + .append("User '" + newAppsListWithAdminRoles.orgUserId + "' has admin role to the apps = { "); + for (AppNameIdIsAdmin adminAppRole : newAppsListWithAdminRoles.appsRoles) { + if (adminAppRole.isAdmin) { + newAppRoles.append(adminAppRole.appName + " ,"); + } + } + newAppRoles.deleteCharAt(newAppRoles.length() - 1); + newAppRoles.append("}."); + } else { + newAppRoles.append("User '" + newAppsListWithAdminRoles.orgUserId + "' has no Apps with Admin Role."); + } + } else { + logger.error(EELFLoggerDelegate.errorLogger, + "putAppWithUserRoleStateForUser: putAppsWithAdminRoleStateForUser result is null"); + fieldsValidator.httpStatusCode = (long) HttpServletResponse.SC_INTERNAL_SERVER_ERROR; + } + + logger.info(EELFLoggerDelegate.errorLogger, newAppRoles.toString()); + + EPUser user = EPUserUtils.getUserSession(request); + boolean changesApplied = false; + + if (!adminRolesService.isSuperAdmin(user)) { + EcompPortalUtils.setBadPermissions(user, response, "putAppsWithAdminRoleStateForUser"); + } else { + changesApplied = adminRolesService.setAppsWithAdminRoleStateForUser(newAppsListWithAdminRoles); + AuditLog auditLog = new AuditLog(); + auditLog.setUserId(user.getId()); + auditLog.setActivityCode(EcompAuditLog.CD_ACTIVITY_UPDATE_ACCOUNT_ADMIN); + if (newAppsListWithAdminRoles != null) { + auditLog.setAffectedRecordId(newAppsListWithAdminRoles.orgUserId); + } + auditLog.setComments( + EcompPortalUtils.truncateString(newAppRoles.toString(), PortalConstants.AUDIT_LOG_COMMENT_SIZE)); + auditService.logActivity(auditLog, null); + + MDC.put(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP, EPEELFLoggerAdvice.getCurrentDateTimeUTC()); + MDC.put(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP, EPEELFLoggerAdvice.getCurrentDateTimeUTC()); + EcompPortalUtils.calculateDateTimeDifferenceForLog( + MDC.get(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP), + MDC.get(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP)); + if (newAppsListWithAdminRoles != null) { + logger.info(EELFLoggerDelegate.auditLogger, + EPLogUtil.formatAuditLogMessage("UserRolesController.putAppsWithAdminRoleStateForUser", + EcompAuditLog.CD_ACTIVITY_UPDATE_ACCOUNT_ADMIN, user.getOrgUserId(), + newAppsListWithAdminRoles.orgUserId, newAppRoles.toString())); + } + MDC.remove(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP); + MDC.remove(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP); + MDC.remove(SystemProperties.MDC_TIMER); + } + EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/adminAppsRoles", "put result =", changesApplied); + + return fieldsValidator; + } + + /** + * It returns a list of user app roles for single app + * + * @param request HttpServletRequest + * @param response HttpServletResponse + * @param orgUserId user ID + * @param appid application ID + * @param extRequestValue set to false if request is from users page otherwise true + * @return List + */ + @RequestMapping(value = { "/portalApi/userAppRoles" }, method = { + RequestMethod.GET }, produces = "application/json") + public List getAppRolesForUser(HttpServletRequest request, @RequestParam("user") String orgUserId, + @RequestParam("app") Long appid, @RequestParam("externalRequest") Boolean extRequestValue, + @RequestParam("isSystemUser") Boolean isSystemUser, + HttpServletResponse response) { + EPUser user = EPUserUtils.getUserSession(request); + List result = null; + String feErrorString = ""; + if (!adminRolesService.isAccountAdmin(user) && !adminRolesService.isRoleAdmin(user)) { + logger.debug(EELFLoggerDelegate.debugLogger, + "getAppRolesForUser: Accountadminpermissioncheck {}, RoleAdmincheck {}", + adminRolesService.isAccountAdmin(user), adminRolesService.isRoleAdmin(user)); + EcompPortalUtils.setBadPermissions(user, response, "getAppRolesForUser"); + feErrorString = EcompPortalUtils.getFEErrorString(true, response.getStatus()); + } else { + if ((!isSystemUser && EcompPortalUtils.legitimateUserId(orgUserId)) || isSystemUser) { + result = userRolesService.getAppRolesForUser(appid, orgUserId, extRequestValue, user); + logger.debug(EELFLoggerDelegate.debugLogger, "getAppRolesForUser: result {}, appId {}", result, appid); + int responseCode = EcompPortalUtils.getExternalAppResponseCode(); + if (responseCode != 0 && responseCode != 200) { + // external error + response.setStatus(responseCode); + feErrorString = EcompPortalUtils.getFEErrorString(false, responseCode); + } else if (result == null) { + // If the result is null, there was an internal onap error + // in the service call. + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + feErrorString = EcompPortalUtils.getFEErrorString(true, + HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + } + } else { + logger.info(EELFLoggerDelegate.errorLogger, "getAppRolesForUser - no Organization User ID"); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + feErrorString = EcompPortalUtils.getFEErrorString(true, HttpServletResponse.SC_BAD_REQUEST); + } + } + + StringBuilder sbUserApps = new StringBuilder(); + if (result != null && !result.isEmpty()) { + sbUserApps.append("User '" + orgUserId + "' has Roles={"); + for (RoleInAppForUser appRole : result) { + if (appRole.isApplied) { + sbUserApps.append(appRole.roleName + ", "); + } + } + sbUserApps.append("} assigned to the appId '" + appid + "'."); + } else { + // Not sure creating an empty object will make any difference + // but would like to give it a shot for defect #DE221057 + if (result == null) { + result = new ArrayList<>(); + } + sbUserApps.append("User '" + orgUserId + "' and appid " + appid + " has no roles"); + } + logger.info(EELFLoggerDelegate.errorLogger, sbUserApps.toString()); + + EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userAppRoles", "get result =", result); + if (feErrorString != "") { + logger.debug(EELFLoggerDelegate.debugLogger, "LR: FEErrorString to header: " + feErrorString); + + response.addHeader("FEErrorString", feErrorString); + response.addHeader("Access-Control-Expose-Headers", "FEErrorString"); + } + return result; + } + + @RequestMapping(value = { "/portalApi/userAppRoles" }, method = { + RequestMethod.PUT }, produces = "application/json") + public PortalRestResponse putAppWithUserRoleStateForUser(HttpServletRequest request, + @RequestBody AppWithRolesForUser newAppRolesForUser, HttpServletResponse response) { + // FieldsValidator fieldsValidator = new FieldsValidator(); + PortalRestResponse portalResponse = new PortalRestResponse<>(); + StringBuilder sbUserApps = new StringBuilder(); + if (newAppRolesForUser != null) { + sbUserApps.append("User '" + newAppRolesForUser.getOrgUserId()); + if (newAppRolesForUser.getAppId() != null && !newAppRolesForUser.getAppRoles().isEmpty()) { + sbUserApps.append("' has roles = { "); + for (RoleInAppForUser appRole : newAppRolesForUser.getAppRoles()) { + if (appRole.isApplied) { + sbUserApps.append(appRole.roleName + " ,"); + } + } + sbUserApps.deleteCharAt(sbUserApps.length() - 1); + sbUserApps.append("} assigned for the app " + newAppRolesForUser.getAppId()); + } else { + sbUserApps.append("' has no roles assigned for app " + newAppRolesForUser.getAppId()); + } + } + logger.info(EELFLoggerDelegate.applicationLogger, "putAppWithUserRoleStateForUser: {}", sbUserApps.toString()); + + EPUser user = EPUserUtils.getUserSession(request); + // boolean changesApplied = false; + ExternalRequestFieldsValidator changesApplied = null; + + if (!adminRolesService.isAccountAdmin(user) && !adminRolesService.isRoleAdmin(user)) { + EcompPortalUtils.setBadPermissions(user, response, "putAppWithUserRoleStateForUser"); + } else if (newAppRolesForUser == null) { + logger.error(EELFLoggerDelegate.errorLogger, "putAppWithUserRoleStateForUser: newAppRolesForUser is null"); + } else { + changesApplied = userRolesService.setAppWithUserRoleStateForUser(user, newAppRolesForUser); + try { + if (changesApplied.isResult()) { + logger.info(EELFLoggerDelegate.applicationLogger, + "putAppWithUserRoleStateForUser: succeeded for app {}, user {}", + newAppRolesForUser.getAppId(), + newAppRolesForUser.getAppId()); + + MDC.put(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP, + EPEELFLoggerAdvice.getCurrentDateTimeUTC()); + AuditLog auditLog = new AuditLog(); + auditLog.setUserId(user.getId()); + auditLog.setActivityCode(EcompAuditLog.CD_ACTIVITY_UPDATE_USER); + auditLog.setAffectedRecordId(newAppRolesForUser.getOrgUserId()); + auditLog.setComments(EcompPortalUtils.truncateString(sbUserApps.toString(), + PortalConstants.AUDIT_LOG_COMMENT_SIZE)); + auditService.logActivity(auditLog, null); + + MDC.put(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP, + EPEELFLoggerAdvice.getCurrentDateTimeUTC()); + EcompPortalUtils.calculateDateTimeDifferenceForLog( + MDC.get(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP), + MDC.get(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP)); + logger.info(EELFLoggerDelegate.auditLogger, + EPLogUtil.formatAuditLogMessage("UserRolesController.putAppWithUserRoleStateForUser", + EcompAuditLog.CD_ACTIVITY_UPDATE_USER, user.getOrgUserId(), + newAppRolesForUser.getOrgUserId(), sbUserApps.toString())); + MDC.remove(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP); + MDC.remove(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP); + MDC.remove(SystemProperties.MDC_TIMER); + portalResponse = new PortalRestResponse<>(PortalRestStatusEnum.OK, "success", null); + + } + if (!changesApplied.isResult()) + throw new Exception(changesApplied.getDetailMessage()); + + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, + "putAppWithUserRoleStateForUser: failed for app {}, user {}", newAppRolesForUser.getAppId(), + newAppRolesForUser.getOrgUserId(), e); + portalResponse = new PortalRestResponse<>(PortalRestStatusEnum.ERROR, e.getMessage(), null); + } + } + + EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userAppRoles", "put result =", changesApplied); + return portalResponse; + } + + @RequestMapping(value = { "/portalApi/updateRemoteUserProfile" }, method = { + RequestMethod.GET }, produces = "application/json") + public PortalRestResponse updateRemoteUserProfile(HttpServletRequest request, + HttpServletResponse response) { + + String updateRemoteUserFlag = FAILURE; + try { + // saveNewUser = userService.saveNewUser(newUser); + String orgUserId = request.getParameter("loginId"); + Long appId = Long.parseLong(request.getParameter("appId")); + userRolesService.updateRemoteUserProfile(orgUserId, appId); + + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "updateRemoteUserProfile failed", e); + return new PortalRestResponse<>(PortalRestStatusEnum.OK, updateRemoteUserFlag, e.getMessage()); + } + return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, updateRemoteUserFlag, ""); + + } + + @RequestMapping(value = { "/portalApi/app/{appId}/users" }, method = { + RequestMethod.GET }, produces = "application/json") + public List getUsersFromAppEndpoint(HttpServletRequest request, + @PathVariable("appId") Long appId) throws HTTPException { + try { + logger.debug(EELFLoggerDelegate.debugLogger, "/portalApi/app/{}/users was invoked", appId); + return userRolesService.getUsersFromAppEndpoint(appId); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "getUsersFromAppEndpoint failed", e); + return new ArrayList<>(); + } + } + + @RequestMapping(value = { "/portalApi/app/{appId}/roles" }, method = { + RequestMethod.GET }, produces = "application/json") + public List testGetRoles(HttpServletRequest request, @PathVariable("appId") Long appId) + throws HTTPException { + EcompRole[] appRoles = applicationsRestClientService.get(EcompRole[].class, appId, "/roles"); + List rolesList = Arrays.asList(appRoles); + EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/app/{appId}/roles", "response for appId=" + appId, + rolesList); + + return rolesList; + } + + @RequestMapping(value = { "/portalApi/admin/import/app/{appId}/roles" }, method = { + RequestMethod.GET }, produces = "application/json") + public List importRolesFromRemoteApplication(HttpServletRequest request, @PathVariable("appId") Long appId) + throws HTTPException { + List rolesList = userRolesService.importRolesFromRemoteApplication(appId); + EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/admin/import/app/{appId}/roles", + "response for appId=" + appId, rolesList); + + return rolesList; + } + + @RequestMapping(value = { "/portalApi/app/{appId}/user/{orgUserId}/roles" }, method = { + RequestMethod.GET }, produces = "application/json") + public EcompRole testGetRoles(HttpServletRequest request, @PathVariable("appId") Long appId, + @PathVariable("orgUserId") String orgUserId) throws Exception { + if (!EcompPortalUtils.legitimateUserId(orgUserId)) { + String msg = "Error /user//roles not legitimate orgUserId = " + orgUserId; + logger.error(EELFLoggerDelegate.errorLogger, msg); + throw new Exception(msg); + } + EcompRole[] roles = applicationsRestClientService.get(EcompRole[].class, appId, + String.format("/user/%s/roles", orgUserId)); + if (roles.length != 1) { + String msg = "Error /user//roles returned array. expected size 1 recieved size = " + roles.length; + logger.error(EELFLoggerDelegate.errorLogger, msg); + throw new Exception(msg); + } + + EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/app/{appId}/user/{orgUserId}/roles", + "response for appId='" + appId + "' and orgUserId='" + orgUserId + "'", roles[0]); + return roles[0]; + } + + @RequestMapping(value = { "/portalApi/saveUserAppRoles" }, method = { + RequestMethod.PUT }, produces = "application/json") + public FieldsValidator putAppWithUserRoleRequest(HttpServletRequest request, + @RequestBody AppWithRolesForUser newAppRolesForUser, HttpServletResponse response) { + FieldsValidator fieldsValidator = null; + try { + + EPUser user = EPUserUtils.getUserSession(request); + fieldsValidator = userRolesService.putUserAppRolesRequest(newAppRolesForUser, user); + response.setStatus(fieldsValidator.httpStatusCode.intValue()); + + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "putAppWithUserRoleRequest failed", e); + + } + // return fieldsValidator; + EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/saveUserAppRoles", "PUT result =", + response.getStatus()); + return fieldsValidator; + } + + @RequestMapping(value = { "/portalApi/appCatalogRoles" }, method = { + RequestMethod.GET }, produces = "application/json") + public List getUserAppCatalogRoles(HttpServletRequest request, + @RequestParam("appName") String appName) { + EPUser user = EPUserUtils.getUserSession(request); + List userAppRoleList = null; + try { + userAppRoleList = userRolesService.getUserAppCatalogRoles(user, appName); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "putUserWidgetsSortPref failed", e); + + } + Collections.sort(userAppRoleList, getUserAppCatalogRolesComparator); + EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userApplicationRoles", "result =", userAppRoleList); + + return userAppRoleList; + + } + + private Comparator getUserAppCatalogRolesComparator = + new Comparator() { + public int compare(EPUserAppCatalogRoles o1, EPUserAppCatalogRoles o2) { + return o1.getRolename().compareTo(o2.getRolename()); + } + }; + + @RequestMapping(value = "/portalApi/externalRequestAccessSystem", method = RequestMethod.GET, + produces = "application/json") + public ExternalSystemAccess readExternalRequestAccess(HttpServletRequest request) { + ExternalSystemAccess result = null; + try { + result = userRolesService.getExternalRequestAccess(); + EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/externalRequestAccessSystem", "GET result =", + result); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "readExternalRequestAccess failed: " + e.getMessage()); + } + return result; + } + + @RequestMapping(value = { "/portalApi/checkIfUserIsSuperAdmin" }, method = RequestMethod.GET, + produces = "application/json") + public boolean checkIfUserIsSuperAdmin(HttpServletRequest request, + HttpServletResponse response) { + EPUser user = EPUserUtils.getUserSession(request); + boolean isSuperAdmin = false; + try { + isSuperAdmin = adminRolesService.isSuperAdmin(user); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "checkIfUserIsSuperAdmin failed: " + e.getMessage()); + } + return isSuperAdmin; + } }