nexus site path corrected
[portal.git] / ecomp-portal-BE / src / main / java / org / openecomp / portalapp / portal / controller / WidgetsController.java
1 /*-
2  * ================================================================================
3  * eCOMP Portal
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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  * ================================================================================
19  */
20 package org.openecomp.portalapp.portal.controller;
21
22 import java.util.List;
23
24 import javax.servlet.http.HttpServletRequest;
25 import javax.servlet.http.HttpServletResponse;
26
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;
45
46 @RestController
47 @org.springframework.context.annotation.Configuration
48 @EnableAspectJAutoProxy
49 @EPAuditLog
50 public class WidgetsController extends EPRestrictedBaseController {
51         EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WidgetsController.class);
52         
53         @Autowired
54         AdminRolesService adminRolesService;
55         @Autowired
56         WidgetService widgetService;
57
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;
62                 
63                 if (user == null || user.isGuest()) {
64                         EcompPortalUtils.setBadPermissions(user, response, "getOnboardingWidgets");
65                 } else {
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"));
69                         } else {
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);
72                         }
73                 }
74                 
75                 EcompPortalUtils.logAndSerializeObject("/portalApi/widgets", "GET result =", response.getStatus());
76                 return onboardingWidgets;
77         }
78
79         private boolean userHasPermissions(EPUser user, HttpServletResponse response, String invocator) {
80                 if (!adminRolesService.isSuperAdmin(user) && !adminRolesService.isAccountAdmin(user)) {
81                         EcompPortalUtils.setBadPermissions(user, response, invocator);
82                         return false;
83                 }
84                 return true;
85         }
86
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());
98                 }
99                 EcompPortalUtils.logAndSerializeObject("/portalApi/widgets/" + widgetId, "GET result =", response.getStatus());
100                 
101                 return fieldsValidator;
102         }
103
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; ;
109                 
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());
115                 }
116                 
117                 EcompPortalUtils.logAndSerializeObject("/portalApi/widgets", "POST result =", response.getStatus());
118                 return fieldsValidator;
119         }
120
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; ;
125                 
126                 if (userHasPermissions(user, response, "deleteOnboardingWidget")) {
127                         fieldsValidator = widgetService.deleteOnboardingWidget(user, widgetId);
128                         response.setStatus(fieldsValidator.httpStatusCode.intValue());
129                 }
130                 
131                 EcompPortalUtils.logAndSerializeObject("/portalApi/widgets/" + widgetId, "DELETE result =", response.getStatus());
132                 return fieldsValidator;
133         }
134 }