From 91d04c64771832a0b8815ffbe1f0f9920320d94d Mon Sep 17 00:00:00 2001 From: Pamela Dragosh Date: Tue, 14 Feb 2017 19:41:00 -0500 Subject: Initial OpenECOMP policy/engine commit Change-Id: I7dbff37733b661643dd4d1caefa3d7dccc361b6e Signed-off-by: Pamela Dragosh --- .../portalapp/service/AdminAuthExtension.java | 84 +++++ .../service/OnBoardingApiServiceImplPolicy.java | 348 +++++++++++++++++++++ 2 files changed, 432 insertions(+) create mode 100644 ecomp-sdk-app/src/main/java/org/openecomp/portalapp/service/AdminAuthExtension.java create mode 100644 ecomp-sdk-app/src/main/java/org/openecomp/portalapp/service/OnBoardingApiServiceImplPolicy.java (limited to 'ecomp-sdk-app/src/main/java/org/openecomp/portalapp/service') diff --git a/ecomp-sdk-app/src/main/java/org/openecomp/portalapp/service/AdminAuthExtension.java b/ecomp-sdk-app/src/main/java/org/openecomp/portalapp/service/AdminAuthExtension.java new file mode 100644 index 000000000..1b9e020c5 --- /dev/null +++ b/ecomp-sdk-app/src/main/java/org/openecomp/portalapp/service/AdminAuthExtension.java @@ -0,0 +1,84 @@ +/*- + * ============LICENSE_START======================================================= + * ECOMP Policy Engine + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.portalapp.service; + + +import org.openecomp.policy.dao.RolesDao; +import org.openecomp.policy.model.Roles; +import org.openecomp.policy.rest.dao.UserInfoDao; +import org.openecomp.policy.rest.jpa.UserInfo; +import org.openecomp.portalsdk.core.domain.Role; +import org.openecomp.portalsdk.core.domain.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import org.openecomp.policy.common.logging.flexlogger.FlexLogger; +import org.openecomp.policy.common.logging.flexlogger.Logger; + +@Service("adminAuthExtension") +@Transactional +public class AdminAuthExtension { + + @Autowired + RolesDao rolesDAO; + + @Autowired + UserInfoDao userInfoDao; + + private static Logger logger = FlexLogger.getLogger(AdminAuthExtension.class); + public void saveUserExtension(User user){ + System.out.println("User Object Recieved"); + try{ + Roles roles = new Roles(); + roles.setName(user.getFullName()); + roles.setLoginId(user.getLoginId()); + if(user.getRoles() != null){ + rolesDAO.delete(roles); + for(Role role : user.getRoles()){ + if(role.getName().trim().equalsIgnoreCase("Policy Super Admin") || role.getName().trim().equalsIgnoreCase("System Administrator") || role.getName().trim().equalsIgnoreCase("Standard User") ){ + roles.setRole("super-admin"); + }else if(role.getName().trim().equalsIgnoreCase("Policy Super Editor")){ + roles.setRole("super-editor"); + }else if(role.getName().trim().equalsIgnoreCase("Policy Super Guest")){ + roles.setRole("super-guest"); + }else if(role.getName().trim().equalsIgnoreCase("Policy Admin")){ + roles.setRole("admin"); + }else if(role.getName().trim().equalsIgnoreCase("Policy Editor")){ + roles.setRole("editor"); + }else if(role.getName().trim().equalsIgnoreCase("Policy Guest")){ + roles.setRole("guest"); + } + rolesDAO.save(roles); + } + } + + UserInfo userInfo = new UserInfo(); + userInfo.setUserLoginId(user.getLoginId()); + userInfo.setUserName(user.getFullName()); + userInfoDao.save(userInfo); + } + catch(Exception e){ + logger.error("Exception caused while Setting role to Policy DB"+e); + } + } + +} diff --git a/ecomp-sdk-app/src/main/java/org/openecomp/portalapp/service/OnBoardingApiServiceImplPolicy.java b/ecomp-sdk-app/src/main/java/org/openecomp/portalapp/service/OnBoardingApiServiceImplPolicy.java new file mode 100644 index 000000000..083c57683 --- /dev/null +++ b/ecomp-sdk-app/src/main/java/org/openecomp/portalapp/service/OnBoardingApiServiceImplPolicy.java @@ -0,0 +1,348 @@ +/*- + * ============LICENSE_START======================================================= + * ECOMP Policy Engine + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + + +package org.openecomp.portalapp.service; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +import javax.servlet.http.HttpServletRequest; + +import org.openecomp.portalsdk.core.domain.Role; +import org.openecomp.portalsdk.core.domain.User; +import org.openecomp.portalsdk.core.domain.UserApp; +import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.openecomp.portalsdk.core.onboarding.client.AppContextManager; +import org.openecomp.portalsdk.core.onboarding.crossapi.IPortalRestAPIService; +import org.openecomp.portalsdk.core.onboarding.crossapi.PortalAPIException; +import org.openecomp.portalsdk.core.onboarding.crossapi.PortalTimeoutHandler; +import org.openecomp.portalsdk.core.restful.domain.EcompRole; +import org.openecomp.portalsdk.core.restful.domain.EcompUser; +import org.openecomp.portalsdk.core.service.RoleService; +import org.openecomp.portalsdk.core.service.UserProfileService; +import org.openecomp.portalsdk.core.service.WebServiceCallService; +import org.openecomp.portalsdk.core.util.JSONUtil; +import org.openecomp.portalsdk.core.util.SystemProperties; +import org.openecomp.portalsdk.core.web.support.UserUtils; +import org.slf4j.MDC; + + +public class OnBoardingApiServiceImplPolicy implements IPortalRestAPIService { + RoleService roleService; + UserProfileService userProfileService; + AdminAuthExtension adminAuthExtension; + + EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(OnBoardingApiServiceImplPolicy.class); + + public OnBoardingApiServiceImplPolicy(){ + roleService = AppContextManager.getAppContext().getBean(RoleService.class); + userProfileService = AppContextManager.getAppContext().getBean(UserProfileService.class); + adminAuthExtension = AppContextManager.getAppContext().getBean(AdminAuthExtension.class); + } + + private void setCurrentAttributes(User user, EcompUser userJson){ + user.setEmail(userJson.getEmail()); + user.setFirstName(userJson.getFirstName()); + user.setHrid(userJson.getHrid()); + user.setJobTitle(userJson.getJobTitle()); + user.setLastName(userJson.getLastName()); + user.setLoginId(userJson.getLoginId()); + user.setOrgManagerUserId(userJson.getOrgManagerUserId()); + user.setMiddleInitial(userJson.getMiddleInitial()); + user.setOrgCode(userJson.getOrgCode()); + user.setOrgId(userJson.getOrgId()); + user.setPhone(userJson.getPhone()); + user.setOrgUserId(userJson.getOrgUserId()); + user.setActive(userJson.isActive()); + } + + + @Override + public void pushUser(EcompUser userJson) throws PortalAPIException { + + logger.debug(EELFLoggerDelegate.debugLogger, "pushUser was invoked" + userJson); + + User user = new User(); + String response = ""; + + logger.debug(EELFLoggerDelegate.debugLogger, "## REST API ## userJson: " + userJson); + + try { + + //Set input attributes to the object about to be saved + setCurrentAttributes(user, userJson); + + user.setRoles(new TreeSet()); + user.setUserApps(new TreeSet()); + user.setPseudoRoles(new TreeSet()); + + userProfileService.saveUser(user); + adminAuthExtension.saveUserExtension(user); + logger.debug(EELFLoggerDelegate.debugLogger, "push user success."); + response = "push user success."; + response = JSONUtil.convertResponseToJSON(response); + } catch (Exception e) { + e.printStackTrace(); + response = "push user failed with error: " + e.getMessage(); + logger.error(EELFLoggerDelegate.debugLogger, response); + logger.error(EELFLoggerDelegate.errorLogger, "Error happened during OnboardingApiService.pushUser operation: " + response); + logger.error(EELFLoggerDelegate.debugLogger, "Error happened during OnboardingApiService.pushUser operation: " + response); + logger.info(EELFLoggerDelegate.metricsLogger, "OnboardingApiService.pushUser operation has failed."); + throw new PortalAPIException(response, e); + }finally { + MDC.remove(SystemProperties.MDC_TIMER); + } + } + + @Override + public void editUser(String loginId, EcompUser userJson) throws PortalAPIException { + + logger.debug(EELFLoggerDelegate.debugLogger, "OnboardingApi editUser was invoked" + userJson); + + User editUser = new User(); + String response = ""; + logger.debug(EELFLoggerDelegate.debugLogger, "## REST API ## loginId: " + loginId); + logger.debug(EELFLoggerDelegate.debugLogger, "## REST API ## userJson: " + userJson); + + try { + + setCurrentAttributes(editUser, userJson); + + if (editUser.getOrgUserId() != null) { + editUser.setLoginId(editUser.getOrgUserId()); + } + + User domainUser = userProfileService.getUserByLoginId(loginId); + if (domainUser != null) + domainUser = JSONUtil.mapToDomainUser(domainUser, editUser); + else + domainUser = editUser; + userProfileService.saveUser(domainUser); + adminAuthExtension.saveUserExtension(domainUser); + + logger.debug(EELFLoggerDelegate.debugLogger, "edit user success."); + response = "edit user success."; + response = JSONUtil.convertResponseToJSON(response); + } catch (Exception e) { + e.printStackTrace(); + response = "edit user failed with error: " + e.getMessage(); + logger.error(EELFLoggerDelegate.errorLogger, response); + logger.error(EELFLoggerDelegate.debugLogger, "Error happened during OnboardingApiService.editUser operation: " + response); + logger.error(EELFLoggerDelegate.errorLogger, "Error happened during OnboardingApiService.editUser operation: " + response); + throw new PortalAPIException(response, e); + }finally { + MDC.remove(SystemProperties.MDC_TIMER); + } + + //return response; + } + + @Override + public EcompUser getUser(String loginId) throws PortalAPIException { + try{ + logger.debug(EELFLoggerDelegate.debugLogger, "## REST API ## loginId: " + loginId); + + User user = userProfileService.getUserByLoginId(loginId); + + if(user == null){ + logger.info(EELFLoggerDelegate.debugLogger, "User + " + loginId + " doesn't exist"); + return null; + } + else + return UserUtils.convertToEcompUser(user); + } + catch(Exception e){ + logger.error(EELFLoggerDelegate.errorLogger, e.getMessage()); + return null; + } + + } + + @Override + public List getUsers() throws PortalAPIException { + + + String response = ""; + + try { + + List users = userProfileService.findAllActive(); + List ecompUsers = new ArrayList(); + for(User user : users) + ecompUsers.add(UserUtils.convertToEcompUser(user)); + + return ecompUsers; + + } + catch (Exception pe){ + + response = "getUsers failed with error: " + pe.getMessage(); + pe.printStackTrace(); + logger.error(EELFLoggerDelegate.debugLogger, response); + logger.error(EELFLoggerDelegate.errorLogger, response); + throw new PortalAPIException(response, pe); + } + + + } + + @Override + public List getAvailableRoles() throws PortalAPIException{ + + String response = ""; + + try{ + List roles = roleService.getActiveRoles(); + List ecompRoles = new ArrayList(); + + for(Role role : roles) + ecompRoles.add(UserUtils.convertToEcompRole(role)); + + return ecompRoles; + + } + catch (Exception pe){ + response = "getUsers failed with error: " + pe.getMessage(); + pe.printStackTrace(); + logger.error(EELFLoggerDelegate.debugLogger, response); + logger.error(EELFLoggerDelegate.errorLogger, response); + throw new PortalAPIException(response, pe); + } + } + + @Override + public void pushUserRole(String loginId, List rolesJson) throws PortalAPIException { + + + String response = ""; + try { + logger.debug(EELFLoggerDelegate.debugLogger, "## REST API ## loginId: " + loginId); + logger.debug(EELFLoggerDelegate.debugLogger, "## REST API ## rolesJson: " + rolesJson); + User user = userProfileService.getUserByLoginId(loginId); + + SortedSet roles = new TreeSet(); + for (EcompRole role : rolesJson) { + roles.add(roleService.getRole(role.getId())); + } + // Replace existing roles with new ones + replaceExistingRoles(roles, user); + + logger.debug(EELFLoggerDelegate.debugLogger, "push user role success."); + response = "push user role success."; + response = JSONUtil.convertResponseToJSON(response); + + } catch (Exception e) { + response = "pushUserRole failed with error: " + e.getMessage(); + e.printStackTrace(); + logger.error(EELFLoggerDelegate.debugLogger, response); + logger.error(EELFLoggerDelegate.errorLogger, response); + throw new PortalAPIException(response, e); + }finally { + MDC.remove(SystemProperties.MDC_TIMER); + } + + } + + @Override + public List getUserRoles(String loginId) throws PortalAPIException { + + logger.debug(EELFLoggerDelegate.debugLogger, "## REST API ## loginId: " + loginId); + + List ecompRoles = new ArrayList(); + try { + + + User user = userProfileService.getUserByLoginId(loginId); + + SortedSet currentRoles = null; + if(user != null){ + + currentRoles = user.getRoles(); + + if(currentRoles != null) + for(Role role : currentRoles) + ecompRoles.add(UserUtils.convertToEcompRole(role)); + } + return ecompRoles; + } + catch (Exception e){ + String response = "getUserRoles failed with error: " + e.getMessage(); + e.printStackTrace(); + logger.error(EELFLoggerDelegate.debugLogger, response); + logger.debug(EELFLoggerDelegate.errorLogger, response); + throw new PortalAPIException(response, e); + } + } + + private void replaceExistingRoles(SortedSet roles, User user) { + // 1. remove existing roles + Set userApps = user.getUserApps(); + Iterator appsItr = (Iterator) userApps.iterator(); + while (appsItr.hasNext()) { + UserApp tempUserApp = (UserApp)appsItr.next(); + boolean roleFound = false; + for (Role role : roles) { + if (tempUserApp.getRole().getId().equals(role.getId())) { + roleFound = true; + break; + } + } + if (!roleFound) + appsItr.remove(); + } + user.setUserApps(userApps); + userProfileService.saveUser(user); + + // 2. add new roles + user.setRoles(roles); + userProfileService.saveUser(user); + adminAuthExtension.saveUserExtension(user); + } + + + @Override + public boolean isAppAuthenticated(HttpServletRequest request) throws PortalAPIException { + WebServiceCallService securityService = AppContextManager.getAppContext().getBean(WebServiceCallService.class); + try { + String appUser = request.getHeader("username"); + String password = request.getHeader("password"); + boolean flag = securityService.verifyRESTCredential(null, appUser, password); + return flag; + + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "Failed to authenticate" + e.getMessage()); + throw new PortalAPIException("Failed to authenticate: " + e.getMessage()); + } + + } + + public String getSessionTimeOuts() throws Exception{ + return PortalTimeoutHandler.gatherSessionExtensions(); + } + + public void updateSessionTimeOuts(String sessionMap) throws Exception{ + PortalTimeoutHandler.updateSessionExtensions(sessionMap); + } +} -- cgit 1.2.3-korg