Refine access control, peer access
[federation.git] / gateway / src / main / java / org / acumos / federation / gateway / security / Role.java
1 /* 
2  * ===============LICENSE_START=======================================================
3  * Acumos
4  * ===================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property & Tech Mahindra. All rights reserved.
6  * ===================================================================================
7  * This Acumos software file is distributed by AT&T and Tech Mahindra
8  * under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * This file 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 package org.acumos.federation.gateway.security;
21
22
23 import java.util.Collection;
24 import java.util.Collections;
25 import java.util.Arrays;
26
27 import org.springframework.security.core.GrantedAuthority;
28
29 /**
30  * Each Role states a predefined set of available federation priviledges.
31  */
32 public enum Role {
33
34         /**
35    * Un-authenticated client. Will at most be granted access to subscribe
36          * functionality
37          */
38         ANY(Collections.EMPTY_LIST),
39         /**
40          * Common peer, grants generic solution catalog access
41          */
42         PEER(Arrays.asList(Priviledge.CATALOG_ACCESS)),
43         /**
44    * Enhanced peer, gains (some lovel of) read access to the local peer list
45          */
46         PARTNER(Arrays.asList(Priviledge.CATALOG_ACCESS, Priviledge.PEERS_ACCESS)),
47         /**
48          * The actual gateway system, used for local calls, grants all proviledges
49          */
50         SYSTEM(Arrays.asList(Priviledge.class.getEnumConstants()));
51
52
53         private Collection<Priviledge> priviledges;
54
55         Role(Collection<Priviledge> thePriviledges) {
56                 this.priviledges = thePriviledges;
57         }
58
59         public Collection<Priviledge> priviledges() {
60                 return this.priviledges;
61         }
62
63 }
64