Merge pull request #2068 from pbiering/sharing-review-7
Sharing review 7
This commit is contained in:
@@ -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"))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user