-/*-\r
- * ================================================================================\r
- * ECOMP Portal\r
- * ================================================================================\r
- * Copyright (C) 2017 AT&T Intellectual Property\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ================================================================================\r
- */\r
-package org.openecomp.portalapp.portal.controller;\r
-\r
-import java.util.List;\r
-\r
-import javax.servlet.http.HttpServletRequest;\r
-import javax.servlet.http.HttpServletResponse;\r
-\r
-import org.openecomp.portalapp.portal.domain.EPApp;\r
-import org.openecomp.portalapp.portal.domain.EPUser;\r
-import org.openecomp.portalapp.portal.ecomp.model.PortalRestResponse;\r
-import org.openecomp.portalapp.portal.ecomp.model.PortalRestStatusEnum;\r
-import org.openecomp.portalapp.portal.logging.aop.EPAuditLog;\r
-import org.openecomp.portalapp.portal.service.AdminRolesService;\r
-import org.openecomp.portalapp.portal.service.EPAppService;\r
-import org.openecomp.portalapp.portal.service.PortalAdminService;\r
-import org.openecomp.portalapp.portal.service.UserService;\r
-import org.openecomp.portalapp.portal.transport.FieldsValidator;\r
-import org.openecomp.portalapp.portal.transport.OnboardingApp;\r
-import org.openecomp.portalapp.portal.utils.EcompPortalUtils;\r
-import org.openecomp.portalapp.portal.utils.PortalConstants;\r
-import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;\r
-import org.springframework.beans.factory.annotation.Autowired;\r
-import org.springframework.context.annotation.Configuration;\r
-import org.springframework.context.annotation.EnableAspectJAutoProxy;\r
-import org.springframework.web.bind.annotation.PathVariable;\r
-import org.springframework.web.bind.annotation.RequestBody;\r
-import org.springframework.web.bind.annotation.RequestMapping;\r
-import org.springframework.web.bind.annotation.RequestMethod;\r
-import org.springframework.web.bind.annotation.ResponseBody;\r
-import org.springframework.web.bind.annotation.RestController;\r
-\r
-import io.swagger.annotations.ApiOperation;\r
-\r
-/**\r
- * Processes requests from external systems (i.e., not the front-end web UI).\r
- * First use case is ECOMP Controller, which has to create an admin and onboard\r
- * itself upon launch of a fresh Portal.\r
- * \r
- * Listens on the "auxapi" path prefix. Provides alternate implementations of\r
- * methods in several existing controllers because an EPUser object is not\r
- * available in the session for these requests.\r
- * \r
- * Checks credentials sent via HTTP Basic Authentication. The Portal's basic\r
- * HTTP authentication system requires that the user names and endpoints are\r
- * registered together.\r
- */\r
-@RestController\r
-@RequestMapping(PortalConstants.REST_AUX_API)\r
-@Configuration\r
-@EnableAspectJAutoProxy\r
-@EPAuditLog\r
-public class AppsControllerExternalRequest implements BasicAuthenticationController {\r
-\r
- private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(AppsControllerExternalRequest.class);\r
-\r
- private static final String ONBOARD_APP = "/onboardApp";\r
-\r
- // Where is this used?\r
- public boolean isAuxRESTfulCall() {\r
- return true;\r
- }\r
-\r
- /**\r
- * For testing whether a user is a superadmin.\r
- */\r
- @Autowired\r
- private AdminRolesService adminRolesService;\r
-\r
- /**\r
- * For onboarding or updating an app\r
- */\r
- @Autowired\r
- private EPAppService appService;\r
-\r
- /**\r
- * For promoting a user to Portal admin\r
- */\r
- @Autowired\r
- private PortalAdminService portalAdminService;\r
-\r
- /**\r
- * For creating a new user\r
- */\r
- @Autowired\r
- private UserService userService;\r
-\r
- /**\r
- * Creates a new user as a Portal administrator.\r
- * \r
- * <PRE>\r
- { \r
- "loginId" : "abc123",\r
- "loginPwd": "",\r
- "email":"ecomp@controller" \r
- }\r
- * </PRE>\r
- * \r
- * @param request\r
- * HttpServletRequest\r
- * @param epUser\r
- * User details; the email and orgUserId fields are mandatory\r
- * @param response\r
- * HttpServletResponse\r
- * @return PortalRestResponse with success or failure\r
- */\r
- @ApiOperation(value = "Creates a new user as a Portal administrator.", response = PortalRestResponse.class)\r
- @RequestMapping(value = "/portalAdmin", method = RequestMethod.POST, produces = "application/json")\r
- @ResponseBody\r
- public PortalRestResponse<String> postPortalAdmin(HttpServletRequest request, HttpServletResponse response,\r
- @RequestBody EPUser epUser) {\r
- EcompPortalUtils.logAndSerializeObject(logger, "postPortalAdmin", "request", epUser);\r
- PortalRestResponse<String> portalResponse = new PortalRestResponse<>();\r
-\r
- // Check mandatory fields.\r
- if (epUser.getEmail() == null || epUser.getEmail().trim().length() == 0 //\r
- || epUser.getLoginId() == null || epUser.getLoginId().trim().length() == 0 //\r
- || epUser.getLoginPwd() == null) {\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage("Missing required field: email, loginId, or loginPwd");\r
- return portalResponse;\r
- }\r
-\r
- try {\r
- // Check for existing user; create if not found.\r
- List<EPUser> userList = userService.getUserByUserId(epUser.getOrgUserId());\r
- if (userList == null || userList.size() == 0) {\r
- // Create user with first, last names etc.; do check for\r
- // duplicates.\r
- String userCreateResult = userService.saveNewUser(epUser, "Yes");\r
- if (!"success".equals(userCreateResult)) {\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage(userCreateResult);\r
- return portalResponse;\r
- }\r
- }\r
-\r
- // Check for Portal admin status; promote if not.\r
- if (adminRolesService.isSuperAdmin(epUser)) {\r
- portalResponse.setStatus(PortalRestStatusEnum.OK);\r
- } else {\r
- FieldsValidator fv = portalAdminService.createPortalAdmin(epUser.getOrgUserId());\r
- if (fv.httpStatusCode.intValue() == HttpServletResponse.SC_OK) {\r
- portalResponse.setStatus(PortalRestStatusEnum.OK);\r
- } else {\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage(fv.toString());\r
- }\r
- }\r
- } catch (Exception ex) {\r
- // Uncaught exceptions yield 404 and an empty error page\r
- response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage(ex.toString());\r
- }\r
-\r
- EcompPortalUtils.logAndSerializeObject(logger, "postPortalAdmin", "response", portalResponse);\r
- return portalResponse;\r
- }\r
-\r
- /**\r
- * Gets the specified application that is on-boarded in Portal.\r
- * \r
- * @param request\r
- * HttpServletRequest\r
- * @param appId\r
- * Application ID to get\r
- * @param response\r
- * httpServletResponse\r
- * @return OnboardingApp objects\r
- */\r
- @ApiOperation(value = "Gets the specified application that is on-boarded in Portal.", response = OnboardingApp.class)\r
- @RequestMapping(value = { ONBOARD_APP + "/{appId}" }, method = RequestMethod.GET, produces = "application/json")\r
- @ResponseBody\r
- public OnboardingApp getOnboardAppExternal(HttpServletRequest request, HttpServletResponse response,\r
- @PathVariable("appId") Long appId) {\r
- EPApp epApp = appService.getApp(appId);\r
- OnboardingApp obApp = new OnboardingApp();\r
- appService.createOnboardingFromApp(epApp, obApp);\r
- EcompPortalUtils.logAndSerializeObject(logger, "getOnboardAppExternal", "response", obApp);\r
- return obApp;\r
- }\r
-\r
- /**\r
- * Adds a new application to Portal. The My Logins App Owner in the request\r
- * must be the organization user ID of a person who is a Portal\r
- * administrator.\r
- * \r
- * <pre>\r
- * { \r
- "myLoginsAppOwner" : "abc123",\r
- "name": "dashboard",\r
- "url": "http://k8s/something",\r
- "restUrl" : "http://aic.att.com",\r
- "restrictedApp" : true,\r
- "isOpen" : true,\r
- "isEnabled": false\r
- }\r
- * </pre>\r
- * \r
- * @param request\r
- * HttpServletRequest\r
- * @param response\r
- * httpServletResponse\r
- * @param newOnboardApp\r
- * Message with details about the app to add\r
- * @return PortalRestResponse\r
- */\r
- @ApiOperation(value = "Adds a new application to Portal.", response = PortalRestResponse.class)\r
- @RequestMapping(value = { ONBOARD_APP }, method = RequestMethod.POST, produces = "application/json")\r
- @ResponseBody\r
- public PortalRestResponse<String> postOnboardAppExternal(HttpServletRequest request, HttpServletResponse response,\r
- @RequestBody OnboardingApp newOnboardApp) {\r
- EcompPortalUtils.logAndSerializeObject(logger, "postOnboardAppExternal", "request", newOnboardApp);\r
- PortalRestResponse<String> portalResponse = new PortalRestResponse<>();\r
-\r
- // Validate fields\r
- if (newOnboardApp.id != null) {\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage("Unexpected field: id");\r
- return portalResponse;\r
- }\r
- if (newOnboardApp.name == null || newOnboardApp.name.trim().length() == 0 //\r
- || newOnboardApp.url == null || newOnboardApp.url.trim().length() == 0 //\r
- || newOnboardApp.restUrl == null || newOnboardApp.restUrl.trim().length() == 0\r
- || newOnboardApp.myLoginsAppOwner == null || newOnboardApp.myLoginsAppOwner.trim().length() == 0\r
- || newOnboardApp.restrictedApp == null //\r
- || newOnboardApp.isOpen == null //\r
- || newOnboardApp.isEnabled == null) {\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage(\r
- "Missing required field: name, url, restUrl, restrictedApp, isOpen, isEnabled, myLoginsAppOwner");\r
- return portalResponse;\r
- }\r
-\r
- try {\r
- List<EPUser> userList = userService.getUserByUserId(newOnboardApp.myLoginsAppOwner);\r
- if (userList == null || userList.size() != 1) {\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage("Failed to find user: " + newOnboardApp.myLoginsAppOwner);\r
- return portalResponse;\r
- }\r
-\r
- EPUser epUser = userList.get(0);\r
- // Check for Portal admin status\r
- if (! adminRolesService.isSuperAdmin(epUser)) {\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage("User lacks Portal admin role: " + epUser.getLoginId());\r
- return portalResponse; \r
- }\r
- \r
- newOnboardApp.normalize();\r
- FieldsValidator fv = appService.addOnboardingApp(newOnboardApp, epUser);\r
- if (fv.httpStatusCode.intValue() == HttpServletResponse.SC_OK) {\r
- portalResponse.setStatus(PortalRestStatusEnum.OK);\r
- } else {\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage(fv.toString());\r
- }\r
- } catch (Exception ex) {\r
- // Uncaught exceptions yield 404 and an empty error page\r
- response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage(ex.toString());\r
- }\r
- EcompPortalUtils.logAndSerializeObject(logger, "postOnboardAppExternal", "response", portalResponse);\r
- return portalResponse;\r
- }\r
-\r
- /**\r
- * Updates information about an on-boarded application in Portal. The My\r
- * Logins App Owner in the request must be the organization user ID of a\r
- * person who is a Portal administrator.\r
- * <pre>\r
- { \r
- "id" : 123,\r
- "myLoginsAppOwner" : "abc123",\r
- "name": "dashboard",\r
- "url": "http://k8s/something",\r
- "restUrl" : "http://aic.att.com",\r
- "restrictedApp" : true,\r
- "isOpen" : true,\r
- "isEnabled": false\r
- }\r
- </pre>\r
- * @param request\r
- * HttpServletRequest\r
- * @param response\r
- * httpServletResponse\r
- * @param appId\r
- * application id\r
- * @param oldOnboardApp\r
- * Message with details about the app to add\r
- * @return PortalRestResponse\r
- */\r
- @ApiOperation(value = "Updates information about an on-boarded application in Portal.", response = PortalRestResponse.class)\r
- @RequestMapping(value = { ONBOARD_APP + "/{appId}" }, method = RequestMethod.PUT, produces = "application/json")\r
- @ResponseBody\r
- public PortalRestResponse<String> putOnboardAppExternal(HttpServletRequest request, HttpServletResponse response,\r
- @PathVariable("appId") Long appId, @RequestBody OnboardingApp oldOnboardApp) {\r
- EcompPortalUtils.logAndSerializeObject(logger, "putOnboardAppExternal", "request", oldOnboardApp);\r
- PortalRestResponse<String> portalResponse = new PortalRestResponse<>();\r
- // Validate fields.\r
- if (oldOnboardApp.id == null || !appId.equals(oldOnboardApp.id)) {\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage("Unexpected value for field: id");\r
- return portalResponse;\r
- }\r
- if (oldOnboardApp.name == null || oldOnboardApp.name.trim().length() == 0 //\r
- || oldOnboardApp.url == null || oldOnboardApp.url.trim().length() == 0 //\r
- || oldOnboardApp.restUrl == null || oldOnboardApp.restUrl.trim().length() == 0\r
- || oldOnboardApp.myLoginsAppOwner == null || oldOnboardApp.myLoginsAppOwner.trim().length() == 0\r
- || oldOnboardApp.restrictedApp == null //\r
- || oldOnboardApp.isOpen == null //\r
- || oldOnboardApp.isEnabled == null) {\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage(\r
- "Missing required field: name, url, restUrl, restrictedApp, isOpen, isEnabled, myLoginsAppOwner");\r
- return portalResponse;\r
- }\r
-\r
- try {\r
- List<EPUser> userList = userService.getUserByUserId(oldOnboardApp.myLoginsAppOwner);\r
- if (userList == null || userList.size() != 1) {\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage("Failed to find user: " + oldOnboardApp.myLoginsAppOwner);\r
- return portalResponse;\r
- }\r
-\r
- EPUser epUser = userList.get(0);\r
- // Check for Portal admin status\r
- if (! adminRolesService.isSuperAdmin(epUser)) {\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage("User lacks Portal admin role: " + epUser.getLoginId());\r
- return portalResponse; \r
- }\r
-\r
- oldOnboardApp.normalize();\r
- FieldsValidator fv = appService.modifyOnboardingApp(oldOnboardApp, epUser);\r
- if (fv.httpStatusCode.intValue() == HttpServletResponse.SC_OK) {\r
- portalResponse.setStatus(PortalRestStatusEnum.OK);\r
- } else {\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage(fv.toString());\r
- }\r
- } catch (Exception ex) {\r
- // Uncaught exceptions yield 404 and an empty error page\r
- response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);\r
- portalResponse.setStatus(PortalRestStatusEnum.ERROR);\r
- portalResponse.setMessage(ex.toString());\r
- }\r
- EcompPortalUtils.logAndSerializeObject(logger, "putOnboardAppExternal", "response", portalResponse);\r
- return portalResponse;\r
- }\r
-\r
-}\r
+/*-
+ * ================================================================================
+ * ECOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+package org.openecomp.portalapp.portal.controller;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.openecomp.portalapp.portal.domain.EPApp;
+import org.openecomp.portalapp.portal.domain.EPUser;
+import org.openecomp.portalapp.portal.ecomp.model.PortalRestResponse;
+import org.openecomp.portalapp.portal.ecomp.model.PortalRestStatusEnum;
+import org.openecomp.portalapp.portal.logging.aop.EPAuditLog;
+import org.openecomp.portalapp.portal.service.AdminRolesService;
+import org.openecomp.portalapp.portal.service.EPAppService;
+import org.openecomp.portalapp.portal.service.PortalAdminService;
+import org.openecomp.portalapp.portal.service.UserService;
+import org.openecomp.portalapp.portal.transport.FieldsValidator;
+import org.openecomp.portalapp.portal.transport.OnboardingApp;
+import org.openecomp.portalapp.portal.utils.EcompPortalUtils;
+import org.openecomp.portalapp.portal.utils.PortalConstants;
+import org.openecomp.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.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * Processes requests from external systems (i.e., not the front-end web UI).
+ * First use case is ECOMP Controller, which has to create an admin and onboard
+ * itself upon launch of a fresh Portal.
+ *
+ * Listens on the "auxapi" path prefix. Provides alternate implementations of
+ * methods in several existing controllers because an EPUser object is not
+ * available in the session for these requests.
+ *
+ * Checks credentials sent via HTTP Basic Authentication. The Portal's basic
+ * HTTP authentication system requires that the user names and endpoints are
+ * registered together.
+ */
+@RestController
+@RequestMapping(PortalConstants.REST_AUX_API)
+@Configuration
+@EnableAspectJAutoProxy
+@EPAuditLog
+public class AppsControllerExternalRequest implements BasicAuthenticationController {
+
+ private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(AppsControllerExternalRequest.class);
+
+ private static final String ONBOARD_APP = "/onboardApp";
+
+ // Where is this used?
+ public boolean isAuxRESTfulCall() {
+ return true;
+ }
+
+ /**
+ * For testing whether a user is a superadmin.
+ */
+ @Autowired
+ private AdminRolesService adminRolesService;
+
+ /**
+ * For onboarding or updating an app
+ */
+ @Autowired
+ private EPAppService appService;
+
+ /**
+ * For promoting a user to Portal admin
+ */
+ @Autowired
+ private PortalAdminService portalAdminService;
+
+ /**
+ * For creating a new user
+ */
+ @Autowired
+ private UserService userService;
+
+ /**
+ * Creates a new user as a Portal administrator.
+ *
+ * <PRE>
+ {
+ "loginId" : "abc123",
+ "loginPwd": "",
+ "email":"ecomp@controller"
+ }
+ * </PRE>
+ *
+ * @param request
+ * HttpServletRequest
+ * @param epUser
+ * User details; the email and orgUserId fields are mandatory
+ * @param response
+ * HttpServletResponse
+ * @return PortalRestResponse with success or failure
+ */
+ @ApiOperation(value = "Creates a new user as a Portal administrator.", response = PortalRestResponse.class)
+ @RequestMapping(value = "/portalAdmin", method = RequestMethod.POST, produces = "application/json")
+ @ResponseBody
+ public PortalRestResponse<String> postPortalAdmin(HttpServletRequest request, HttpServletResponse response,
+ @RequestBody EPUser epUser) {
+ EcompPortalUtils.logAndSerializeObject(logger, "postPortalAdmin", "request", epUser);
+ PortalRestResponse<String> portalResponse = new PortalRestResponse<>();
+
+ // Check mandatory fields.
+ if (epUser.getEmail() == null || epUser.getEmail().trim().length() == 0 //
+ || epUser.getLoginId() == null || epUser.getLoginId().trim().length() == 0 //
+ || epUser.getLoginPwd() == null) {
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage("Missing required field: email, loginId, or loginPwd");
+ return portalResponse;
+ }
+
+ try {
+ // Check for existing user; create if not found.
+ List<EPUser> userList = userService.getUserByUserId(epUser.getOrgUserId());
+ if (userList == null || userList.size() == 0) {
+ // Create user with first, last names etc.; do check for
+ // duplicates.
+ String userCreateResult = userService.saveNewUser(epUser, "Yes");
+ if (!"success".equals(userCreateResult)) {
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage(userCreateResult);
+ return portalResponse;
+ }
+ }
+
+ // Check for Portal admin status; promote if not.
+ if (adminRolesService.isSuperAdmin(epUser)) {
+ portalResponse.setStatus(PortalRestStatusEnum.OK);
+ } else {
+ FieldsValidator fv = portalAdminService.createPortalAdmin(epUser.getOrgUserId());
+ if (fv.httpStatusCode.intValue() == HttpServletResponse.SC_OK) {
+ portalResponse.setStatus(PortalRestStatusEnum.OK);
+ } else {
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage(fv.toString());
+ }
+ }
+ } catch (Exception ex) {
+ // Uncaught exceptions yield 404 and an empty error page
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage(ex.toString());
+ }
+
+ EcompPortalUtils.logAndSerializeObject(logger, "postPortalAdmin", "response", portalResponse);
+ return portalResponse;
+ }
+
+ /**
+ * Gets the specified application that is on-boarded in Portal.
+ *
+ * @param request
+ * HttpServletRequest
+ * @param appId
+ * Application ID to get
+ * @param response
+ * httpServletResponse
+ * @return OnboardingApp objects
+ */
+ @ApiOperation(value = "Gets the specified application that is on-boarded in Portal.", response = OnboardingApp.class)
+ @RequestMapping(value = { ONBOARD_APP + "/{appId}" }, method = RequestMethod.GET, produces = "application/json")
+ @ResponseBody
+ public OnboardingApp getOnboardAppExternal(HttpServletRequest request, HttpServletResponse response,
+ @PathVariable("appId") Long appId) {
+ EPApp epApp = appService.getApp(appId);
+ OnboardingApp obApp = new OnboardingApp();
+ appService.createOnboardingFromApp(epApp, obApp);
+ EcompPortalUtils.logAndSerializeObject(logger, "getOnboardAppExternal", "response", obApp);
+ return obApp;
+ }
+
+ /**
+ * Adds a new application to Portal. The My Logins App Owner in the request
+ * must be the organization user ID of a person who is a Portal
+ * administrator.
+ *
+ * <pre>
+ * {
+ "myLoginsAppOwner" : "abc123",
+ "name": "dashboard",
+ "url": "http://k8s/something",
+ "restUrl" : "http://targeturl.com",
+ "restrictedApp" : true,
+ "isOpen" : true,
+ "isEnabled": false
+ }
+ * </pre>
+ *
+ * @param request
+ * HttpServletRequest
+ * @param response
+ * httpServletResponse
+ * @param newOnboardApp
+ * Message with details about the app to add
+ * @return PortalRestResponse
+ */
+ @ApiOperation(value = "Adds a new application to Portal.", response = PortalRestResponse.class)
+ @RequestMapping(value = { ONBOARD_APP }, method = RequestMethod.POST, produces = "application/json")
+ @ResponseBody
+ public PortalRestResponse<String> postOnboardAppExternal(HttpServletRequest request, HttpServletResponse response,
+ @RequestBody OnboardingApp newOnboardApp) {
+ EcompPortalUtils.logAndSerializeObject(logger, "postOnboardAppExternal", "request", newOnboardApp);
+ PortalRestResponse<String> portalResponse = new PortalRestResponse<>();
+
+ // Validate fields
+ if (newOnboardApp.id != null) {
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage("Unexpected field: id");
+ return portalResponse;
+ }
+ if (newOnboardApp.name == null || newOnboardApp.name.trim().length() == 0 //
+ || newOnboardApp.url == null || newOnboardApp.url.trim().length() == 0 //
+ || newOnboardApp.restUrl == null || newOnboardApp.restUrl.trim().length() == 0
+ || newOnboardApp.myLoginsAppOwner == null || newOnboardApp.myLoginsAppOwner.trim().length() == 0
+ || newOnboardApp.restrictedApp == null //
+ || newOnboardApp.isOpen == null //
+ || newOnboardApp.isEnabled == null) {
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage(
+ "Missing required field: name, url, restUrl, restrictedApp, isOpen, isEnabled, myLoginsAppOwner");
+ return portalResponse;
+ }
+
+ try {
+ List<EPUser> userList = userService.getUserByUserId(newOnboardApp.myLoginsAppOwner);
+ if (userList == null || userList.size() != 1) {
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage("Failed to find user: " + newOnboardApp.myLoginsAppOwner);
+ return portalResponse;
+ }
+
+ EPUser epUser = userList.get(0);
+ // Check for Portal admin status
+ if (! adminRolesService.isSuperAdmin(epUser)) {
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage("User lacks Portal admin role: " + epUser.getLoginId());
+ return portalResponse;
+ }
+
+ newOnboardApp.normalize();
+ FieldsValidator fv = appService.addOnboardingApp(newOnboardApp, epUser);
+ if (fv.httpStatusCode.intValue() == HttpServletResponse.SC_OK) {
+ portalResponse.setStatus(PortalRestStatusEnum.OK);
+ } else {
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage(fv.toString());
+ }
+ } catch (Exception ex) {
+ // Uncaught exceptions yield 404 and an empty error page
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage(ex.toString());
+ }
+ EcompPortalUtils.logAndSerializeObject(logger, "postOnboardAppExternal", "response", portalResponse);
+ return portalResponse;
+ }
+
+ /**
+ * Updates information about an on-boarded application in Portal. The My
+ * Logins App Owner in the request must be the organization user ID of a
+ * person who is a Portal administrator.
+ * <pre>
+ {
+ "id" : 123,
+ "myLoginsAppOwner" : "abc123",
+ "name": "dashboard",
+ "url": "http://k8s/something",
+ "restUrl" : "http://targeturl.com",
+ "restrictedApp" : true,
+ "isOpen" : true,
+ "isEnabled": false
+ }
+ </pre>
+ * @param request
+ * HttpServletRequest
+ * @param response
+ * httpServletResponse
+ * @param appId
+ * application id
+ * @param oldOnboardApp
+ * Message with details about the app to add
+ * @return PortalRestResponse
+ */
+ @ApiOperation(value = "Updates information about an on-boarded application in Portal.", response = PortalRestResponse.class)
+ @RequestMapping(value = { ONBOARD_APP + "/{appId}" }, method = RequestMethod.PUT, produces = "application/json")
+ @ResponseBody
+ public PortalRestResponse<String> putOnboardAppExternal(HttpServletRequest request, HttpServletResponse response,
+ @PathVariable("appId") Long appId, @RequestBody OnboardingApp oldOnboardApp) {
+ EcompPortalUtils.logAndSerializeObject(logger, "putOnboardAppExternal", "request", oldOnboardApp);
+ PortalRestResponse<String> portalResponse = new PortalRestResponse<>();
+ // Validate fields.
+ if (oldOnboardApp.id == null || !appId.equals(oldOnboardApp.id)) {
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage("Unexpected value for field: id");
+ return portalResponse;
+ }
+ if (oldOnboardApp.name == null || oldOnboardApp.name.trim().length() == 0 //
+ || oldOnboardApp.url == null || oldOnboardApp.url.trim().length() == 0 //
+ || oldOnboardApp.restUrl == null || oldOnboardApp.restUrl.trim().length() == 0
+ || oldOnboardApp.myLoginsAppOwner == null || oldOnboardApp.myLoginsAppOwner.trim().length() == 0
+ || oldOnboardApp.restrictedApp == null //
+ || oldOnboardApp.isOpen == null //
+ || oldOnboardApp.isEnabled == null) {
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage(
+ "Missing required field: name, url, restUrl, restrictedApp, isOpen, isEnabled, myLoginsAppOwner");
+ return portalResponse;
+ }
+
+ try {
+ List<EPUser> userList = userService.getUserByUserId(oldOnboardApp.myLoginsAppOwner);
+ if (userList == null || userList.size() != 1) {
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage("Failed to find user: " + oldOnboardApp.myLoginsAppOwner);
+ return portalResponse;
+ }
+
+ EPUser epUser = userList.get(0);
+ // Check for Portal admin status
+ if (! adminRolesService.isSuperAdmin(epUser)) {
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage("User lacks Portal admin role: " + epUser.getLoginId());
+ return portalResponse;
+ }
+
+ oldOnboardApp.normalize();
+ FieldsValidator fv = appService.modifyOnboardingApp(oldOnboardApp, epUser);
+ if (fv.httpStatusCode.intValue() == HttpServletResponse.SC_OK) {
+ portalResponse.setStatus(PortalRestStatusEnum.OK);
+ } else {
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage(fv.toString());
+ }
+ } catch (Exception ex) {
+ // Uncaught exceptions yield 404 and an empty error page
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ portalResponse.setStatus(PortalRestStatusEnum.ERROR);
+ portalResponse.setMessage(ex.toString());
+ }
+ EcompPortalUtils.logAndSerializeObject(logger, "putOnboardAppExternal", "response", portalResponse);
+ return portalResponse;
+ }
+
+}