30 |
30 |
31 - `creation_date` (`Datetime`) |
31 - `creation_date` (`Datetime`) |
32 |
32 |
33 - `modification_date` (`Datetime`) |
33 - `modification_date` (`Datetime`) |
34 |
34 |
35 - `created_by` (`EUser`) (quel utilisateur a créé l'entité) |
35 - `created_by` (`CWUser`) (quel utilisateur a créé l'entité) |
36 |
36 |
37 - `owned_by` (`EUser`) (à qui appartient l'entité, par défaut le |
37 - `owned_by` (`CWUser`) (à qui appartient l'entité, par défaut le |
38 créateur mais pas forcément et il peut exister plusieurs propriétaires) |
38 créateur mais pas forcément et il peut exister plusieurs propriétaires) |
39 |
39 |
40 - `is` (`EEType`) |
40 - `is` (`CWEType`) |
41 |
41 |
42 |
42 |
43 * il est également possible de définir des relations dont le type d'entité est |
43 * il est également possible de définir des relations dont le type d'entité est |
44 l'objet en utilisant `ObjectRelation` plutôt que `SubjectRelation` |
44 l'objet en utilisant `ObjectRelation` plutôt que `SubjectRelation` |
45 |
45 |
165 class verrouille_par(RelationType): |
165 class verrouille_par(RelationType): |
166 """relation sur toutes les entités applicatives indiquant que celles-ci sont vérouillées |
166 """relation sur toutes les entités applicatives indiquant que celles-ci sont vérouillées |
167 inlined = True |
167 inlined = True |
168 cardinality = '?*' |
168 cardinality = '?*' |
169 subject = '*' |
169 subject = '*' |
170 object = 'EUser' |
170 object = 'CWUser' |
171 |
171 |
172 En plus des permissions, les propriétés propres aux types de relation (et donc |
172 En plus des permissions, les propriétés propres aux types de relation (et donc |
173 partagés par toutes les définitions de relation de ce type) sont : |
173 partagés par toutes les définitions de relation de ce type) sont : |
174 |
174 |
175 * `inlined` : booléen contrôlant l'optimisation physique consistant à stocker la |
175 * `inlined` : booléen contrôlant l'optimisation physique consistant à stocker la |
261 |
261 |
262 - les permissions 'add' et 'delete' sont équivalentes. En pratique seul |
262 - les permissions 'add' et 'delete' sont équivalentes. En pratique seul |
263 'add'/'read' son pris en considération |
263 'add'/'read' son pris en considération |
264 |
264 |
265 |
265 |
266 En plus de cela, le type d'entité `EPermission` de la librairie standard permet |
266 En plus de cela, le type d'entité `CWPermission` de la librairie standard permet |
267 de construire des modèles de sécurités très complexes et dynamiques. Le schéma |
267 de construire des modèles de sécurités très complexes et dynamiques. Le schéma |
268 de ce type d'entité est le suivant : :: |
268 de ce type d'entité est le suivant : :: |
269 |
269 |
270 |
270 |
271 class EPermission(MetaEntityType): |
271 class CWPermission(MetaEntityType): |
272 """entity type that may be used to construct some advanced security configuration |
272 """entity type that may be used to construct some advanced security configuration |
273 """ |
273 """ |
274 name = String(required=True, indexed=True, internationalizable=True, maxsize=100) |
274 name = String(required=True, indexed=True, internationalizable=True, maxsize=100) |
275 require_group = SubjectRelation('EGroup', cardinality='+*', |
275 require_group = SubjectRelation('CWGroup', cardinality='+*', |
276 description=_('groups to which the permission is granted')) |
276 description=_('groups to which the permission is granted')) |
277 require_state = SubjectRelation('State', |
277 require_state = SubjectRelation('State', |
278 description=_("entity'state in which the permission is applyable")) |
278 description=_("entity'state in which the permission is applyable")) |
279 # can be used on any entity |
279 # can be used on any entity |
280 require_permission = ObjectRelation('**', cardinality='*1', composite='subject', |
280 require_permission = ObjectRelation('**', cardinality='*1', composite='subject', |
309 RRQLExpression('O require_permission P, P name "add_version",' |
309 RRQLExpression('O require_permission P, P name "add_version",' |
310 'U in_group G, P require_group G'),) |
310 'U in_group G, P require_group G'),) |
311 } |
311 } |
312 inlined = True |
312 inlined = True |
313 |
313 |
314 Cette configuration suppose indique qu'une entité `EPermission` de nom |
314 Cette configuration suppose indique qu'une entité `CWPermission` de nom |
315 "add_version" peut-être associée à un projet et donner le droit de créer des |
315 "add_version" peut-être associée à un projet et donner le droit de créer des |
316 versions sur ce projet à des groupes spécifiques. Il est important de noter les |
316 versions sur ce projet à des groupes spécifiques. Il est important de noter les |
317 points suivants : |
317 points suivants : |
318 |
318 |
319 * dans ce cas il faut protéger à la fois le type d'entité "Version" et la |
319 * dans ce cas il faut protéger à la fois le type d'entité "Version" et la |
320 relation liant une version à un projet ("version_of") |
320 relation liant une version à un projet ("version_of") |
321 |
321 |
322 * du fait de la généricité du type d'entité `EPermission`, il faut effectuer |
322 * du fait de la généricité du type d'entité `CWPermission`, il faut effectuer |
323 l'unification avec les groupes et / ou les états le cas échéant dans |
323 l'unification avec les groupes et / ou les états le cas échéant dans |
324 l'expression ("U in_group G, P require_group G" dans l'exemple ci-dessus) |
324 l'expression ("U in_group G, P require_group G" dans l'exemple ci-dessus) |
325 |
325 |
326 |
326 |
327 Utilisation d'expression RQL sur les droits en lecture |
327 Utilisation d'expression RQL sur les droits en lecture |