28f1e67f7421e16171aa03957955e9f2b4ab6155
[portal.git] / ecomp-portal-BE-os / src / main / java / org / openecomp / portalapp / portal / controller / PortalAdminController.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.openecomp.portalapp.controller.EPRestrictedBaseController;
28 import org.openecomp.portalapp.portal.domain.EPRole;
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.PortalAdminService;
33 import org.openecomp.portalapp.portal.transport.FieldsValidator;
34 import org.openecomp.portalapp.portal.transport.PortalAdmin;
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 PortalAdminController extends EPRestrictedBaseController {
51         @Autowired
52         PortalAdminService portalAdminService;
53         @Autowired
54         AdminRolesService adminRolesService;
55
56         EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(PortalAdminController.class);
57
58         @RequestMapping(value = { "/portalApi/portalAdmins" }, method = RequestMethod.GET, produces = "application/json")
59         public List<PortalAdmin> getPortalAdmins(HttpServletRequest request, HttpServletResponse response) {
60                 EPUser user = EPUserUtils.getUserSession(request);
61                 List<PortalAdmin> portalAdmins = null;
62                 if (user == null) {
63                         logger.debug(EELFLoggerDelegate.debugLogger, "PortalAdminController.getPortalAdmins, null user");
64                         EcompPortalUtils.setBadPermissions(user, response, "getPortalAdmins");
65                 } else if (!adminRolesService.isSuperAdmin(user)) {
66                         logger.debug(EELFLoggerDelegate.debugLogger, "PortalAdminController.getPortalAdmins, bad permissions");
67                         EcompPortalUtils.setBadPermissions(user, response, "createPortalAdmin");
68                 } else {
69                         // return the list of portal admins
70                         portalAdmins = portalAdminService.getPortalAdmins();
71                         logger.debug(EELFLoggerDelegate.debugLogger, "portalAdmins: called getPortalAdmins()");
72                         EcompPortalUtils.logAndSerializeObject("/portalApi/getPortalAdmins", "result =", portalAdmins);
73                 }
74
75                 return portalAdmins;
76         }
77
78         /**
79          * RESTful service method to create a new portal admin. Requirement: you
80          * must be the Ecomp portal super admin user.
81          */
82
83         @RequestMapping(value = { "/portalApi/portalAdmin" }, method = RequestMethod.POST)
84         public FieldsValidator createPortalAdmin(HttpServletRequest request, @RequestBody String userid,
85                         HttpServletResponse response) {
86                 EPUser user = EPUserUtils.getUserSession(request);
87                 FieldsValidator fieldsValidator = null;
88                 if (user == null) {
89                         logger.debug(EELFLoggerDelegate.debugLogger, "PortalAdminController.createPortalAdmin, null user");
90                         EcompPortalUtils.setBadPermissions(user, response, "createPortalAdmin");
91                 } else if (!adminRolesService.isSuperAdmin(user)) {
92                         logger.debug(EELFLoggerDelegate.debugLogger, "PortalAdminController.createPortalAdmin bad permissions");
93                         EcompPortalUtils.setBadPermissions(user, response, "createPortalAdmin");
94                 } else {
95                         fieldsValidator = portalAdminService.createPortalAdmin(userid);
96                         response.setStatus(fieldsValidator.httpStatusCode.intValue());
97                 }
98                 EcompPortalUtils.logAndSerializeObject("/portalAdmin", "POST result =", response.getStatus());
99
100                 return fieldsValidator;
101         }
102
103         @RequestMapping(value = { "/portalApi/portalAdmin/{orgUserId}" }, method = RequestMethod.DELETE)
104         public FieldsValidator deletePortalAdmin(HttpServletRequest request, @PathVariable("orgUserId") Long orgUserId,
105                         HttpServletResponse response) {
106                 EPUser user = EPUserUtils.getUserSession(request);
107                 FieldsValidator fieldsValidator = null;
108                 if (!adminRolesService.isSuperAdmin(user)) {
109                         EcompPortalUtils.setBadPermissions(user, response, "deletePortalAdmin");
110                 } else {
111                         fieldsValidator = portalAdminService.deletePortalAdmin(orgUserId);
112                         response.setStatus(fieldsValidator.httpStatusCode.intValue());
113                 }
114                 EcompPortalUtils.logAndSerializeObject("/portalAdmin", "DELETE result =", response.getStatus());
115
116                 return fieldsValidator;
117         }
118         
119         @RequestMapping(value = { "/portalApi/adminAppsRoles/{appId}" }, method = RequestMethod.GET, produces = "application/json")
120         public List<EPRole> getRolesByApp(HttpServletRequest request, @PathVariable("appId") Long appId,
121                         HttpServletResponse response) {
122                 EPUser user = EPUserUtils.getUserSession(request);
123                 List<EPRole> rolesByApp = null;
124
125                 try {
126                         if (user == null) {
127                                 EcompPortalUtils.setBadPermissions(user, response, "getUserApps");
128                         } else {
129                                 rolesByApp = adminRolesService.getRolesByApp(user, appId);
130                         }
131                 } catch (Exception e) {
132                         logger.error(EELFLoggerDelegate.errorLogger, "getRolesByApp failed", e);
133                 }
134
135                 return rolesByApp;
136         }
137 }