Merge pull request #2068 from pbiering/sharing-review-7

Sharing review 7
This commit is contained in:
Peter Bieringer
2026-04-04 09:18:41 +02:00
committed by GitHub
3 changed files with 11 additions and 6 deletions

View File

@@ -330,10 +330,12 @@ def xml_propfind_response(
privileges.append("D:write-properties")
privileges.append("D:write-content")
if ("T" in raw_permissions or (self._sharing.permit_create_token and "t" not in raw_permissions)):
privileges.append("RADICALE:share-token")
if ("M" in raw_permissions or (self._sharing.permit_create_map and "m" not in raw_permissions)):
privileges.append("RADICALE:share-map")
if self._sharing._enabled and not share:
# only offer this privileges if sharing is enabled and not being a share (nested sharing is not supported)
if ("T" in raw_permissions or (self._sharing.permit_create_token and "t" not in raw_permissions)):
privileges.append("RADICALE:share-token")
if ("M" in raw_permissions or (self._sharing.permit_create_map and "m" not in raw_permissions)):
privileges.append("RADICALE:share-map")
for human_tag in privileges:
privilege = ET.Element(xmlutils.make_clark("D:privilege"))

View File

@@ -35,8 +35,6 @@ Permissions:
- t: deny create of token-based sharing of collection in case permit_create_token=True (>= 3.7.0)
- M: permit create of map-based sharing of collection in case permit_create_map=False (>= 3.7.0)
- m: deny create of map-based sharing of collection in case permit_create_map=True (>= 3.7.0)
Permissions only supported so far in share permissions:
- P: permit properties overlay in case permit_properties_overlay=False (>= 3.7.0)
- p: deny properties overlay in case permit_properties_overlay=True (>= 3.7.0)
- E: enable enforce properties overlay in case enforce_properties_overlay=False (>= 3.7.0)

View File

@@ -68,6 +68,11 @@ class Rights(rights.BaseRights):
collection_pattern = rights_config_parser.get(section, "collection")
allowed_groups = rights_config_parser.get(section, "groups", fallback="").split(",")
permission = rights_config_parser.get(section, "permissions")
# test for conflicting permissions
if "p" in permission and "P" in permission:
raise RuntimeError("conflicting p+P found")
if "e" in permission and "E" in permission:
raise RuntimeError("conflicting e+E found")
self._rights_config[section] = {"user_pattern": user_pattern, "collection_pattern": collection_pattern,
"allowed_groups": allowed_groups, "permission": permission}
except Exception as e: