2 * ================================================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ================================================================================
20 package org.openecomp.portalapp.portal.controller;
22 import java.util.List;
24 import javax.servlet.http.HttpServletRequest;
25 import javax.servlet.http.HttpServletResponse;
27 import org.apache.cxf.common.util.StringUtils;
28 import org.openecomp.portalapp.controller.EPRestrictedBaseController;
29 import org.openecomp.portalapp.portal.domain.EPUser;
30 import org.openecomp.portalapp.portal.logging.aop.EPAuditLog;
31 import org.openecomp.portalapp.portal.service.AdminRolesService;
32 import org.openecomp.portalapp.portal.service.WidgetService;
33 import org.openecomp.portalapp.portal.transport.FieldsValidator;
34 import org.openecomp.portalapp.portal.transport.OnboardingWidget;
35 import org.openecomp.portalapp.portal.utils.EcompPortalUtils;
36 import org.openecomp.portalapp.util.EPUserUtils;
37 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
38 import org.springframework.beans.factory.annotation.Autowired;
39 import org.springframework.context.annotation.EnableAspectJAutoProxy;
40 import org.springframework.web.bind.annotation.PathVariable;
41 import org.springframework.web.bind.annotation.RequestBody;
42 import org.springframework.web.bind.annotation.RequestMapping;
43 import org.springframework.web.bind.annotation.RequestMethod;
44 import org.springframework.web.bind.annotation.RestController;
47 @org.springframework.context.annotation.Configuration
48 @EnableAspectJAutoProxy
50 public class WidgetsController extends EPRestrictedBaseController {
51 EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WidgetsController.class);
54 AdminRolesService adminRolesService;
56 WidgetService widgetService;
58 @RequestMapping(value = { "/portalApi/widgets" }, method = RequestMethod.GET, produces = "application/json")
59 public List<OnboardingWidget> getOnboardingWidgets(HttpServletRequest request, HttpServletResponse response) {
60 EPUser user = EPUserUtils.getUserSession(request);
61 List<OnboardingWidget> onboardingWidgets = null;
63 if (user == null || user.isGuest()) {
64 EcompPortalUtils.setBadPermissions(user, response, "getOnboardingWidgets");
66 String getType = request.getHeader("X-Widgets-Type");
67 if (!StringUtils.isEmpty(getType) && (getType.equals("managed") || getType.equals("all"))) {
68 onboardingWidgets = widgetService.getOnboardingWidgets(user, getType.equals("managed"));
70 logger.debug(EELFLoggerDelegate.debugLogger, "WidgetsController.getOnboardingApps - request must contain header 'X-Widgets-Type' with 'all' or 'managed'");
71 response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
75 EcompPortalUtils.logAndSerializeObject("/portalApi/widgets", "GET result =", response.getStatus());
76 return onboardingWidgets;
79 private boolean userHasPermissions(EPUser user, HttpServletResponse response, String invocator) {
80 if (!adminRolesService.isSuperAdmin(user) && !adminRolesService.isAccountAdmin(user)) {
81 EcompPortalUtils.setBadPermissions(user, response, invocator);
87 // Attention: real json has all OnboardingWidget fields except "id", we use OnboardingWidget for not to create new class for parsing
88 @RequestMapping(value = { "/portalApi/widgets/{widgetId}" }, method = { RequestMethod.PUT }, produces = "application/json")
89 public FieldsValidator putOnboardingWidget(HttpServletRequest request, @PathVariable("widgetId") Long widgetId,
90 @RequestBody OnboardingWidget onboardingWidget, HttpServletResponse response) {
91 EPUser user = EPUserUtils.getUserSession(request);
92 FieldsValidator fieldsValidator = null;
93 if (userHasPermissions(user, response, "putOnboardingWidget")) {
94 onboardingWidget.id = widgetId; // !
95 onboardingWidget.normalize();
96 fieldsValidator = widgetService.setOnboardingWidget(user, onboardingWidget);
97 response.setStatus(fieldsValidator.httpStatusCode.intValue());
99 EcompPortalUtils.logAndSerializeObject("/portalApi/widgets/" + widgetId, "GET result =", response.getStatus());
101 return fieldsValidator;
104 // Attention: real json has all OnboardingWidget fields except "id", we use OnboardingWidget for not to create new class for parsing
105 @RequestMapping(value = { "/portalApi/widgets" }, method = { RequestMethod.POST }, produces = "application/json")
106 public FieldsValidator postOnboardingWidget(HttpServletRequest request, @RequestBody OnboardingWidget onboardingWidget, HttpServletResponse response) {
107 EPUser user = EPUserUtils.getUserSession(request);
108 FieldsValidator fieldsValidator = null; ;
110 if (userHasPermissions(user, response, "postOnboardingWidget")) {
111 onboardingWidget.id = null; // !
112 onboardingWidget.normalize();
113 fieldsValidator = widgetService.setOnboardingWidget(user, onboardingWidget);
114 response.setStatus(fieldsValidator.httpStatusCode.intValue());
117 EcompPortalUtils.logAndSerializeObject("/portalApi/widgets", "POST result =", response.getStatus());
118 return fieldsValidator;
121 @RequestMapping(value = { "/portalApi/widgets/{widgetId}" }, method = { RequestMethod.DELETE }, produces = "application/json")
122 public FieldsValidator deleteOnboardingWidget(HttpServletRequest request, @PathVariable("widgetId") Long widgetId, HttpServletResponse response) {
123 EPUser user = EPUserUtils.getUserSession(request);
124 FieldsValidator fieldsValidator = null; ;
126 if (userHasPermissions(user, response, "deleteOnboardingWidget")) {
127 fieldsValidator = widgetService.deleteOnboardingWidget(user, widgetId);
128 response.setStatus(fieldsValidator.httpStatusCode.intValue());
131 EcompPortalUtils.logAndSerializeObject("/portalApi/widgets/" + widgetId, "DELETE result =", response.getStatus());
132 return fieldsValidator;