1 package org.openecomp.portalapp.portal.controller;
 
   4 import java.util.ArrayList;
 
   7 import javax.servlet.http.HttpServletRequest;
 
   8 import javax.servlet.http.HttpServletResponse;
 
  10 import org.openecomp.portalapp.portal.domain.CentralRoleFunction;
 
  11 import org.openecomp.portalapp.portal.domain.EPApp;
 
  12 import org.openecomp.portalapp.portal.ecomp.model.PortalRestResponse;
 
  13 import org.openecomp.portalapp.portal.ecomp.model.PortalRestStatusEnum;
 
  14 import org.openecomp.portalapp.portal.logging.aop.EPAuditLog;
 
  15 import org.openecomp.portalapp.portal.service.ExternalAccessRolesService;
 
  16 import org.openecomp.portalapp.portal.transport.CentralRole;
 
  17 import org.openecomp.portalsdk.core.domain.Role;
 
  18 import org.openecomp.portalsdk.core.domain.RoleFunction;
 
  19 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
 
  20 import org.springframework.beans.factory.annotation.Autowired;
 
  21 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 
  22 import org.springframework.web.bind.annotation.PathVariable;
 
  23 import org.springframework.web.bind.annotation.RequestBody;
 
  24 import org.springframework.web.bind.annotation.RequestMapping;
 
  25 import org.springframework.web.bind.annotation.RequestMethod;
 
  26 import org.springframework.web.bind.annotation.RestController;
 
  27 import org.springframework.web.client.HttpClientErrorException;
 
  29 import com.fasterxml.jackson.databind.ObjectMapper;
 
  31 import io.swagger.annotations.ApiOperation;
 
  34 @RequestMapping("/auxapi")
 
  35 @org.springframework.context.annotation.Configuration
 
  36 @EnableAspectJAutoProxy
 
  38 public class ExternalAccessRolesController implements BasicAuthenticationController {
 
  40         private static final String UEBKEY = "uebkey";
 
  42         private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ExternalAccessRolesController.class);
 
  45         private ExternalAccessRolesService externalAccessRolesService;
 
  47         @ApiOperation(value = "Gets user role for an application.", response = String.class, responseContainer="List")
 
  48         @RequestMapping(value = {
 
  49                         "/user/{loginId}" }, method = RequestMethod.GET, produces = "application/json")
 
  50         public String getUser(HttpServletRequest request, HttpServletResponse response, @PathVariable("loginId") String loginId) throws Exception {
 
  54                         answer = externalAccessRolesService.getUser(loginId, request.getHeader(UEBKEY));
 
  55                 } catch (Exception e) {
 
  56                         logger.error(EELFLoggerDelegate.errorLogger, "getUser failed", e);
 
  61         @ApiOperation(value = "Gets roles for an application.", response = CentralRole.class, responseContainer="Json")
 
  62         @RequestMapping(value = {
 
  63                         "/roles" }, method = RequestMethod.GET, produces = "application/json")
 
  64         public List<CentralRole> getRolesForApp(HttpServletRequest request, HttpServletResponse response) throws Exception {
 
  65                 logger.debug(EELFLoggerDelegate.debugLogger, "Request received for getRolesForApp");
 
  66                 List<EPApp> applicationList=new ArrayList<>();
 
  67                 applicationList = externalAccessRolesService.getApp(request.getHeader(UEBKEY));
 
  68                 EPApp app = applicationList.get(0);
 
  69         externalAccessRolesService.SyncApplicationRolesWithEcompDB(app);
 
  70                 List<CentralRole> answer = null;
 
  72                         answer = externalAccessRolesService.getRolesForApp(request.getHeader(UEBKEY));
 
  73                 } catch (HttpClientErrorException e) {
 
  74                         if("Application not found".equalsIgnoreCase(e.getMessage())){
 
  75                                 response.setStatus(HttpServletResponse.SC_NOT_FOUND);
 
  77                         response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
 
  78                         logger.error(EELFLoggerDelegate.errorLogger, "getRolesForApp failed", e);
 
  80                 logger.debug(EELFLoggerDelegate.debugLogger, "Request completed for getRolesForApp");
 
  84         @ApiOperation(value = "Gets all role functions for an application.", response = CentralRoleFunction.class, responseContainer="Json")
 
  85         @RequestMapping(value = {
 
  86                         "/functions" }, method = RequestMethod.GET, produces = "application/json")
 
  87         public List<CentralRoleFunction> getRoleFunctionsList(HttpServletRequest request, HttpServletResponse response) throws Exception {
 
  88                 List<CentralRoleFunction> answer = null;
 
  89                 logger.debug(EELFLoggerDelegate.debugLogger, "Request received for getRoleFunctionsList");
 
  91                         answer = externalAccessRolesService.getRoleFuncList(request.getHeader(UEBKEY));
 
  92                 } catch (HttpClientErrorException e) {
 
  93                         response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
 
  94                         logger.error(EELFLoggerDelegate.errorLogger, "getRoleFunctionsList failed", e);
 
  96                 logger.debug(EELFLoggerDelegate.debugLogger, "Request completed for getRoleFunctionsList");
 
 100         @ApiOperation(value = "Gets role information for an application.", response = CentralRole.class, responseContainer="Json")
 
 101         @RequestMapping(value = {
 
 102                         "/role/{role_id}" }, method = RequestMethod.GET, produces = "application/json")
 
 103         public CentralRole getRoleInfo(HttpServletRequest request, HttpServletResponse response, @PathVariable("role_id") Long roleId) throws Exception {
 
 104                 CentralRole answer = null;
 
 105                 logger.debug(EELFLoggerDelegate.debugLogger, "Request received for getRoleInfo");
 
 108                         answer = externalAccessRolesService.getRoleInfo(roleId, request.getHeader(UEBKEY));
 
 109                 } catch (HttpClientErrorException e) {
 
 110                         response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
 
 111                         logger.error(EELFLoggerDelegate.errorLogger, "getRoleInfo failed", e);
 
 113                 logger.debug(EELFLoggerDelegate.debugLogger, "Request completed for getRoleInfo");
 
 117         @ApiOperation(value = "Gets role information for an application provided by function code.", response = CentralRoleFunction.class, responseContainer = "Json")
 
 118         @RequestMapping(value = { "/function/{code}" }, method = RequestMethod.GET, produces = "application/json")
 
 119         public CentralRoleFunction getRoleFunction(HttpServletRequest request, HttpServletResponse response,
 
 120                         @PathVariable("code") String code) throws Exception {
 
 121                 CentralRoleFunction centralRoleFunction = null;
 
 123                         centralRoleFunction = externalAccessRolesService.getRoleFunction(code, request.getHeader(UEBKEY));
 
 124                 } catch (HttpClientErrorException e) {
 
 125                         response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
 
 126                         logger.error(EELFLoggerDelegate.errorLogger, "getRoleInfo failed", e);
 
 128                 return centralRoleFunction;
 
 131         @ApiOperation(value = "Saves role function for an application.", response = PortalRestResponse.class, responseContainer = "Json")
 
 132         @RequestMapping(value = { "/roleFunction" }, method = RequestMethod.POST, produces = "application/json")
 
 133         public PortalRestResponse<String> saveRoleFunction(HttpServletRequest request, HttpServletResponse response,
 
 134                         @RequestBody String roleFunc) throws Exception {
 
 136                 ObjectMapper mapper = new ObjectMapper();
 
 137                 List<EPApp> applicationList = externalAccessRolesService.getApp(request.getHeader(UEBKEY));
 
 138                 EPApp requestedApp = applicationList.get(0);
 
 139                 Long appId = requestedApp.getId();
 
 141                          String data = roleFunc;
 
 142                         CentralRoleFunction availableRoleFunction = mapper.readValue(data, CentralRoleFunction.class);
 
 143                         availableRoleFunction.setAppId(appId);
 
 144                         externalAccessRolesService.saveCentralRoleFunction(availableRoleFunction, requestedApp);
 
 145                 } catch (Exception e) {
 
 146                         logger.error(EELFLoggerDelegate.errorLogger, "saveRoleFunction failed", e);
 
 147                         return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, e.getMessage(), "Failed");
 
 149                 return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully Saved", "Success");
 
 152         @ApiOperation(value = "Deletes role function for an application.", response = PortalRestResponse.class, responseContainer = "Json")
 
 153         @RequestMapping(value = { "/roleFunction/{code}" }, method = RequestMethod.DELETE, produces = "application/json")
 
 154         public  PortalRestResponse<String> deleteRoleFunction(HttpServletRequest request, HttpServletResponse response, @PathVariable("code") String code) throws Exception {
 
 156                         externalAccessRolesService.deleteCentralRoleFunction(code, request.getHeader(UEBKEY));
 
 157                 } catch (HttpClientErrorException e) {
 
 158                         response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
 
 159                         logger.error(EELFLoggerDelegate.errorLogger, "deleteRoleFunction failed", e);
 
 160                         return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to deleteRoleFunction", "Failed");
 
 162                 return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully Deleted", "Success");
 
 166         @ApiOperation(value = "Saves role for an application.", response = PortalRestResponse.class, responseContainer = "Json")
 
 167         @RequestMapping(value = { "/role" }, method = RequestMethod.POST, produces = "application/json")
 
 168         public PortalRestResponse<String> saveRole(HttpServletRequest request, HttpServletResponse response,
 
 169                         @RequestBody Role role) throws Exception {
 
 171                         externalAccessRolesService.saveRoleForApplication(role,request.getHeader(UEBKEY));
 
 172                 } catch (Exception e) {
 
 173                         response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
 
 174                         logger.error(EELFLoggerDelegate.errorLogger, "saveRole failed", e);
 
 175                         return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to saveRole", "Failed");
 
 177                 return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully Saved", "Success");
 
 180         @ApiOperation(value = "Deletes role for an application.", response = PortalRestResponse.class, responseContainer = "Json")
 
 181         @RequestMapping(value = { "/deleteRole/{code}" }, method = RequestMethod.DELETE, produces = "application/json")
 
 182         public  PortalRestResponse<String> deleteRole(HttpServletRequest request, HttpServletResponse response,
 
 183                         @PathVariable String code) throws Exception {
 
 185                         externalAccessRolesService.deleteRoleForApplication(code, request.getHeader(UEBKEY));
 
 186                 } catch (Exception e) {
 
 187                         response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
 
 188                         logger.error(EELFLoggerDelegate.errorLogger, "deleteRole failed", e);
 
 189                         return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to deleteRole", "Failed");
 
 191                 return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully Deleted", "Success");
 
 195         @ApiOperation(value = "Gets active roles for an application.", response = CentralRole.class, responseContainer = "Json")
 
 196         @RequestMapping(value = { "/activeRoles" }, method = RequestMethod.GET, produces = "application/json")
 
 197         public  List<CentralRole> getActiveRoles(HttpServletRequest request, HttpServletResponse response) throws Exception {
 
 198                 List<CentralRole> cenRole = null;
 
 200                         cenRole = externalAccessRolesService.getActiveRoles(request.getHeader(UEBKEY));
 
 201                 } catch (HttpClientErrorException e) {
 
 202                         response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
 
 203                         logger.error(EELFLoggerDelegate.errorLogger, "getActiveRoles failed", e);
 
 209         @ApiOperation(value = "deletes user roles for an application.", response = PortalRestResponse.class, responseContainer = "Json")
 
 210         @RequestMapping(value = { "/deleteDependcyRoleRecord/{roleId}" }, method = RequestMethod.DELETE, produces = "application/json")
 
 211         public  PortalRestResponse<String> deleteDependcyRoleRecord(HttpServletRequest request, HttpServletResponse response, @PathVariable("roleId") Long roleId) throws Exception {
 
 213                         externalAccessRolesService.deleteDependcyRoleRecord(roleId,request.getHeader(UEBKEY), request.getHeader("LoginId"));
 
 214                 } catch (HttpClientErrorException e) {
 
 215                         response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
 
 216                         logger.error(EELFLoggerDelegate.errorLogger, "deleteDependcyRoleRecord failed", e);
 
 217                         return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to deleteDependcyRoleRecord", "Failed");
 
 219                 return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully Deleted", "Success");
 
 222         @ApiOperation(value = "Bulk upload functions for an application.", response = PortalRestResponse.class, responseContainer = "Json")
 
 223         @RequestMapping(value = { "/upload/portal/functions" }, method = RequestMethod.POST, produces = "application/json")
 
 224         public  PortalRestResponse<String> bulkUploadFunctions(HttpServletRequest request, HttpServletResponse response) throws Exception {
 
 227                         result = externalAccessRolesService.bulkUploadFunctions(request.getHeader(UEBKEY));
 
 228                 } catch (HttpClientErrorException e) {
 
 229                         response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
 
 230                         logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadFunctions failed", e);
 
 231                         return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadFunctions", "Failed");
 
 233                 return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully added: "+result, "Success");
 
 236         @ApiOperation(value = "Bulk upload roles for an application.", response = PortalRestResponse.class, responseContainer = "Json")
 
 237         @RequestMapping(value = { "/upload/portal/roles" }, method = RequestMethod.POST, produces = "application/json")
 
 238         public  PortalRestResponse<String> bulkUploadRoles(HttpServletRequest request, HttpServletResponse response) throws Exception {
 
 241                         result = externalAccessRolesService.bulkUploadRoles(request.getHeader(UEBKEY));
 
 242                 } catch (HttpClientErrorException e) {
 
 243                         response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
 
 244                         logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadRoles failed", e);
 
 245                         return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadRoles", "Failed");
 
 247                 return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully added: "+result, "Success");
 
 250         @ApiOperation(value = "Bulk upload role functions for an application.", response = PortalRestResponse.class, responseContainer = "Json")
 
 251         @RequestMapping(value = { "/upload/portal/roleFunctions" }, method = RequestMethod.POST, produces = "application/json")
 
 252         public  PortalRestResponse<String> bulkUploadRoleFunctions(HttpServletRequest request, HttpServletResponse response) throws Exception {
 
 255                         result = externalAccessRolesService.bulkUploadRolesFunctions(request.getHeader(UEBKEY));
 
 256                 } catch (HttpClientErrorException e) {
 
 257                         response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
 
 258                         logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadRoleFunctions failed", e);
 
 259                         return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadRoleFunctions", "Failed");
 
 261                 return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully added: "+result, "Success");
 
 264         @ApiOperation(value = "Bulk upload user roles for an application.", response = PortalRestResponse.class, responseContainer = "Json")
 
 265         @RequestMapping(value = { "/upload/portal/userRoles" }, method = RequestMethod.POST, produces = "application/json")
 
 266         public  PortalRestResponse<String> bulkUploadUserRoles(HttpServletRequest request, HttpServletResponse response) throws Exception {
 
 269                         result = externalAccessRolesService.bulkUploadUserRoles(request.getHeader(UEBKEY));
 
 270                 } catch (HttpClientErrorException e) {
 
 271                         response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
 
 272                         logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadUserRoles failed", e);
 
 273                         return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadUserRoles", "Failed");
 
 275                 return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully added: "+result, "Success");
 
 278         @ApiOperation(value = "Bulk upload functions for an partner application.", response = PortalRestResponse.class, responseContainer = "Json")
 
 279         @RequestMapping(value = { "/upload/partner/functions" }, method = RequestMethod.POST, produces = "application/json")
 
 280         public  PortalRestResponse<String> bulkUploadPartnerFunctions(HttpServletRequest request, HttpServletResponse response, @RequestBody List<RoleFunction> upload) throws Exception {
 
 282                         externalAccessRolesService.bulkUploadPartnerFunctions(request.getHeader(UEBKEY), upload);
 
 283                 } catch (HttpClientErrorException e) {
 
 284                         response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
 
 285                         logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadFunctions failed", e);
 
 286                         return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadFunctions", "Failed");
 
 288                 return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully added", "Success");
 
 291         @ApiOperation(value = "Bulk upload roles for an partner application.", response = PortalRestResponse.class, responseContainer = "Json")
 
 292         @RequestMapping(value = { "/upload/partner/roles" }, method = RequestMethod.POST, produces = "application/json")
 
 293         public  PortalRestResponse<String> bulkUploadPartnerRoles(HttpServletRequest request, HttpServletResponse response, @RequestBody List<Role> upload) throws Exception {
 
 295                         externalAccessRolesService.bulkUploadPartnerRoles(request.getHeader(UEBKEY), upload);
 
 296                 } catch (HttpClientErrorException e) {
 
 297                         response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
 
 298                         logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadRoles failed", e);
 
 299                         return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadRoles", "Failed");
 
 301                 return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully added", "Success");
 
 304         @ApiOperation(value = "Bulk upload role functions for an partner application.", response = PortalRestResponse.class, responseContainer = "Json")
 
 305         @RequestMapping(value = { "/upload/partner/roleFunctions" }, method = RequestMethod.POST, produces = "application/json")
 
 306         public  PortalRestResponse<String> bulkUploadPartnerRoleFunctions(HttpServletRequest request, HttpServletResponse response, @RequestBody List<Role> upload) throws Exception {
 
 308                         externalAccessRolesService.bulkUploadPartnerRoleFunctions(request.getHeader(UEBKEY), upload);
 
 309                 } catch (HttpClientErrorException e) {
 
 310                         response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
 
 311                         logger.error(EELFLoggerDelegate.errorLogger, "bulkUploadRoles failed", e);
 
 312                         return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Failed to bulkUploadPartnerRoleFunctions", "Failed");
 
 314                 return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Successfully added", "Success");
 
 317         @ApiOperation(value = "Gets all functions along with global functions", response = List.class, responseContainer = "Json")
 
 318         @RequestMapping(value = { "/menuFunctions" }, method = RequestMethod.GET, produces = "application/json")
 
 319         public  List<String> getMenuFunctions(HttpServletRequest request, HttpServletResponse response) throws Exception {
 
 320                 List<String> functionsList = null;
 
 322                         functionsList = externalAccessRolesService.getMenuFunctionsList(request.getHeader(UEBKEY));
 
 323                 } catch (HttpClientErrorException e) {
 
 324                         response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
 
 325                         logger.error(EELFLoggerDelegate.errorLogger, "getMenuFunctions failed", e);
 
 327                 return functionsList;