[PORTAL-16 PORTAL-18] Widget ms; staging
[portal.git] / ecomp-portal-BE-common / src / main / java / org / openecomp / portalapp / portal / controller / RolesApprovalSystemController.java
-/*-\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.externalsystemapproval.controller;\r
-\r
-import java.util.ArrayList;\r
-\r
-import javax.servlet.http.HttpServletRequest;\r
-\r
-import org.openecomp.portalapp.externalsystemapproval.model.ExternalSystemRoleApproval;\r
-import org.openecomp.portalapp.externalsystemapproval.model.ExternalSystemUser;\r
-import org.openecomp.portalapp.portal.controller.BasicAuthenticationController;\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.UserRolesService;\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.RequestBody;\r
-import org.springframework.web.bind.annotation.RequestMapping;\r
-import org.springframework.web.bind.annotation.RequestMethod;\r
-import org.springframework.web.bind.annotation.RestController;\r
-\r
-import io.swagger.annotations.ApiOperation;\r
-\r
-@RestController\r
-@RequestMapping(PortalConstants.REST_AUX_API)\r
-@Configuration\r
-@EnableAspectJAutoProxy\r
-@EPAuditLog\r
-public class RolesApprovalSystemController implements BasicAuthenticationController {\r
-\r
-       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(RolesApprovalSystemController.class);\r
-\r
-       @Autowired\r
-       private UserRolesService userRolesService;\r
-\r
-       /**\r
-        * Creates an application user with the specified roles.\r
-        * \r
-        * @param request\r
-        * @param extSysUser\r
-        * @return PortalRestResponse with appropriate status value and message\r
-        */\r
-       @ApiOperation(value = "Creates an application user with the specified roles.", response = PortalRestResponse.class)\r
-       @RequestMapping(value = { "/userProfile" }, method = RequestMethod.POST, produces = "application/json")\r
-       public PortalRestResponse<String> postUserProfile(HttpServletRequest request,\r
-                       @RequestBody ExternalSystemUser extSysUser) {\r
-               try {\r
-                       validateExtSystemUser(extSysUser, true);\r
-                       String response = userRolesService.setAppWithUserRoleStateForUser(extSysUser);\r
-                       return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Saved Successfully", response);\r
-               } catch (Exception e) {\r
-                       logger.error(EELFLoggerDelegate.errorLogger, "postUserProfile failed", e);\r
-                       return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.toString(), null);\r
-               }\r
-       }\r
-\r
-       /**\r
-        * Updates an application user to have only the specified roles.\r
-        * \r
-        * @param request\r
-        * @param extSysUser\r
-        * @return PortalRestResponse with appropriate status value and message\r
-        */\r
-       @ApiOperation(value = "Updates an application user to have only the specified roles.", response = PortalRestResponse.class)\r
-       @RequestMapping(value = { "/userProfile" }, method = RequestMethod.PUT, produces = "application/json")\r
-       public PortalRestResponse<String> putUserProfile(HttpServletRequest request,\r
-                       @RequestBody ExternalSystemUser extSysUser) {\r
-               try {\r
-                       validateExtSystemUser(extSysUser, true);\r
-                       String response = userRolesService.setAppWithUserRoleStateForUser(extSysUser);\r
-                       return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Updated Successfully", response);\r
-               } catch (Exception e) {\r
-                       logger.error(EELFLoggerDelegate.errorLogger, "putUserProfile failed", e);\r
-                       return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.toString(), null);\r
-               }\r
-       }\r
-\r
-       /**\r
-        * Deletes an application user by removing all assigned roles.\r
-        * \r
-        * @param request\r
-        * @param extSysUser\r
-        *            This object must have zero roles.\r
-        * @return PortalRestResponse with appropriate status value and message\r
-        */\r
-       @ApiOperation(value = "Processes a request to delete one or more application roles for one      specified user who has roles.", response = PortalRestResponse.class)\r
-       @RequestMapping(value = { "/userProfile" }, method = RequestMethod.DELETE, produces = "application/json")\r
-       public PortalRestResponse<String> deleteUserProfile(HttpServletRequest request,\r
-                       @RequestBody ExternalSystemUser extSysUser) {\r
-               try {\r
-                       validateExtSystemUser(extSysUser, false);\r
-                       // Ignore any roles that might be mistakenly present in the request\r
-                       extSysUser.setRoles(new ArrayList<ExternalSystemRoleApproval>());\r
-                       String result = userRolesService.setAppWithUserRoleStateForUser(extSysUser);\r
-                       return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Deleted Successfully", result);\r
-               } catch (Exception e) {\r
-                       logger.error(EELFLoggerDelegate.errorLogger, "deleteUserProfile failed", e);\r
-                       return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.toString(), null);\r
-               }\r
-       }\r
-\r
-       /**\r
-        * Checks for presence of required fields.\r
-        * \r
-        * @param extSysUser\r
-        * @param rolesRequired\r
-        *            If true, checks whether roles are present\r
-        * @throws Exception\r
-        *             If any field is missing.\r
-        */\r
-       private void validateExtSystemUser(ExternalSystemUser extSysUser, boolean rolesRequired) throws Exception {\r
-               if (extSysUser.getLoginId() == null)\r
-                       throw new Exception("Request has no login ID");\r
-               if (extSysUser.getApplicationName() == null)\r
-                       throw new Exception("Request has no application name");\r
-               if (extSysUser.getMyloginrequestId() == null)\r
-                       throw new Exception("Request has no request ID");\r
-               if (rolesRequired && (extSysUser.getRoles() == null || extSysUser.getRoles().size() == 0))\r
-                       throw new Exception("Request has no roles");\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.ArrayList;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.openecomp.portalapp.externalsystemapproval.model.ExternalSystemRoleApproval;
+import org.openecomp.portalapp.externalsystemapproval.model.ExternalSystemUser;
+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.UserRolesService;
+import org.openecomp.portalapp.portal.transport.ExternalRequestFieldsValidator;
+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.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import io.swagger.annotations.ApiOperation;
+
+@RestController
+@RequestMapping("/auxapi")
+@Configuration
+@EnableAspectJAutoProxy
+@EPAuditLog
+public class RolesApprovalSystemController implements BasicAuthenticationController {
+       
+       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(RolesApprovalSystemController.class);
+
+       @Autowired
+       private UserRolesService userRolesService;
+
+       /**
+        * Creates an application user with the specified roles.
+        * 
+        * @param request
+        * @param extSysUser
+        * @return PortalRestResponse with appropriate status value and message
+        */
+       @ApiOperation(value = "Creates an application user with the specified roles.", response = PortalRestResponse.class)
+       @RequestMapping(value = { "/userProfile" }, method = RequestMethod.POST, produces = "application/json")
+       public PortalRestResponse<String> postUserProfile(HttpServletRequest request,
+                       @RequestBody ExternalSystemUser extSysUser, HttpServletResponse response) {
+               ExternalRequestFieldsValidator reqResult = null;
+               try {
+                       logger.info(EELFLoggerDelegate.debugLogger, "postUserProfile: request received for app {}, user {}",
+                                       extSysUser.getApplicationName(), extSysUser.getLoginId());
+                       
+                       validateExtSystemUser(extSysUser, true);
+                reqResult = userRolesService.setExternalRequestUserAppRole(extSysUser, "POST");
+                if (!reqResult.isResult())
+                               throw new Exception(reqResult.getDetailMessage());
+               } catch (Exception e) {
+                       logger.error(EELFLoggerDelegate.errorLogger, "postUserProfile: failed for app {}, user {}",
+                                       extSysUser.getApplicationName(), extSysUser.getLoginId(), e);
+                       if(reqResult == null || (!reqResult.isResult()  && !e.getMessage().contains("404"))){
+                               response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR,
+                                               e.getMessage(), "save user profile failed"); 
+                   } else if(e.getMessage().contains("404")){
+                               response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR,
+                                               e.getMessage(), "save user profile failed");
+                       } else{
+                               response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR,
+                                               e.getMessage(), "save user profile failed");
+                       }
+               }
+               return new PortalRestResponse<String>(PortalRestStatusEnum.OK, reqResult.getDetailMessage(), "Success");
+       }
+
+       /**
+        * Updates an application user to have only the specified roles.
+        * 
+        * @param request
+        * @param extSysUser
+        * @return PortalRestResponse with appropriate status value and message
+        */
+       @ApiOperation(value = "Updates an application user to have only the specified roles.", response = PortalRestResponse.class)
+       @RequestMapping(value = { "/userProfile" }, method = RequestMethod.PUT, produces = "application/json")
+       public PortalRestResponse<String> putUserProfile(HttpServletRequest request,
+                       @RequestBody ExternalSystemUser extSysUser, HttpServletResponse response) {
+               ExternalRequestFieldsValidator reqResult = null;
+               try {
+                       logger.info(EELFLoggerDelegate.debugLogger, "putUserProfile: request received for app {}, user {}", 
+                                       extSysUser.getApplicationName(), extSysUser.getLoginId());
+                       validateExtSystemUser(extSysUser, true);
+                       reqResult = userRolesService.setExternalRequestUserAppRole(extSysUser, "PUT");
+                        if (!reqResult.isResult())
+                                       throw new Exception(reqResult.getDetailMessage());
+               } catch (Exception e) {
+                       logger.error(EELFLoggerDelegate.errorLogger, "putUserProfile: failed for app {}, user {}",
+                                       extSysUser.getApplicationName(), extSysUser.getLoginId(), e);
+                       if(reqResult == null || (!reqResult.isResult()  && !e.getMessage().contains("404"))){
+                               response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR,
+                                               e.getMessage(), "save user profile failed"); 
+                   } else if(e.getMessage().contains("404")){
+                               response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR,
+                                               e.getMessage(), "save user profile failed");
+                       } else{
+                               response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR,
+                                               e.getMessage(), "save user profile failed");
+                       }
+               }
+               return new PortalRestResponse<String>(PortalRestStatusEnum.OK, reqResult.getDetailMessage() , "Success");
+       }
+
+       /**
+        * Deletes an application user by removing all assigned roles.
+        * 
+        * @param request
+        * @param extSysUser
+        *            This object must have zero roles.
+        * @return PortalRestResponse with appropriate status value and message
+        */
+       @ApiOperation(value = "Processes a request to delete one or more application roles for one      specified user who has roles.", response = PortalRestResponse.class)
+       @RequestMapping(value = { "/userProfile" }, method = RequestMethod.DELETE, produces = "application/json")
+       public PortalRestResponse<String> deleteUserProfile(HttpServletRequest request,
+                       @RequestBody ExternalSystemUser extSysUser, HttpServletResponse response) {
+               ExternalRequestFieldsValidator reqResult  = null;
+               try {
+                       logger.info(EELFLoggerDelegate.debugLogger, "deleteUserProfile: request received for app {}, user {}", 
+                                       extSysUser.getApplicationName(), extSysUser.getLoginId());
+                       validateExtSystemUser(extSysUser, false);
+                       // Ignore any roles that might be mistakenly present in the request
+                       extSysUser.setRoles(new ArrayList<ExternalSystemRoleApproval>());
+                       reqResult = userRolesService.setExternalRequestUserAppRole(extSysUser, "DELETE");
+                        if (!reqResult.isResult())
+                                       throw new Exception(reqResult.getDetailMessage());
+               } catch (Exception e) {
+                       logger.error(EELFLoggerDelegate.errorLogger, "deleteUserProfile: failed for app {}, user {}",
+                                       extSysUser.getApplicationName(), extSysUser.getLoginId(), e);
+                       if(reqResult == null || (!reqResult.isResult()  && !e.getMessage().contains("404"))){
+                               response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR,
+                                               e.getMessage(), "delete user profile failed"); 
+                   }else if(e.getMessage().contains("404")){
+                               response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR,
+                                               e.getMessage(), "delete user profile failed");
+                       } else{
+                               response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+                               return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR,
+                                               e.getMessage(), "delete user profile failed");
+                       }
+               }
+               return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Deleted Successfully", "Success");
+       }
+
+       /**
+        * Checks for presence of required fields.
+        * 
+        * @param extSysUser
+        * @param rolesRequired
+        *            If true, checks whether roles are present
+        * @throws Exception
+        *             If any field is missing.
+        */
+       private void validateExtSystemUser(ExternalSystemUser extSysUser, boolean rolesRequired) throws Exception {
+               if (extSysUser.getLoginId() == null || extSysUser.getLoginId() == "")
+                       throw new Exception("Request has no login ID");
+               if (extSysUser.getApplicationName() == null || extSysUser.getApplicationName() == "")
+                       throw new Exception("Request has no application name");
+               if (extSysUser.getMyloginrequestId() == null)
+                       throw new Exception("Request has no request ID");
+               if (rolesRequired && (extSysUser.getRoles() == null || extSysUser.getRoles().size() == 0))
+                       throw new Exception("Request has no roles");
+       }
+
+}
\ No newline at end of file