diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/user/UserBusinessLogic.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/user/UserBusinessLogic.java | 78 |
1 files changed, 22 insertions, 56 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/user/UserBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/user/UserBusinessLogic.java index e1cac1c7ed..f90440011d 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/user/UserBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/user/UserBusinessLogic.java @@ -7,9 +7,9 @@ * 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. @@ -17,10 +17,19 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.openecomp.sdc.be.user; +import static org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum.ADD_USER; +import static org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum.GET_USERS_LIST; +import static org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum.UPDATE_USER; + import fj.data.Either; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.tinkerpop.gremlin.structure.Edge; @@ -41,17 +50,6 @@ import org.openecomp.sdc.common.log.wrappers.Logger; import org.openecomp.sdc.common.util.ThreadLocalsHolder; import org.openecomp.sdc.exception.ResponseFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -import static org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum.ADD_USER; -import static org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum.GET_USERS_LIST; -import static org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum.UPDATE_USER; - @org.springframework.stereotype.Component public class UserBusinessLogic { @@ -59,7 +57,6 @@ public class UserBusinessLogic { private static final String IN_CERTIFICATION_CHECKED_OUT = "in-certification/checked-out"; private static final String UNKNOWN = "UNKNOWN"; private static UserAdminValidator userAdminValidator = UserAdminValidator.getInstance(); - private final UserAdminOperation userAdminOperation; private final ComponentsUtils componentsUtils; private final UserOperation facadeUserOperation; @@ -91,7 +88,7 @@ public class UserBusinessLogic { handleUserAccessAuditing(userId, ActionStatus.USER_NOT_FOUND); throw new ByActionStatusComponentException(ActionStatus.USER_NOT_FOUND, userId); } - if (Objects.isNull(userContext.getUserRoles())){ + if (Objects.isNull(userContext.getUserRoles())) { userContext.setUserRoles(new HashSet<>()); } return convertUserContextToUser(userContext); @@ -110,11 +107,11 @@ public class UserBusinessLogic { public boolean hasActiveUser(String userId) { UserContext userContext = ThreadLocalsHolder.getUserContext(); - if (Objects.isNull(userContext) || Objects.isNull(userContext.getUserId()) ) { + if (Objects.isNull(userContext) || Objects.isNull(userContext.getUserId())) { handleUserAccessAuditing(userId, ActionStatus.USER_NOT_FOUND); return false; } - if (Objects.isNull(userContext.getUserRoles()) || userContext.getUserRoles().isEmpty()){ + if (Objects.isNull(userContext.getUserRoles()) || userContext.getUserRoles().isEmpty()) { handleUserAccessAuditing(userId, ActionStatus.USER_INACTIVE); return false; } @@ -122,25 +119,20 @@ public class UserBusinessLogic { } public User createUser(String modifierUserId, User newUser) { - User modifier = getValidModifier(modifierUserId, newUser.getUserId(), AuditingActionEnum.ADD_USER); - // verify user not exist String newUserId = newUser.getUserId(); Either<User, ActionStatus> eitherUserInDB = verifyNewUser(newUserId); newUser.setStatus(UserStatusEnum.ACTIVE); - validateEmail(newUser); - validateRole(newUser); - // handle last login if user is import if (newUser.getLastLoginTime() == null) { newUser.setLastLoginTime(0L); } - User createdUser; - if (ActionStatus.USER_INACTIVE.equals(eitherUserInDB.right().value())) { // user inactive - update state // exist + if (ActionStatus.USER_INACTIVE.equals(eitherUserInDB.right() + .value())) { // user inactive - update state // exist newUser.setLastLoginTime(0L); createdUser = userAdminOperation.updateUserData(newUser); } else { // user does not exist - create new user @@ -199,37 +191,32 @@ public class UserBusinessLogic { componentsUtils.auditAdminUserActionAndThrowException(ADD_USER, null, null, null, status, newUserId); } } - return eitherUserInDB; } private Either<User, ActionStatus> getUserData(String newUserId) { if (newUserId == null) { - log.error(EcompLoggerErrorCode.DATA_ERROR, "", "","Create user - new user id is missing"); + log.error(EcompLoggerErrorCode.DATA_ERROR, "", "", "Create user - new user id is missing"); throw new ByActionStatusComponentException(ActionStatus.MISSING_INFORMATION); } - return userAdminOperation.getUserData(newUserId, false); } public User updateUserRole(String modifierUserId, String userIdToUpdate, String userRole) { - User modifier = getValidModifier(modifierUserId, userIdToUpdate, UPDATE_USER); User userToUpdate = getUser(userIdToUpdate, false); validateChangeRoleToAllowedRoles(userRole); - List<Edge> userPendingTasks = userAdminOperation.getUserPendingTasksList(userToUpdate, getChangeRoleStateLimitations(userToUpdate)); if (!userPendingTasks.isEmpty()) { log.debug("updateUserRole method - User cannot be updated, user have pending projects userId {}", userIdToUpdate); String userInfo = userToUpdate.getFirstName() + " " + userToUpdate.getLastName() + '(' + userToUpdate.getUserId() + ')'; - componentsUtils.auditAdminUserActionAndThrowException(UPDATE_USER, modifier, userToUpdate, null, ActionStatus.CANNOT_UPDATE_USER_WITH_ACTIVE_ELEMENTS, userInfo, IN_CERTIFICATION_CHECKED_OUT); + componentsUtils.auditAdminUserActionAndThrowException(UPDATE_USER, modifier, userToUpdate, null, + ActionStatus.CANNOT_UPDATE_USER_WITH_ACTIVE_ELEMENTS, userInfo, IN_CERTIFICATION_CHECKED_OUT); } - Role newRole = Role.valueOf(userRole); User newUser = new User(); newUser.setRole(newRole.name()); newUser.setUserId(userIdToUpdate); - User updatedUser = userAdminOperation.updateUserData(newUser); handleAuditing(modifier, userToUpdate, updatedUser, componentsUtils.getResponseFormat(ActionStatus.OK), UPDATE_USER); getFacadeUserOperation().updateUserCache(UserOperationEnum.CHANGE_ROLE, updatedUser.getUserId(), updatedUser.getRole()); @@ -238,7 +225,7 @@ public class UserBusinessLogic { private void validateChangeRoleToAllowedRoles(String userRole) { List<String> allowedRoles = Arrays.asList(UserRoleEnum.DESIGNER.getName(), UserRoleEnum.ADMIN.getName()); - if (!allowedRoles.contains(userRole)){ + if (!allowedRoles.contains(userRole)) { throw new ByActionStatusComponentException(ActionStatus.INVALID_ROLE, userRole); } } @@ -248,13 +235,11 @@ public class UserBusinessLogic { log.error(EcompLoggerErrorCode.DATA_ERROR, "", "", "user modifier is missing"); throw new ByActionStatusComponentException(ActionStatus.MISSING_INFORMATION); } - User modifier = getUser(modifierUserId, false); if (!modifier.getRole().equals(UserRoleEnum.ADMIN.getName())) { log.debug("user is not admin. Id = {}", modifier.getUserId()); componentsUtils.auditAdminUserActionAndThrowException(actionEnum, modifier, null, null, ActionStatus.RESTRICTED_OPERATION); } - if (modifier.getUserId().equals(userIdHandle)) { log.debug("admin user cannot act on self. Id = {}", modifier.getUserId()); componentsUtils.auditAdminUserActionAndThrowException(actionEnum, modifier, null, null, ActionStatus.UPDATE_USER_ADMIN_CONFLICT); @@ -302,10 +287,7 @@ public class UserBusinessLogic { handleGetUsersListAuditing(user, responseFormat, rolesStr); return Either.right(responseFormat); } - List<User> users = response.left().value() - .stream() - .filter(u-> StringUtils.isNotEmpty(u.getUserId())) - .collect(Collectors.toList()); + List<User> users = response.left().value().stream().filter(u -> StringUtils.isNotEmpty(u.getUserId())).collect(Collectors.toList()); return Either.left(users); } @@ -331,27 +313,21 @@ public class UserBusinessLogic { log.debug("authorize method - user id is missing"); throw new ByActionStatusComponentException(ActionStatus.MISSING_INFORMATION); } - User user = getUser(userId, false); - String firstName = authUser.getFirstName(); if (firstName != null && !firstName.isEmpty() && !firstName.equals(user.getFirstName())) { user.setFirstName(firstName); } - String lastName = authUser.getLastName(); if (lastName != null && !lastName.isEmpty() && !lastName.equals(user.getLastName())) { user.setLastName(lastName); } - String email = authUser.getEmail(); if (email != null && !email.isEmpty() && !email.equals(user.getEmail())) { user.setEmail(email); } - // last login time stamp handle user.setLastLoginTime(); - User updatedUser = userAdminOperation.updateUserData(user); Long lastLoginTime = user.getLastLoginTime(); if (lastLoginTime != null) { @@ -359,7 +335,6 @@ public class UserBusinessLogic { } else { updatedUser.setLastLoginTime(0L); } - handleUserAccessAuditing(updatedUser.getUserId(), ActionStatus.OK); ASDCKpiApi.countUsersAuthorizations(); return updatedUser; @@ -369,11 +344,8 @@ public class UserBusinessLogic { * The method updates user credentials only, the role is neglected The role updated through updateRole method */ public Either<User, ResponseFormat> updateUserCredentials(User updatedUserCred) { - ResponseFormat responseFormat; - String userId = updatedUserCred.getUserId(); - if (userId == null) { updatedUserCred.setUserId(UNKNOWN); log.debug("updateUserCredentials method - user header is missing"); @@ -381,23 +353,19 @@ public class UserBusinessLogic { handleUserAccessAuditing(updatedUserCred, responseFormat); return Either.right(responseFormat); } - User user = getUser(userId, false); String firstName = updatedUserCred.getFirstName(); if (firstName != null && !firstName.isEmpty() && !firstName.equals(user.getFirstName())) { user.setFirstName(firstName); } - String lastName = updatedUserCred.getLastName(); if (lastName != null && !lastName.isEmpty() && !lastName.equals(user.getLastName())) { user.setLastName(lastName); } - String email = updatedUserCred.getEmail(); if (email != null && !email.isEmpty() && !email.equals(user.getEmail())) { user.setEmail(email); } - if (updatedUserCred.getLastLoginTime() != null && user.getLastLoginTime() != null) { if (updatedUserCred.getLastLoginTime() > user.getLastLoginTime()) { user.setLastLoginTime(updatedUserCred.getLastLoginTime()); @@ -405,7 +373,6 @@ public class UserBusinessLogic { } else if (updatedUserCred.getLastLoginTime() != null && user.getLastLoginTime() == null) { user.setLastLoginTime(updatedUserCred.getLastLoginTime()); } - User updatedUser = userAdminOperation.updateUserData(user); responseFormat = componentsUtils.getResponseFormat(ActionStatus.OK); handleUserAccessAuditing(updatedUser, responseFormat); @@ -432,5 +399,4 @@ public class UserBusinessLogic { public UserOperation getFacadeUserOperation() { return facadeUserOperation; } - } |