aboutsummaryrefslogtreecommitdiff
path: root/src/fields
diff options
context:
space:
mode:
Diffstat (limited to 'src/fields')
-rw-r--r--src/fields/DateField.ts4
-rw-r--r--src/fields/List.ts2
-rw-r--r--src/fields/util.ts11
3 files changed, 10 insertions, 7 deletions
diff --git a/src/fields/DateField.ts b/src/fields/DateField.ts
index bee62663e..48106d978 100644
--- a/src/fields/DateField.ts
+++ b/src/fields/DateField.ts
@@ -20,14 +20,14 @@ export class DateField extends ObjectField {
}
toString() {
- return `${this.date.toISOString()}`;
+ return `${this.date.toLocaleString()}`;
}
[ToScriptString]() {
return `new DateField(new Date(${this.date.toISOString()}))`;
}
[ToString]() {
- return this.date.toISOString();
+ return this.date.toLocaleString();
}
getDate() {
diff --git a/src/fields/List.ts b/src/fields/List.ts
index 3601f282b..c9e4bd3c1 100644
--- a/src/fields/List.ts
+++ b/src/fields/List.ts
@@ -324,7 +324,7 @@ class ListImpl<T extends Field> extends ObjectField {
return `new List([${(this as any).map((field: any) => Field.toScriptString(field))}])`;
}
[ToString]() {
- return "List";
+ return `List(${(this as any).length})`;
}
}
export type List<T extends Field> = ListImpl<T> & (T | (T extends RefField ? Promise<T> : never))[];
diff --git a/src/fields/util.ts b/src/fields/util.ts
index d8523dfa2..9679527e4 100644
--- a/src/fields/util.ts
+++ b/src/fields/util.ts
@@ -156,14 +156,17 @@ export enum SharingPermissions {
*/
export function GetEffectiveAcl(target: any, in_prop?: string | symbol | number, user?: string): symbol {
if (!target) return AclPrivate;
+
+ // all changes received fromt the server must be processed as Admin
if (in_prop === UpdatingFromServer || target[UpdatingFromServer]) return AclAdmin;
- if (target[AclSym] && Object.keys(target[AclSym]).length) {
+ // if the current user is the author of the document / the current user is a member of the admin group
+ const userChecked = user || Doc.CurrentUserEmail;
+ if (userChecked === (target.__fields?.author || target.author)) return AclAdmin;
- const userChecked = user || Doc.CurrentUserEmail;
+ if (target[AclSym] && Object.keys(target[AclSym]).length) {
- // if the current user is the author of the document / the current user is a member of the admin group
- if (userChecked === (target.__fields?.author || target.author) || currentUserGroups.includes("admin")) return AclAdmin;
+ if (currentUserGroups.includes("admin")) return AclAdmin;
// if the ACL is being overriden or the property being modified is one of the playground fields (which can be freely modified)
if (_overrideAcl || (in_prop && DocServer.PlaygroundFields?.includes(in_prop.toString()))) return AclEdit;