re base code
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / validation / AccessValidations.java
index da098ac..335a939 100644 (file)
@@ -1,10 +1,12 @@
 package org.openecomp.sdc.be.components.validation;
 
-import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
 import org.openecomp.sdc.be.model.Component;
 import org.openecomp.sdc.be.model.User;
-import org.openecomp.sdc.exception.ResponseFormat;
+import org.openecomp.sdc.be.user.Role;
+
+import java.util.ArrayList;
+import java.util.List;
 
 @org.springframework.stereotype.Component
 public class AccessValidations {
@@ -18,17 +20,45 @@ public class AccessValidations {
         this.componentValidations = componentValidations;
     }
 
-    public Component validateUserCanWorkOnComponentAndLockIt(ComponentTypeEnum componentTypeEnum, String componentId, String userId, String actionContext) {
-        userValidations.validateUserExists(userId, actionContext, false)
-                .left()
-                .on(this::onUserError);
+    public Component validateUserCanRetrieveComponentData(String componentId, String componentType, String userId, String actionContext)  {
+        ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.findByParamName(componentType);
+        retrieveUser(userId, actionContext);
+           return componentValidations.getComponent(componentId, componentTypeEnum);
+    }
 
-        return componentValidations.validateComponentIsCheckedOutByUserAndLockIt(componentTypeEnum, componentId, userId);
+    public Component validateUserCanWorkOnComponent(String componentId, ComponentTypeEnum componentType, String userId, String actionContext) {
+        User user = retrieveUser(userId, actionContext);
+        validateUserIsAdminOrDesigner(user);
+        return componentValidations.validateComponentIsCheckedOutByUser(componentId, componentType, userId);
+    }
+    private User retrieveUser(String userId, String actionContext) {
+        return userValidations.validateUserExists(userId, actionContext, true);
     }
 
-    private User onUserError(ResponseFormat responseFormat) {
-        throw new ComponentException(responseFormat);
+    public void validateUserExist(String userId, String actionContext) {
+        userValidations.validateUserExists(userId, actionContext, false);
     }
 
+    public User userIsAdminOrDesigner(String userId, String actionContext){
+        User user = retrieveUser(userId, actionContext);
+        validateUserIsAdminOrDesigner(user);
+        return user;
+    }
 
+    private void validateUserIsAdminOrDesigner(User user) {
+        List<Role> roles = new ArrayList<>(2);
+        roles.add(Role.ADMIN);
+        roles.add(Role.DESIGNER);
+        userValidations.validateUserRole(user, roles);
+    }
+
+    public void validateUserCanWorkOnComponent(Component component, String userId, String actionContext) {
+        User user = retrieveUser(userId, actionContext);
+        validateUserIsAdminOrDesigner(user);
+        componentValidations.validateComponentIsCheckedOutByUser(component, userId);
+    }
+
+    public void validateUserExists(String userId, String context) {
+        retrieveUser(userId, context);
+    }
 }