X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=portal-BE%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fportal%2Fcontroller%2FWidgetsController.java;h=6a92fbc373066b519b2b496aa7c99fc65064d5da;hb=ffd9af970318c1f5a0bad46d7aad5d4611414aae;hp=7b4bbea0233193aa8cabe0c0e15f2a366a733a21;hpb=cb3f6ffee6dd5a9a15a6962065a313cc1f97b7c1;p=portal.git diff --git a/portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java b/portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java index 7b4bbea0..6a92fbc3 100644 --- a/portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java +++ b/portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java @@ -40,56 +40,161 @@ package org.onap.portal.controller; +import java.io.IOException; import java.security.Principal; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.onap.portal.domain.db.fn.FnUser; +import org.onap.portal.domain.dto.transport.FieldsValidator; import org.onap.portal.domain.dto.transport.OnboardingWidget; +import org.onap.portal.domain.dto.transport.WidgetCatalogPersonalization; +import org.onap.portal.logging.aop.EPAuditLog; +import org.onap.portal.service.AdminRolesService; +import org.onap.portal.service.PersUserWidgetService; import org.onap.portal.service.WidgetService; import org.onap.portal.service.fn.FnUserService; import org.onap.portal.utils.EcompPortalUtils; +import org.onap.portal.validation.DataValidator; import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.http.MediaType; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +@EPAuditLog @RestController -@Configuration @EnableAspectJAutoProxy public class WidgetsController { + private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WidgetsController.class); private final FnUserService fnUserService; private final WidgetService widgetService; + private final PersUserWidgetService persUserWidgetService; @Autowired - public WidgetsController(FnUserService fnUserService, WidgetService widgetService) { + public WidgetsController(final FnUserService fnUserService, final WidgetService widgetService, + final PersUserWidgetService persUserWidgetService) { this.fnUserService = fnUserService; this.widgetService = widgetService; + this.persUserWidgetService = persUserWidgetService; } - @RequestMapping(value = { "/portalApi/widgets" }, method = RequestMethod.GET, produces = "application/json") - public List getOnboardingWidgets(Principal principal, HttpServletRequest request, HttpServletResponse response) { + @GetMapping(value = {"/portalApi/widgets"}, produces = MediaType.APPLICATION_JSON_VALUE) + public List getOnboardingWidgets(Principal principal, HttpServletRequest request, + HttpServletResponse response) { FnUser user = fnUserService.loadUserByUsername(principal.getName()); List onboardingWidgets = null; - - if (user == null || user.isGuest()) { + if (user.getGuest()) { EcompPortalUtils.setBadPermissions(user, response, "getOnboardingWidgets"); } else { String getType = request.getHeader("X-Widgets-Type"); if (!getType.isEmpty() && ("managed".equals(getType) || "all".equals(getType))) { onboardingWidgets = widgetService.getOnboardingWidgets(user, "managed".equals(getType)); } else { - logger.debug(EELFLoggerDelegate.debugLogger, "WidgetsController.getOnboardingApps - request must contain header 'X-Widgets-Type' with 'all' or 'managed'"); + logger.debug(EELFLoggerDelegate.debugLogger, + "WidgetsController.getOnboardingApps - request must contain header 'X-Widgets-Type' with 'all' or 'managed'"); response.setStatus(HttpServletResponse.SC_BAD_REQUEST); } } - EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/widgets", "GET result =", response.getStatus()); + EcompPortalUtils + .logAndSerializeObject(logger, "/portalApi/widgets", "GET result =", response.getStatus()); return onboardingWidgets; } + + @PutMapping(value = {"/portalApi/widgets/{widgetId}"}, produces = MediaType.APPLICATION_JSON_VALUE) + @PreAuthorize("hasRole('System_Administrator')") + public FieldsValidator putOnboardingWidget(Principal principal, @PathVariable("widgetId") Long widgetId, + @RequestBody OnboardingWidget onboardingWidget, HttpServletResponse response) { + FnUser user = fnUserService.loadUserByUsername(principal.getName()); + FieldsValidator fieldsValidator = null; + + assert onboardingWidget != null; + onboardingWidget.setId(widgetId); + onboardingWidget.normalize(); + try { + fieldsValidator = widgetService.setOnboardingWidget(user.getId(), onboardingWidget); + response.setStatus(fieldsValidator.getHttpStatusCode().intValue()); + } catch (IllegalArgumentException e) { + fieldsValidator = new FieldsValidator(); + fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_NOT_ACCEPTABLE); + fieldsValidator.addProblematicFieldName(e.getMessage()); + return fieldsValidator; + } + + EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/widgets/" + widgetId, "GET result =", + response.getStatus()); + + return fieldsValidator; + } + + @PostMapping(value = {"/portalApi/widgets"}, produces = MediaType.APPLICATION_JSON_VALUE) + @PreAuthorize("hasRole('System_Administrator') and hasRole('Account_Administrator')") + public FieldsValidator postOnboardingWidget(Principal principal, HttpServletResponse response, + @RequestBody OnboardingWidget onboardingWidget) { + FnUser user = fnUserService.loadUserByUsername(principal.getName()); + FieldsValidator fieldsValidator; + + onboardingWidget.setId(null); + onboardingWidget.normalize(); + + try { + fieldsValidator = widgetService.setOnboardingWidget(user.getId(), onboardingWidget); + } catch (IllegalArgumentException e) { + fieldsValidator = new FieldsValidator(); + fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_NOT_ACCEPTABLE); + fieldsValidator.addProblematicFieldName(e.getMessage()); + return fieldsValidator; + } + response.setStatus(fieldsValidator.getHttpStatusCode().intValue()); + + EcompPortalUtils + .logAndSerializeObject(logger, "/portalApi/widgets", "POST result =", response.getStatus()); + return fieldsValidator; + } + + @DeleteMapping(value = {"/portalApi/widgets/{widgetId}"}, produces = MediaType.APPLICATION_JSON_VALUE) + @PreAuthorize("hasRole('System_Administrator') and hasRole('Account_Administrator')") + public FieldsValidator deleteOnboardingWidget(Principal principal, HttpServletResponse response, + @PathVariable("widgetId") Long widgetId) { + FnUser user = fnUserService.loadUserByUsername(principal.getName()); + FieldsValidator fieldsValidator; + + fieldsValidator = widgetService.deleteOnboardingWidget(user, widgetId); + response.setStatus(fieldsValidator.getHttpStatusCode().intValue()); + + EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/widgets/" + widgetId, "DELETE result =", + response.getStatus()); + return fieldsValidator; + } + + @PutMapping(value = {"portalApi/widgetCatalogSelection"}, produces = MediaType.APPLICATION_JSON_VALUE) + public FieldsValidator putWidgetCatalogSelection(Principal principal, + @RequestBody WidgetCatalogPersonalization persRequest, HttpServletResponse response) throws IOException { + FieldsValidator result = new FieldsValidator(); + FnUser user = fnUserService.loadUserByUsername(principal.getName()); + + try { + assert persRequest != null; + persUserWidgetService + .setPersUserAppValue(user, persRequest); + } catch (IllegalArgumentException iae) { + logger.error(EELFLoggerDelegate.errorLogger, "Failed in putAppCatalogSelection", iae); + response.sendError(HttpServletResponse.SC_NOT_ACCEPTABLE, iae.getMessage()); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "Failed in putAppCatalogSelection", e); + response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); + } + result.setHttpStatusCode((long) HttpServletResponse.SC_OK); + return result; + } }