diff options
Diffstat (limited to 'openecomp-be/backend/openecomp-sdc-item-permissions-manager')
4 files changed, 127 insertions, 152 deletions
diff --git a/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/PermissionsManager.java b/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/PermissionsManager.java index a7e8ca549d..d5e8ce0342 100644 --- a/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/PermissionsManager.java +++ b/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/PermissionsManager.java @@ -15,29 +15,25 @@ */ package org.openecomp.sdc.itempermissions; -import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity; - import java.util.Collection; import java.util.Optional; import java.util.Set; +import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity; /** * Created by ayalaben on 6/18/2017. */ public interface PermissionsManager { - Collection<ItemPermissionsEntity> listItemPermissions(String itemId); - - Set<String> listUserPermittedItems(String userId, String permission); - - void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds, - Set<String> removedUsersIds); + Collection<ItemPermissionsEntity> listItemPermissions(String itemId); - boolean isAllowed(String itemId, String userId, String action); + Set<String> listUserPermittedItems(String userId, String permission); - Optional<String> getUserItemPermission(String itemId, String userId); + void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds, Set<String> removedUsersIds); - void deleteItemPermissions(String itemId); + boolean isAllowed(String itemId, String userId, String action); + Optional<String> getUserItemPermission(String itemId, String userId); + void deleteItemPermissions(String itemId); } diff --git a/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/PermissionsManagerFactory.java b/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/PermissionsManagerFactory.java index 0353e5ce03..f37ccf9214 100644 --- a/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/PermissionsManagerFactory.java +++ b/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/PermissionsManagerFactory.java @@ -21,10 +21,9 @@ import org.openecomp.core.factory.api.AbstractFactory; /** * Created by ayalaben on 6/18/2017. */ -public abstract class PermissionsManagerFactory extends - AbstractComponentFactory<PermissionsManager> { +public abstract class PermissionsManagerFactory extends AbstractComponentFactory<PermissionsManager> { - public static PermissionsManagerFactory getInstance() { - return AbstractFactory.getInstance(PermissionsManagerFactory.class); - } + public static PermissionsManagerFactory getInstance() { + return AbstractFactory.getInstance(PermissionsManagerFactory.class); + } } diff --git a/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsManagerFactoryImpl.java b/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsManagerFactoryImpl.java index 14539b0fa1..3848b7c9a4 100644 --- a/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsManagerFactoryImpl.java +++ b/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsManagerFactoryImpl.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.openecomp.sdc.itempermissions.dao.impl; import org.openecomp.sdc.itempermissions.PermissionsManager; @@ -28,11 +27,9 @@ import org.openecomp.sdc.versioning.AsdcItemManagerFactory; */ public class PermissionsManagerFactoryImpl extends PermissionsManagerFactory { - private static final PermissionsManager INSTANCE = - new PermissionsManagerImpl(PermissionsServicesFactory.getInstance().createInterface(), - AsdcItemManagerFactory.getInstance().createInterface(), - NotificationPropagationManagerFactory.getInstance().createInterface(), - SubscriptionServiceFactory.getInstance().createInterface()); + private static final PermissionsManager INSTANCE = new PermissionsManagerImpl(PermissionsServicesFactory.getInstance().createInterface(), + AsdcItemManagerFactory.getInstance().createInterface(), NotificationPropagationManagerFactory.getInstance().createInterface(), + SubscriptionServiceFactory.getInstance().createInterface()); @Override public PermissionsManager createInterface() { diff --git a/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsManagerImpl.java b/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsManagerImpl.java index 90b39bea6f..68edb21fd8 100644 --- a/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-item-permissions-manager/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsManagerImpl.java @@ -13,9 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.openecomp.sdc.itempermissions.dao.impl; +import static org.openecomp.sdc.itempermissions.notifications.NotificationConstants.ITEM_ID_PROP; +import static org.openecomp.sdc.itempermissions.notifications.NotificationConstants.ITEM_NAME_PROP; +import static org.openecomp.sdc.itempermissions.notifications.NotificationConstants.PERMISSION_CHANGED; +import static org.openecomp.sdc.itempermissions.notifications.NotificationConstants.PERMISSION_GRANTED; +import static org.openecomp.sdc.itempermissions.notifications.NotificationConstants.PERMISSION_ITEM; +import static org.openecomp.sdc.itempermissions.notifications.NotificationConstants.PERMISSION_USER; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.Set; import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.common.errors.ErrorCategory; import org.openecomp.sdc.common.errors.ErrorCode; @@ -33,158 +44,130 @@ import org.openecomp.sdc.notification.services.SubscriptionService; import org.openecomp.sdc.versioning.AsdcItemManager; import org.openecomp.sdc.versioning.types.Item; -import java.util.*; - -import static org.openecomp.sdc.itempermissions.notifications.NotificationConstants.*; - /** * Created by ayalaben on 6/18/2017. */ public class PermissionsManagerImpl implements PermissionsManager { - private static final Logger LOGGER = LoggerFactory.getLogger(PermissionsManagerImpl.class); - private static final String CHANGE_PERMISSIONS = "Change_Item_Permissions"; - - private PermissionsServices permissionsServices; - private AsdcItemManager asdcItemManager; - private NotificationPropagationManager notifier; - private SubscriptionService subscriptionService; - - public PermissionsManagerImpl(PermissionsServices permissionsServices, - AsdcItemManager asdcItemManager, - NotificationPropagationManager notificationPropagationManager, - SubscriptionService subscriptionService) { - this.permissionsServices = permissionsServices; - this.asdcItemManager = asdcItemManager; - this.notifier = notificationPropagationManager; - this.subscriptionService = subscriptionService; - } - - @Override - public Collection<ItemPermissionsEntity> listItemPermissions(String itemId) { - - return permissionsServices.listItemPermissions(itemId); - } - - @Override - public Set<String> listUserPermittedItems(String userId, String permission) { - return permissionsServices.listUserPermittedItems(userId,permission); - } - - @Override - public void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds, - Set<String> removedUsersIds) { - - String currentUser = - SessionContextProviderFactory.getInstance().createInterface().get().getUser().getUserId(); - - if (!permissionsServices.isAllowed(itemId, currentUser, CHANGE_PERMISSIONS)) { - throw new CoreException(new ErrorCode.ErrorCodeBuilder() - .withMessage(Messages.PERMISSIONS_ERROR.getErrorMessage()) - .withId(Messages.PERMISSIONS_ERROR.name()) - .withCategory(ErrorCategory.SECURITY).build()); + private static final Logger LOGGER = LoggerFactory.getLogger(PermissionsManagerImpl.class); + private static final String CHANGE_PERMISSIONS = "Change_Item_Permissions"; + private PermissionsServices permissionsServices; + private AsdcItemManager asdcItemManager; + private NotificationPropagationManager notifier; + private SubscriptionService subscriptionService; + + public PermissionsManagerImpl(PermissionsServices permissionsServices, AsdcItemManager asdcItemManager, + NotificationPropagationManager notificationPropagationManager, SubscriptionService subscriptionService) { + this.permissionsServices = permissionsServices; + this.asdcItemManager = asdcItemManager; + this.notifier = notificationPropagationManager; + this.subscriptionService = subscriptionService; } - if (permission.equals(PermissionTypes.Owner.name()) ){ - if (addedUsersIds.size() == 1){ - asdcItemManager.updateOwner(itemId,addedUsersIds.iterator().next()); - } else { - throw new CoreException(new ErrorCode.ErrorCodeBuilder() - .withMessage(Messages.PERMISSIONS_OWNER_ERROR.getErrorMessage()) - .withId(Messages.PERMISSIONS_OWNER_ERROR.name()) - .withCategory(ErrorCategory.SECURITY).build()); - } + @Override + public Collection<ItemPermissionsEntity> listItemPermissions(String itemId) { + return permissionsServices.listItemPermissions(itemId); } - permissionsServices - .updateItemPermissions(itemId, permission, addedUsersIds, removedUsersIds); - - sendNotifications(itemId, permission, addedUsersIds, removedUsersIds, currentUser); - } - - private void sendNotifications(String itemId, String permission, Set<String> addedUsersIds, - Set<String> removedUsersIds, String userName) { - - Item item = asdcItemManager.get(itemId); - addedUsersIds.forEach(affectedUser -> { - notifyUser(userName, true, item.getName(), itemId, affectedUser, permission); - subscriptionService.subscribe(affectedUser, itemId); - }); - removedUsersIds.forEach(affectedUser -> { - notifyUser(userName, false, item.getName(), itemId, affectedUser, permission); - subscriptionService.unsubscribe(affectedUser, itemId); - }); - - } - - private void notifyUser(String userName, boolean granted, String itemName, String itemId, - String affectedUser, String permission) { - Map<String, Object> details = new HashMap<>(); - details.put(PERMISSION_ITEM, permission); - details.put(ITEM_ID_PROP, itemId); - details.put(ITEM_NAME_PROP, itemName); - details.put(PERMISSION_GRANTED, granted); - details.put(PERMISSION_USER, userName); - PermissionEvent permissionEvent = new PermissionEvent(PERMISSION_CHANGED, affectedUser, - details, affectedUser); - - try { - notifier.directNotification(permissionEvent, affectedUser); - } catch (Exception e) { - LOGGER.error("Failed to send notification on permission changed for user '" + - affectedUser + "'"); + @Override + public Set<String> listUserPermittedItems(String userId, String permission) { + return permissionsServices.listUserPermittedItems(userId, permission); } - } - - @Override - public boolean isAllowed(String itemId, String userId, String action) { - return permissionsServices.isAllowed(itemId, userId, action); - } - - @Override - public Optional<String> getUserItemPermission(String itemId, String userId) { - return permissionsServices.getUserItemPermission(itemId, userId); - } - - @Override - public void deleteItemPermissions(String itemId) { - permissionsServices.deleteItemPermissions(itemId); - } - - private class PermissionEvent implements Event { + @Override + public void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds, Set<String> removedUsersIds) { + String currentUser = SessionContextProviderFactory.getInstance().createInterface().get().getUser().getUserId(); + if (!permissionsServices.isAllowed(itemId, currentUser, CHANGE_PERMISSIONS)) { + throw new CoreException( + new ErrorCode.ErrorCodeBuilder().withMessage(Messages.PERMISSIONS_ERROR.getErrorMessage()).withId(Messages.PERMISSIONS_ERROR.name()) + .withCategory(ErrorCategory.SECURITY).build()); + } + if (permission.equals(PermissionTypes.Owner.name())) { + if (addedUsersIds.size() == 1) { + asdcItemManager.updateOwner(itemId, addedUsersIds.iterator().next()); + } else { + throw new CoreException(new ErrorCode.ErrorCodeBuilder().withMessage(Messages.PERMISSIONS_OWNER_ERROR.getErrorMessage()) + .withId(Messages.PERMISSIONS_OWNER_ERROR.name()).withCategory(ErrorCategory.SECURITY).build()); + } + } + permissionsServices.updateItemPermissions(itemId, permission, addedUsersIds, removedUsersIds); + sendNotifications(itemId, permission, addedUsersIds, removedUsersIds, currentUser); + } - private String eventType; - private String originatorId; - private Map<String, Object> attributes; - private String entityId; + private void sendNotifications(String itemId, String permission, Set<String> addedUsersIds, Set<String> removedUsersIds, String userName) { + Item item = asdcItemManager.get(itemId); + addedUsersIds.forEach(affectedUser -> { + notifyUser(userName, true, item.getName(), itemId, affectedUser, permission); + subscriptionService.subscribe(affectedUser, itemId); + }); + removedUsersIds.forEach(affectedUser -> { + notifyUser(userName, false, item.getName(), itemId, affectedUser, permission); + subscriptionService.unsubscribe(affectedUser, itemId); + }); + } - private PermissionEvent(String eventType, String originatorId, - Map<String, Object> attributes, String entityId) { - this.eventType = eventType; - this.originatorId = originatorId; - this.attributes = attributes; - this.entityId = entityId; + private void notifyUser(String userName, boolean granted, String itemName, String itemId, String affectedUser, String permission) { + Map<String, Object> details = new HashMap<>(); + details.put(PERMISSION_ITEM, permission); + details.put(ITEM_ID_PROP, itemId); + details.put(ITEM_NAME_PROP, itemName); + details.put(PERMISSION_GRANTED, granted); + details.put(PERMISSION_USER, userName); + PermissionEvent permissionEvent = new PermissionEvent(PERMISSION_CHANGED, affectedUser, details, affectedUser); + try { + notifier.directNotification(permissionEvent, affectedUser); + } catch (Exception e) { + LOGGER.error("Failed to send notification on permission changed for user '" + affectedUser + "'"); + } } @Override - public String getEventType() { - return eventType; + public boolean isAllowed(String itemId, String userId, String action) { + return permissionsServices.isAllowed(itemId, userId, action); } @Override - public String getOriginatorId() { - return originatorId; + public Optional<String> getUserItemPermission(String itemId, String userId) { + return permissionsServices.getUserItemPermission(itemId, userId); } @Override - public Map<String, Object> getAttributes() { - return attributes; + public void deleteItemPermissions(String itemId) { + permissionsServices.deleteItemPermissions(itemId); } - @Override - public String getEntityId() { - return entityId; + private class PermissionEvent implements Event { + + private String eventType; + private String originatorId; + private Map<String, Object> attributes; + private String entityId; + + private PermissionEvent(String eventType, String originatorId, Map<String, Object> attributes, String entityId) { + this.eventType = eventType; + this.originatorId = originatorId; + this.attributes = attributes; + this.entityId = entityId; + } + + @Override + public String getEventType() { + return eventType; + } + + @Override + public String getOriginatorId() { + return originatorId; + } + + @Override + public Map<String, Object> getAttributes() { + return attributes; + } + + @Override + public String getEntityId() { + return entityId; + } } - } } |