LOM2M  0.8.0
AccessControlRule.h
Go to the documentation of this file.
1 /*
2  Copyright (c) 2013-2021 LAAS-CNRS (www.laas.fr)
3  7 Colonel Roche 31077 Toulouse - France
4 
5  The use of this source code requires an agreement with the CNRS.
6 
7  Initial Contributors:
8  David Gauchard, Guillaume Garzone, Thierry Monteil.
9 */
10 
11 #ifndef __ACR_LOM2M
12 #define __ACR_LOM2M
13 
14 #include "configuration.h"
15 
16 struct AccessControlRule;
21 static int getOperationFromACR(AccessControlRule& ruleEntity);
26 static void getARCFromOperation(int flags, AccessControlRule* rule);
31 {
32  std::list<String> countryCodes;
33  std::list<String> circRegion;
34 };
35 
40 {
43  std::list<int> m_childResourceTypes;
44 };
45 
50 {
51  std::list<String> m_accessControlTimeWindow;
52  std::list<String> m_aclRegionCountryCode;
53  std::list<float> m_aclRegionCirc;
54  std::list<String> m_accessControlIP4Address;
55  std::list<String> m_accessControlIP6Address;
56 };
57 
63 {
64  std::list<String> m_accessControlOriginators;
65  std::list<AccessControlContext> m_contexts;
66  bool m_create;
67  bool m_retrieve;
68  bool m_update;
69  bool m_delete;
70  bool m_notify;
73 
74  void init(){
76  m_create = false;
77  m_retrieve = false;
78  m_update = false;
79  m_delete = false;
80  m_notify = false;
81  m_discovery = false;
82  }
83 
84 public:
89  AccessControlRule(int rights)
90  {
91  init();
92  getARCFromOperation(rights, this);
93  }
99  {
100  init();
101  }
102 
104  {
105  this->m_contexts.push_back(context);
106  }
107 
108  bool isCreate()
109  {
110  return this->m_create;
111  }
112  void setCreate(bool create)
113  {
114  this->m_create = create;
115  }
116 
117  bool isRetrieve()
118  {
119  return this->m_retrieve;
120  }
121  void setRetrieve(bool retrieve)
122  {
123  this->m_retrieve = retrieve;
124  }
125 
126  bool isUpdate()
127  {
128  return this->m_update;
129  }
130  void setUpdate(bool update)
131  {
132  this->m_update = update;
133  }
134 
135  bool isDelete()
136  {
137  return this->m_delete;
138  }
139  void setDelete(bool deleteRight)
140  {
141  this->m_delete = deleteRight;
142  }
143 
144  bool isNotify()
145  {
146  return this->m_notify;
147  }
148  void setNotify(bool notify)
149  {
150  this->m_notify = notify;
151  }
152 
153  bool isDiscovery()
154  {
155  return this->m_discovery;
156  }
157  void setDiscovery(bool discovery)
158  {
159  this->m_discovery = discovery;
160  }
161 };
162 
163 static void
164 getARCFromOperation(int flags, AccessControlRule* rule)
165 {
166  if ((flags & ACOP_CREATE) == ACOP_CREATE)
167  {
168  rule->setCreate(true);
169  }
170  if ((flags & ACOP_RETRIEVE) == ACOP_RETRIEVE)
171  {
172  rule->setRetrieve(true);
173  }
174  if ((flags & ACOP_UPDATE) == ACOP_UPDATE)
175  {
176  rule->setUpdate(true);
177  }
178  if ((flags & ACOP_DELETE) == ACOP_DELETE)
179  {
180  rule->setDelete(true);
181  }
182  if ((flags & ACOP_DISCOVERY) == ACOP_DISCOVERY)
183  {
184  rule->setDiscovery(true);
185  }
186  if ((flags & ACOP_NOTIFY) == ACOP_NOTIFY)
187  {
188  rule->setNotify(true);
189  }
190 }
191 
197 static int getOperationFromACR(AccessControlRule& ruleEntity)
198 {
199  int result = 0;
200  if (ruleEntity.isCreate())
201  {
202  result += ACOP_CREATE;
203  }
204  if (ruleEntity.isRetrieve())
205  {
206  result += ACOP_RETRIEVE;
207  }
208  if (ruleEntity.isUpdate())
209  {
210  result += ACOP_UPDATE;
211  }
212  if (ruleEntity.isDelete())
213  {
214  result += ACOP_DELETE;
215  }
216  if (ruleEntity.isDiscovery())
217  {
218  result += ACOP_DISCOVERY;
219  }
220  if (ruleEntity.isNotify())
221  {
222  result += ACOP_NOTIFY;
223  }
224  return result;
225 }
226 
227 
228 
229 #endif
@ ACOP_CREATE
Definition: Enum.h:78
@ ACOP_DELETE
Definition: Enum.h:81
@ ACOP_NOTIFY
Definition: Enum.h:82
@ ACOP_RETRIEVE
Definition: Enum.h:79
@ ACOP_DISCOVERY
Definition: Enum.h:83
@ ACOP_UPDATE
Definition: Enum.h:80
Definition: AccessControlRule.h:50
std::list< String > m_accessControlIP4Address
Definition: AccessControlRule.h:54
std::list< String > m_accessControlIP6Address
Definition: AccessControlRule.h:55
std::list< float > m_aclRegionCirc
Definition: AccessControlRule.h:53
std::list< String > m_aclRegionCountryCode
Definition: AccessControlRule.h:52
std::list< String > m_accessControlTimeWindow
Definition: AccessControlRule.h:51
Definition: AccessControlRule.h:31
std::list< String > countryCodes
Definition: AccessControlRule.h:32
std::list< String > circRegion
Definition: AccessControlRule.h:33
Definition: AccessControlRule.h:40
int m_specialization
Definition: AccessControlRule.h:42
std::list< int > m_childResourceTypes
Definition: AccessControlRule.h:43
int m_resourceType
Definition: AccessControlRule.h:41
Definition: AccessControlRule.h:63
AccessControlRule()
Definition: AccessControlRule.h:98
void setDiscovery(bool discovery)
Definition: AccessControlRule.h:157
bool isDelete()
Definition: AccessControlRule.h:135
AccessControlRule(int rights)
Definition: AccessControlRule.h:89
bool m_delete
Definition: AccessControlRule.h:69
std::list< AccessControlContext > m_contexts
Definition: AccessControlRule.h:65
void setNotify(bool notify)
Definition: AccessControlRule.h:148
void setCreate(bool create)
Definition: AccessControlRule.h:112
bool m_update
Definition: AccessControlRule.h:68
bool m_discovery
Definition: AccessControlRule.h:71
bool m_create
Definition: AccessControlRule.h:66
bool isUpdate()
Definition: AccessControlRule.h:126
void init()
Definition: AccessControlRule.h:74
void setUpdate(bool update)
Definition: AccessControlRule.h:130
bool m_retrieve
Definition: AccessControlRule.h:67
bool isDiscovery()
Definition: AccessControlRule.h:153
bool isNotify()
Definition: AccessControlRule.h:144
bool isCreate()
Definition: AccessControlRule.h:108
void setRetrieve(bool retrieve)
Definition: AccessControlRule.h:121
bool m_accessControlAuthenticationFlag
Definition: AccessControlRule.h:72
bool m_notify
Definition: AccessControlRule.h:70
void setDelete(bool deleteRight)
Definition: AccessControlRule.h:139
void addContext(AccessControlContext &context)
Definition: AccessControlRule.h:103
std::list< String > m_accessControlOriginators
Definition: AccessControlRule.h:64
bool isRetrieve()
Definition: AccessControlRule.h:117