re base code
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / validation / AccessValidations.java
1 package org.openecomp.sdc.be.components.validation;
2
3 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
4 import org.openecomp.sdc.be.model.Component;
5 import org.openecomp.sdc.be.model.User;
6 import org.openecomp.sdc.be.user.Role;
7
8 import java.util.ArrayList;
9 import java.util.List;
10
11 @org.springframework.stereotype.Component
12 public class AccessValidations {
13
14     private final UserValidations userValidations;
15     private final ComponentValidations componentValidations;
16
17
18     public AccessValidations(UserValidations userValidations, ComponentValidations componentValidations) {
19         this.userValidations = userValidations;
20         this.componentValidations = componentValidations;
21     }
22
23     public Component validateUserCanRetrieveComponentData(String componentId, String componentType, String userId, String actionContext)  {
24         ComponentTypeEnum componentTypeEnum = ComponentTypeEnum.findByParamName(componentType);
25         retrieveUser(userId, actionContext);
26             return componentValidations.getComponent(componentId, componentTypeEnum);
27     }
28
29     public Component validateUserCanWorkOnComponent(String componentId, ComponentTypeEnum componentType, String userId, String actionContext) {
30         User user = retrieveUser(userId, actionContext);
31         validateUserIsAdminOrDesigner(user);
32         return componentValidations.validateComponentIsCheckedOutByUser(componentId, componentType, userId);
33     }
34     private User retrieveUser(String userId, String actionContext) {
35         return userValidations.validateUserExists(userId, actionContext, true);
36     }
37
38     public void validateUserExist(String userId, String actionContext) {
39         userValidations.validateUserExists(userId, actionContext, false);
40     }
41
42     public User userIsAdminOrDesigner(String userId, String actionContext){
43         User user = retrieveUser(userId, actionContext);
44         validateUserIsAdminOrDesigner(user);
45         return user;
46     }
47
48     private void validateUserIsAdminOrDesigner(User user) {
49         List<Role> roles = new ArrayList<>(2);
50         roles.add(Role.ADMIN);
51         roles.add(Role.DESIGNER);
52         userValidations.validateUserRole(user, roles);
53     }
54
55     public void validateUserCanWorkOnComponent(Component component, String userId, String actionContext) {
56         User user = retrieveUser(userId, actionContext);
57         validateUserIsAdminOrDesigner(user);
58         componentValidations.validateComponentIsCheckedOutByUser(component, userId);
59     }
60
61     public void validateUserExists(String userId, String context) {
62         retrieveUser(userId, context);
63     }
64 }