d0e41d8c912c21003a0cc1f5b15ebf981bac773c
[sdc.git] /
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.openecomp.sdc.itempermissions.dao.impl;
18
19 import java.util.Collection;
20 import java.util.Optional;
21 import java.util.Set;
22
23 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
24 import org.openecomp.sdc.itempermissions.PermissionsRules;
25 import org.openecomp.sdc.itempermissions.PermissionsServices;
26 import org.openecomp.sdc.itempermissions.dao.ItemPermissionsDao;
27 import org.openecomp.sdc.itempermissions.dao.UserPermissionsDao;
28 import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity;
29
30
31 /**
32  * Created by ayalaben on 6/22/2017.
33  */
34 public class PermissionsServicesImpl implements PermissionsServices {
35
36     private ItemPermissionsDao itemPermissionsDao;
37
38     private UserPermissionsDao userPermissionsDao;
39
40     private PermissionsRules permissionsRules;
41
42     private static final String CHANGE_PERMISSIONS = "Change_Item_Permissions";
43
44     public PermissionsServicesImpl(PermissionsRules permissionsRules,
45                                    ItemPermissionsDao itemPermissionsDao,
46                                    UserPermissionsDao userPermissionsDao) {
47         this.itemPermissionsDao = itemPermissionsDao;
48         this.permissionsRules = permissionsRules;
49         this.userPermissionsDao = userPermissionsDao;
50     }
51
52
53     @Override
54     public Collection<ItemPermissionsEntity> listItemPermissions(String itemId) {
55         return itemPermissionsDao.listItemPermissions(itemId);
56     }
57
58     @Override
59     public Set<String> listUserPermittedItems(String userId, String permission) {
60         return userPermissionsDao.listUserPermittedItems(userId, permission);
61     }
62
63     @Override
64     public void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds,
65                                       Set<String> removedUsersIds) {
66
67         String currentUserId = SessionContextProviderFactory.getInstance()
68                 .createInterface().get().getUser().getUserId();
69
70         permissionsRules.executeAction(itemId, currentUserId, CHANGE_PERMISSIONS);
71
72         permissionsRules.updatePermission(itemId, currentUserId, permission, addedUsersIds,
73                 removedUsersIds);
74
75         itemPermissionsDao.updateItemPermissions(itemId, permission,
76                 addedUsersIds, removedUsersIds);
77
78         userPermissionsDao.updatePermissions(itemId, permission,
79                 addedUsersIds, removedUsersIds);
80
81     }
82
83     @Override
84     public boolean isAllowed(String itemId, String userId, String action) {
85         return itemPermissionsDao.getUserItemPermission(itemId, userId)
86                 .map(permission -> permissionsRules.isAllowed(permission, action))
87                 .orElse(false);
88     }
89
90     @Override
91     public void execute(String itemId, String userId, String action) {
92         permissionsRules.executeAction(itemId, userId, action);
93     }
94
95     @Override
96     public Optional<String> getUserItemPermission(String itemId, String userId) {
97         return itemPermissionsDao.getUserItemPermission(itemId, userId);
98     }
99
100     @Override
101     public void deleteItemPermissions(String itemId) {
102         itemPermissionsDao.deleteItemPermissions(itemId);
103     }
104
105 }