244610c89c44410299ed3cb7bf389a1ec9e117e9
[vid.git] / vid-app-common / src / main / java / org / onap / vid / roles / RoleValidatorBySubscriberAndServiceType.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * VID
4  * ================================================================================
5  * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.vid.roles;
22
23 import java.util.List;
24 import java.util.Map;
25 import org.onap.vid.mso.rest.RequestDetails;
26
27 public class RoleValidatorBySubscriberAndServiceType implements RoleValidator {
28
29     private final List<Role> userRoles;
30
31     RoleValidatorBySubscriberAndServiceType(List<Role> roles) {
32         this.userRoles = roles;
33     }
34
35     @Override
36     public boolean isSubscriberPermitted(String subscriberName) {
37         for (Role role : userRoles) {
38             if (role.getSubscribeName().equals(subscriberName)) {
39                 return true;
40             }
41         }
42         return false;
43     }
44
45     @Override
46     public boolean isServicePermitted(String subscriberName, String serviceType) {
47         for (Role role : userRoles) {
48             if (role.getSubscribeName().equals(subscriberName) && role.getServiceType().equals(serviceType)) {
49                 return true;
50             }
51         }
52         return false;
53     }
54
55     @Override
56     public boolean isTenantPermitted(String globalCustomerId, String serviceType, String tenantName) {
57         for (Role role : userRoles) {
58             if (role.getSubscribeName().equals(globalCustomerId)
59                 && role.getServiceType().equals(serviceType)
60                 && (role.getTenant() == null || role.getTenant().equalsIgnoreCase(tenantName))) {
61                 return true;
62             }
63         }
64         return false;
65     }
66
67     boolean isMsoRequestValid(RequestDetails msoRequest) {
68         try {
69             String globalSubscriberIdRequested = (String) ((Map) ((Map) msoRequest.getAdditionalProperties()
70                 .get("requestDetails")).get("subscriberInfo")).get("globalSubscriberId");
71             String serviceType = (String) ((Map) ((Map) msoRequest.getAdditionalProperties().get("requestDetails"))
72                 .get("requestParameters")).get("subscriptionServiceType");
73             return isServicePermitted(globalSubscriberIdRequested, serviceType);
74         } catch (Exception e) {
75             //Until we'll get the exact information regarding the tenants and the global customer id, we'll return true on unknown requests to mso
76             return true;
77         }
78     }
79
80 }