Yuki Takei 5 лет назад
Родитель
Сommit
13ad89e2a9

+ 3 - 7
src/server/models/serializers/page-serializer.js

@@ -20,7 +20,7 @@ function serializeInsecureUserAttributes(page) {
   return page;
 }
 
-function serializePageSecurely(page, shouldDepopulateRevision = false) {
+function serializePageSecurely(page) {
   let serialized = page;
 
   // invoke toObject if page is a model instance
@@ -28,14 +28,10 @@ function serializePageSecurely(page, shouldDepopulateRevision = false) {
     serialized = page.toObject();
   }
 
-  // depopulate revisionHackmdSynced
+  // depopulate revision and revisionHackmdSynced
+  depopulate(page, 'revision');
   depopulate(page, 'revisionHackmdSynced');
 
-  // optional depopulation
-  if (shouldDepopulateRevision) {
-    depopulate(page, 'revision');
-  }
-
   serializeInsecureUserAttributes(serialized);
 
   return serialized;

+ 20 - 0
src/server/models/serializers/revision-serializer.js

@@ -0,0 +1,20 @@
+const { serializeUserSecurely } = require('./user-serializer');
+
+function serializeInsecureUserAttributes(revision) {
+  if (revision.author != null && revision.author._id != null) {
+    revision.author = serializeUserSecurely(revision.author);
+  }
+  return revision;
+}
+
+function serializeRevisionSecurely(revision) {
+  const serialized = revision;
+
+  serializeInsecureUserAttributes(serialized);
+
+  return serialized;
+}
+
+module.exports = {
+  serializeRevisionSecurely,
+};

+ 1 - 1
src/server/models/vo/s2c-message.js

@@ -7,7 +7,7 @@ class S2cMessagePageUpdated {
 
 
   constructor(page, user) {
-    const serializedPage = serializePageSecurely(page, true);
+    const serializedPage = serializePageSecurely(page);
 
     const {
       _id, revision, revisionHackmdSynced, hasDraftOnHackmd,