aboutsummaryrefslogtreecommitdiff
path: root/src/fields/util.ts
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2023-07-05 16:15:27 -0400
committerbobzel <zzzman@gmail.com>2023-07-05 16:15:27 -0400
commit5a9af979cc293d0e3843270ee053c24bf0eb6ef5 (patch)
tree1c03d5fb55a97f5e3da96a448af5079ec2b0e42b /src/fields/util.ts
parentbf609fdadc164da5663671a0c42c3a13056ee376 (diff)
changed acl inheritance for docking views.
Diffstat (limited to 'src/fields/util.ts')
-rw-r--r--src/fields/util.ts33
1 files changed, 15 insertions, 18 deletions
diff --git a/src/fields/util.ts b/src/fields/util.ts
index 0f613d926..48de36efe 100644
--- a/src/fields/util.ts
+++ b/src/fields/util.ts
@@ -131,10 +131,10 @@ export function inheritParentAcls(parent: Doc, child: Doc) {
for (const key of Object.keys(parent)) {
// if the default acl mode is private, then don't inherit the acl-Public permission, but set it to private.
// const permission: string = key === 'acl-Public' && Doc.defaultAclPrivate ? AclPrivate : parent[key];
- const symbol = ReverseHierarchyMap.get(StrCast(parent[key]))
- if (symbol){
+ const symbol = ReverseHierarchyMap.get(StrCast(parent[key]));
+ if (symbol) {
const sharePermission = HierarchyMapping.get(symbol.acl!)!.name;
- key.startsWith('acl') && distributeAcls(key, sharePermission, child)
+ key.startsWith('acl') && distributeAcls(key, sharePermission, child);
}
}
}
@@ -171,7 +171,7 @@ const getEffectiveAclCache = computedFn(function (target: any, user?: string) {
// return layout acl from cache or chache the acl and return.
const getEffectiveLayoutAclCache = computedFn(function (target: any, user?: string) {
return getEffectiveLayoutAcl(target, user);
- }, true);
+}, true);
/**
* Calculates the effective access right to a document for the current user.
@@ -183,13 +183,13 @@ export function GetEffectiveAcl(target: any, user?: string): symbol {
}
/**
-* Calculates the effective access layout right to a document for the current user. By getting the container's effective acl if the layout acl isn't set.
-*/
+ * Calculates the effective access layout right to a document for the current user. By getting the container's effective acl if the layout acl isn't set.
+ */
export function GetEffectiveLayoutAcl(target: any, user?: string): symbol {
if (!target) return AclPrivate;
if (target[UpdatingFromServer]) return AclAdmin;
return getEffectiveLayoutAclCache(target, user);
- }
+}
function getPropAcl(target: any, prop: string | symbol | number) {
if (typeof prop === 'symbol' || target[UpdatingFromServer]) return AclAdmin; // requesting the UpdatingFromServer prop or AclSym must always go through to keep the local DB consistent
@@ -234,9 +234,9 @@ function getEffectiveAcl(target: any, user?: string): symbol {
}
/**
-* Returns the layout acl that is effective on the document passed through as the target. If no layout acls
-* have been set, it returns the regular acls for the document target is contained in.
-*/
+ * Returns the layout acl that is effective on the document passed through as the target. If no layout acls
+ * have been set, it returns the regular acls for the document target is contained in.
+ */
function getEffectiveLayoutAcl(target: any, user?: string): symbol {
const targetAcls = target[DocAcl];
@@ -248,27 +248,24 @@ function getEffectiveLayoutAcl(target: any, user?: string): symbol {
if ((GetCachedGroupByName(entity) || userChecked === entity || entity === 'Me') && entity != 'Public') {
if (effectiveAcl && HierarchyMapping.get(value as symbol)!.level > HierarchyMapping.get(effectiveAcl)!.level) {
effectiveAcl = value as symbol;
- }
- else{
+ } else {
effectiveAcl = value as symbol;
}
}
}
- if (effectiveAcl){
+ if (effectiveAcl) {
return DocServer?.Control?.isReadOnly?.() && HierarchyMapping.get(effectiveAcl)!.level < aclLevel.editable ? AclEdit : effectiveAcl;
- }
- else{
+ } else {
return GetEffectiveAcl(Doc.GetProto(target['embedContainer']), user);
}
}
// authored documents are private until an ACL is set.
const targetAuthor = target.__fieldTuples?.author || target.author; // target may be a Doc of Proxy, so check __fieldTuples.author and .author
if (targetAuthor && targetAuthor !== userChecked) return AclPrivate;
- return AclAdmin;
+ return AclAdmin;
}
-
/**
* Recursively distributes the access right for a user across the children of a document and its annotations.
* @param key the key storing the access right (e.g. acl-groupname)
@@ -286,7 +283,7 @@ export function distributeAcls(key: string, acl: SharingPermissions, target: Doc
//apparently we can't call updateCachedAcls twice (once for the main dashboard, and again for the nested dashboard...???)
updateCachedAcls(target);
}
- return;
+ //return;
}
visited.push(target);