Writing delegates may add at the top of a locked account's Files
ci / fork-checks (pull_request) Successful in 17s
ci / build (pull_request) Successful in 17m56s

A shared account refuses top-level folders, so an organize or full
delegate couldn't add anything to a locked account with no folders. A
delegate who may write now can, as the owner could; the reconcile after
the create grants it the new folder. Read delegates still can't (AL-6,
AL-7).
This commit is contained in:
2026-09-27 18:04:24 -07:00
parent d4d127fa7d
commit 9f6761c9dd
4 changed files with 55 additions and 7 deletions
+9 -4
View File
@@ -226,9 +226,14 @@ impl FileNodeCopy for Server {
}
};
if let Err(err) =
validate_file_node_hierarchy(None, &file_node, is_shared, &cache, &created_folders)
{
// inbuxa: AL-7: a writing delegate may add at the top
if let Err(err) = validate_file_node_hierarchy(
None,
&file_node,
is_shared && !access_token.delegate_may_write(account_id),
&cache,
&created_folders,
) {
response.not_created.append(id, err);
continue 'create;
}
@@ -362,7 +367,7 @@ impl FileNodeCopy for Server {
);
continue 'create;
}
} else if is_shared {
} else if is_shared && !access_token.delegate_may_write(account_id) {
response.not_created.append(
id,
SetError::forbidden()
+9 -3
View File
@@ -149,9 +149,15 @@ impl FileNodeSet for Server {
};
// Validate hierarchy
if let Err(err) =
validate_file_node_hierarchy(None, &file_node, is_shared, &cache, &created_folders)
{
// inbuxa: AL-7: a writing delegate may add at the top of a
// locked account, which may hold no folders at all
if let Err(err) = validate_file_node_hierarchy(
None,
&file_node,
is_shared && !access_token.delegate_may_write(account_id),
&cache,
&created_folders,
) {
response.not_created.append(id, err);
continue 'create;
}