00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _ACCESSCONTROL_HH_
00024 #define _ACCESSCONTROL_HH_
00025
00026 #include <vos/vos/vosdefs.hh>
00027
00028 #include <string>
00029 #include <map>
00030 #include <deque>
00031
00032 #ifndef VOS_EXPORTS
00033 IMPORT_METAOBJECT_FACTORIES(DefaultACs)
00034 #endif
00035
00036 namespace VOS
00037 {
00038 class LocalVobject;
00039 class Vobject;
00040 class VobjectEvent;
00041 class Site;
00042
00043
00044
00045
00046
00047
00048
00049 class VOS_API VobjectAccessControl
00050 {
00051 public:
00052 virtual ~VobjectAccessControl() { }
00053
00054
00055
00056
00057
00058
00059 virtual bool checkReadChildPermission(VobjectEvent& e, std::string& message) = 0;
00060
00061
00062
00063
00064
00065
00066 virtual bool checkReadTypePermission(VobjectEvent& e, std::string& message) = 0;
00067
00068
00069
00070
00071
00072
00073 virtual bool checkAddTypePermission(VobjectEvent& e, std::string& message) = 0;
00074
00075
00076
00077
00078
00079
00080 virtual bool checkRemoveTypePermission(VobjectEvent& e, std::string& message) = 0;
00081
00082
00083
00084
00085
00086
00087 virtual bool checkReadParentPermission(VobjectEvent& e, std::string& message) = 0;
00088
00089
00090
00091
00092
00093
00094 virtual bool checkSetChildPermission(VobjectEvent& e, std::string& message) = 0;
00095
00096
00097
00098
00099
00100
00101 virtual bool checkInsertChildPermission(VobjectEvent& e, std::string& message) = 0;
00102
00103
00104
00105
00106
00107
00108 virtual bool checkRemoveChildPermission(VobjectEvent& e, std::string& message) = 0;
00109
00110
00111
00112
00113
00114
00115
00116 virtual bool checkChildListenPermission(VobjectEvent& e, std::string& message) = 0;
00117
00118
00119
00120
00121
00122
00123
00124 virtual bool checkParentListenPermission(VobjectEvent& e, std::string& message) = 0;
00125
00126
00127
00128
00129
00130
00131
00132 virtual bool checkTypeListenPermission(VobjectEvent& e, std::string& message) = 0;
00133
00134
00135
00136
00137
00138
00139
00140 virtual bool checkPolicyReadPermission(VobjectEvent& e, std::string& message) = 0;
00141
00142
00143
00144
00145
00146
00147 virtual bool checkPolicyChangePermission(VobjectEvent& e, std::string& message) = 0;
00148
00149
00150
00151
00152
00153
00154 virtual const std::string getPolicyName() = 0;
00155 };
00156
00157
00158
00159
00160 class VOS_API AcceptAllAccessControl : public VobjectAccessControl
00161 {
00162 public:
00163 static AcceptAllAccessControl static_;
00164
00165 virtual ~AcceptAllAccessControl() { }
00166
00167
00168 virtual bool checkReadChildPermission(VobjectEvent& e, std::string& message);
00169
00170 virtual bool checkReadTypePermission(VobjectEvent& e, std::string& message);
00171
00172 virtual bool checkReadParentPermission(VobjectEvent& e, std::string& message);
00173
00174 virtual bool checkAddTypePermission(VobjectEvent& e, std::string& message);
00175
00176 virtual bool checkRemoveTypePermission(VobjectEvent& e, std::string& message);
00177
00178 virtual bool checkSetChildPermission(VobjectEvent& e, std::string& message);
00179
00180 virtual bool checkInsertChildPermission(VobjectEvent& e, std::string& message);
00181
00182 virtual bool checkRemoveChildPermission(VobjectEvent& e, std::string& message);
00183
00184 virtual bool checkChildListenPermission(VobjectEvent& e, std::string& message);
00185
00186 virtual bool checkTypeListenPermission(VobjectEvent& e, std::string& message);
00187
00188 virtual bool checkParentListenPermission(VobjectEvent& e, std::string& message);
00189
00190 virtual bool checkPolicyReadPermission(VobjectEvent& e, std::string& message);
00191
00192 virtual bool checkPolicyChangePermission(VobjectEvent& e, std::string& message);
00193 virtual const std::string getPolicyName();
00194 };
00195
00196
00197
00198
00199
00200 class VOS_API ReadOnlyAccessControl : public VobjectAccessControl
00201 {
00202 public:
00203 static ReadOnlyAccessControl static_;
00204
00205 virtual ~ReadOnlyAccessControl() { }
00206
00207
00208 virtual bool checkReadChildPermission(VobjectEvent& e, std::string& message);
00209
00210 virtual bool checkReadTypePermission(VobjectEvent& e, std::string& message);
00211
00212 virtual bool checkReadParentPermission(VobjectEvent& e, std::string& message);
00213
00214 virtual bool checkAddTypePermission(VobjectEvent& e, std::string& message);
00215
00216 virtual bool checkRemoveTypePermission(VobjectEvent& e, std::string& message);
00217
00218 virtual bool checkSetChildPermission(VobjectEvent& e, std::string& message);
00219
00220 virtual bool checkInsertChildPermission(VobjectEvent& e, std::string& message);
00221
00222 virtual bool checkRemoveChildPermission(VobjectEvent& e, std::string& message);
00223
00224 virtual bool checkChildListenPermission(VobjectEvent& e, std::string& message);
00225
00226 virtual bool checkTypeListenPermission(VobjectEvent& e, std::string& message);
00227
00228 virtual bool checkParentListenPermission(VobjectEvent& e, std::string& message);
00229
00230 virtual bool checkPolicyReadPermission(VobjectEvent& e, std::string& message);
00231
00232 virtual bool checkPolicyChangePermission(VobjectEvent& e, std::string& message);
00233 virtual const std::string getPolicyName();
00234 };
00235
00236
00237
00238
00239
00240 class VOS_API DenyAllAccessControl : public VobjectAccessControl
00241 {
00242 public:
00243 static DenyAllAccessControl static_;
00244
00245 virtual ~DenyAllAccessControl() { }
00246
00247
00248 virtual bool checkReadChildPermission(VobjectEvent& e, std::string& message);
00249
00250 virtual bool checkReadTypePermission(VobjectEvent& e, std::string& message);
00251
00252 virtual bool checkReadParentPermission(VobjectEvent& e, std::string& message);
00253
00254 virtual bool checkAddTypePermission(VobjectEvent& e, std::string& message);
00255
00256 virtual bool checkRemoveTypePermission(VobjectEvent& e, std::string& message);
00257
00258 virtual bool checkSetChildPermission(VobjectEvent& e, std::string& message);
00259
00260 virtual bool checkInsertChildPermission(VobjectEvent& e, std::string& message);
00261
00262 virtual bool checkRemoveChildPermission(VobjectEvent& e, std::string& message);
00263
00264 virtual bool checkChildListenPermission(VobjectEvent& e, std::string& message);
00265
00266 virtual bool checkTypeListenPermission(VobjectEvent& e, std::string& message);
00267
00268 virtual bool checkParentListenPermission(VobjectEvent& e, std::string& message);
00269
00270 virtual bool checkPolicyReadPermission(VobjectEvent& e, std::string& message);
00271
00272 virtual bool checkPolicyChangePermission(VobjectEvent& e, std::string& message);
00273
00274 virtual const std::string getPolicyName();
00275 };
00276
00277
00278
00279
00280
00281 class VOS_API SiteAccessControl
00282 {
00283 public:
00284 virtual ~SiteAccessControl() { }
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294 virtual bool checkCreateVobjectPermission(Vobject& requester, Site& site,
00295 const std::string name,
00296 const std::deque<std::string> types,
00297 std::string& message) = 0;
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307 virtual bool checkRenameVobjectPermission(Vobject& requester, Site& site,
00308 const std::string oldname,
00309 const std::string newname,
00310 std::string& message) = 0;
00311 virtual const std::string getPolicyName() = 0;
00312 };
00313
00314
00315
00316
00317
00318 class VOS_API AcceptAllSiteAccessControl : public SiteAccessControl
00319 {
00320 public:
00321 static AcceptAllSiteAccessControl static_;
00322
00323 virtual ~AcceptAllSiteAccessControl() { }
00324
00325
00326 virtual bool checkCreateVobjectPermission(Vobject& requester, Site& site, const std::string name,
00327 const std::deque<std::string> types, std::string& message);
00328
00329
00330 virtual bool checkRenameVobjectPermission(Vobject& requester, Site& site, const std::string oldname,
00331 const std::string newname, std::string& message);
00332 virtual const std::string getPolicyName();
00333 };
00334
00335
00336
00337
00338
00339 class VOS_API DenyAllSiteAccessControl : public SiteAccessControl
00340 {
00341 public:
00342 static DenyAllSiteAccessControl static_;
00343
00344 virtual ~DenyAllSiteAccessControl() { }
00345
00346
00347 virtual bool checkCreateVobjectPermission(Vobject& requester, Site& site, const std::string name,
00348 const std::deque<std::string> types, std::string& message);
00349
00350
00351 virtual bool checkRenameVobjectPermission(Vobject& requester, Site& site, const std::string oldname,
00352 const std::string newname, std::string& message);
00353 virtual const std::string getPolicyName();
00354 };
00355
00356 }
00357
00358 #endif