ec914b15307741ec758afced10848dcf13db211f
[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 package org.openecomp.sdc.itempermissions.dao.impl;
17
18 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
19 import org.openecomp.sdc.itempermissions.PermissionsRules;
20 import org.openecomp.sdc.itempermissions.PermissionsServices;
21 import org.openecomp.sdc.itempermissions.dao.ItemPermissionsDao;
22 import org.openecomp.sdc.itempermissions.dao.UserPermissionsDao;
23 import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity;
24
25 import java.util.Collection;
26 import java.util.Optional;
27 import java.util.Set;
28
29
30 /**
31  * Created by ayalaben on 6/22/2017.
32  */
33 public class PermissionsServicesImpl implements PermissionsServices {
34
35   private ItemPermissionsDao itemPermissionsDao;
36
37   private UserPermissionsDao userPermissionsDao;
38
39   private PermissionsRules permissionsRules;
40
41   private static final String CHANGE_PERMISSIONS = "Change_Item_Permissions";
42
43   public PermissionsServicesImpl(PermissionsRules permissionsRules,
44                                  ItemPermissionsDao itemPermissionsDao,
45                                  UserPermissionsDao userPermissionsDao) {
46     this.itemPermissionsDao = itemPermissionsDao;
47     this.permissionsRules = permissionsRules;
48     this.userPermissionsDao = userPermissionsDao;
49   }
50
51
52   @Override
53   public Collection<ItemPermissionsEntity> listItemPermissions(String itemId) {
54     return itemPermissionsDao.listItemPermissions(itemId);
55   }
56
57   @Override
58   public Set<String> listUserPermittedItems(String userId, String permission) {
59     return userPermissionsDao.listUserPermittedItems(userId, permission);
60   }
61
62   @Override
63   public void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds,
64                                     Set<String> removedUsersIds) {
65
66     String currentUserId = SessionContextProviderFactory.getInstance()
67         .createInterface().get().getUser().getUserId();
68
69     permissionsRules.executeAction(itemId, currentUserId, CHANGE_PERMISSIONS);
70
71     permissionsRules.updatePermission(itemId, currentUserId, permission, addedUsersIds,
72         removedUsersIds);
73
74     itemPermissionsDao.updateItemPermissions(itemId, permission,
75         addedUsersIds, removedUsersIds);
76
77     userPermissionsDao.updatePermissions(itemId, permission,
78         addedUsersIds, removedUsersIds);
79
80   }
81
82   @Override
83   public boolean isAllowed(String itemId, String userId, String action) {
84     return itemPermissionsDao.getUserItemPermission(itemId, userId)
85         .map(permission -> permissionsRules.isAllowed(permission, action))
86         .orElse(false);
87   }
88
89   @Override
90   public void execute(String itemId, String userId, String action) {
91     permissionsRules.executeAction(itemId, userId, action);
92   }
93
94   @Override
95   public Optional<String> getUserItemPermission(String itemId, String userId) {
96     return itemPermissionsDao.getUserItemPermission(itemId, userId);
97   }
98
99   @Override
100   public void deleteItemPermissions(String itemId) {
101     itemPermissionsDao.deleteItemPermissions(itemId);
102   }
103
104 }