import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
-import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.SortedSet;
import java.util.stream.Collectors;
import javax.persistence.EntityManager;
-import javax.persistence.Query;
import javax.persistence.Tuple;
import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.lang.StringUtils;
import org.apache.cxf.transport.http.HTTPException;
-import org.hibernate.Session;
-import org.hibernate.SessionFactory;
-import org.hibernate.Transaction;
import org.onap.portal.dao.fn.FnUserRoleDao;
import org.onap.portal.domain.db.ep.EpUserRolesRequest;
import org.onap.portal.domain.db.ep.EpUserRolesRequestDet;
import org.onap.portal.domain.dto.ecomp.EPUserAppCatalogRoles;
import org.onap.portal.domain.dto.ecomp.ExternalSystemAccess;
import org.onap.portal.domain.dto.transport.AppWithRolesForUser;
-import org.onap.portal.domain.dto.transport.ExternalAccessUserRoleDetail;
import org.onap.portal.domain.dto.transport.FieldsValidator;
import org.onap.portal.domain.dto.transport.RemoteRole;
import org.onap.portal.domain.dto.transport.RemoteUserWithRoles;
+import org.onap.portal.domain.dto.transport.Role;
import org.onap.portal.domain.dto.transport.RoleInAppForUser;
import org.onap.portal.domain.dto.transport.UserApplicationRoles;
-import org.onap.portal.exception.SyncUserRolesException;
-import org.onap.portal.logging.format.EPAppMessagesEnum;
-import org.onap.portal.logging.logic.EPLogUtil;
import org.onap.portal.service.ApplicationsRestClientService;
-import org.onap.portal.service.ExternalAccessRolesService;
+import org.onap.portal.service.ep.EpAppFunctionService;
import org.onap.portal.service.ep.EpUserRolesRequestDetService;
import org.onap.portal.service.ep.EpUserRolesRequestService;
import org.onap.portal.utils.EPCommonSystemProperties;
-import org.onap.portal.utils.EcompPortalUtils;
import org.onap.portal.utils.PortalConstants;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.portalsdk.core.restful.domain.EcompRole;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.client.RestTemplate;
@Service
@Transactional
private static final String USER_APP_CATALOG_ROLES =
"select\n"
+ " A.reqId as reqId,\n"
- + " B.requestedRoleId.roleId as requestedRoleId,\n"
+ + " B.requestedRoleId.id as requestedRoleId,\n"
+ " A.requestStatus as requestStatus,\n"
- + " A.appId.appId as appId,\n"
+ + " A.appId.id as appId,\n"
+ " (\n"
+ " select\n"
+ " roleName\n"
+ " from\n"
+ " FnRole\n"
+ " where\n"
- + " roleId = B.requestedRoleId.roleId\n"
+ + " id = B.requestedRoleId.id\n"
+ " ) as roleName\n"
+ "from\n"
+ " EpUserRolesRequest A\n"
+ " left join EpUserRolesRequestDet B on A.reqId = B.reqId.reqId\n"
+ "where\n"
- + " A.userId.userId = :userid\n"
+ + " A.userId.id = :userid\n"
+ " and A.appId IN (\n"
+ " select\n"
- + " appId\n"
+ + " id\n"
+ " from\n"
+ " FnApp\n"
+ " where\n"
+ " )\n"
+ " and A.requestStatus = 'P'\n";
- private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnUserRoleService.class);
+ private final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnUserRoleService.class);
private final FnUserRoleDao fnUserRoleDao;
private final FnAppService fnAppService;
return fnUserRoleDao.getAdminUserRoles(userId, roleId, appId).orElse(new ArrayList<>());
}
- public boolean isSuperAdmin(final String orgUserId, final Long roleId, final Long appId) {
+ public boolean isSuperAdmin(final String loginId, final Long roleId, final Long appId) {
List<FnUserRole> roles = getUserRolesForRoleIdAndAppId(roleId, appId).stream()
- .filter(role -> role.getUserId().getOrgUserId().equals(orgUserId)).collect(Collectors.toList());
+ .filter(role -> role.getUserId().getOrgUserId().equals(loginId)).collect(Collectors.toList());
return !roles.isEmpty();
}
- private List<FnUserRole> getUserRolesForRoleIdAndAppId(final Long roleId, final Long appId) {
- return Optional.of(fnUserRoleDao.getUserRolesForRoleIdAndAppId(roleId, appId)).orElse(new ArrayList<>());
+ public List<FnUserRole> getUserRolesForRoleIdAndAppId(final Long roleId, final Long appId) {
+ return Optional.of(fnUserRoleDao.retrieveByAppIdAndRoleId(appId, roleId)).orElse(new ArrayList<>());
+ }
+
+ public List<FnUserRole> retrieveByUserIdAndRoleId(final Long userId, final Long roleId){
+ return Optional.of(fnUserRoleDao.retrieveByUserIdAndRoleId(userId, roleId)).orElse(new ArrayList<>());
}
public FnUserRole saveOne(final FnUserRole fnUserRole) {
public List<EPUserAppCatalogRoles> getUserAppCatalogRoles(FnUser userid, String appName) {
List<Tuple> tuples = entityManager.createQuery(USER_APP_CATALOG_ROLES, Tuple.class)
- .setParameter("userid", userid.getUserId())
+ .setParameter("userid", userid.getId())
.setParameter("appName", appName)
.getResultList();
return Optional.of(tuples.stream().map(this::tupleToEPUserAppCatalogRoles).collect(Collectors.toList()))
public void deleteById(final Long id) {
fnUserRoleDao.deleteById(id);
}
+
+ public List<RoleInAppForUser> constructRolesInAppForUserGet(List<Role> appRoles, FnRole[] userAppRoles,
+ Boolean extRequestValue) {
+ List<RoleInAppForUser> rolesInAppForUser = new ArrayList<>();
+
+ Set<Long> userAppRolesMap = new HashSet<>();
+ if (userAppRoles != null) {
+ for (FnRole ecompRole : userAppRoles) {
+ userAppRolesMap.add(ecompRole.getAppId());
+ }
+ logger.debug(EELFLoggerDelegate.debugLogger, "In constructRolesInAppForUserGet() - userAppRolesMap = {}",
+ userAppRolesMap);
+
+ } else {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "constructRolesInAppForUserGet has received userAppRoles list empty.");
+ }
+
+ if (appRoles != null) {
+ for (Role ecompRole : appRoles) {
+ logger.debug(EELFLoggerDelegate.debugLogger, "In constructRolesInAppForUserGet() - appRoles not null = {}",
+ ecompRole);
+
+ if (ecompRole.getId().equals(PortalConstants.ACCOUNT_ADMIN_ROLE_ID) && !extRequestValue) {
+ continue;
+ }
+ RoleInAppForUser roleForUser = new RoleInAppForUser(ecompRole.getId(), ecompRole.getRoleName());
+ roleForUser.setIsApplied(userAppRolesMap.contains(ecompRole.getId()));
+ rolesInAppForUser.add(roleForUser);
+ logger.debug(EELFLoggerDelegate.debugLogger, "In constructRolesInAppForUserGet() - rolesInAppForUser = {}",
+ rolesInAppForUser);
+
+ }
+ } else {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "constructRolesInAppForUser has received appRoles list empty.");
+ }
+ return rolesInAppForUser;
+ }
+
+ public List<RoleInAppForUser> constructRolesInAppForUserGet(EcompRole[] appRoles, EcompRole[] userAppRoles) {
+ List<RoleInAppForUser> rolesInAppForUser = new ArrayList<>();
+
+ Set<Long> userAppRolesMap = new HashSet<>();
+ if (userAppRoles != null) {
+ for (EcompRole ecompRole : userAppRoles) {
+ userAppRolesMap.add(ecompRole.getId());
+ }
+ } else {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "constructRolesInAppForUserGet has received userAppRoles list empty");
+ }
+
+ if (appRoles != null) {
+ for (EcompRole ecompRole : appRoles) {
+ RoleInAppForUser roleForUser = new RoleInAppForUser(ecompRole.getId(), ecompRole.getName());
+ roleForUser.setIsApplied(userAppRolesMap.contains(ecompRole.getId()));
+ rolesInAppForUser.add(roleForUser);
+ }
+ } else {
+ logger.error(EELFLoggerDelegate.errorLogger, "constructRolesInAppForUser has received appRoles list empty");
+ }
+ return rolesInAppForUser;
+ }
}