page-serializer.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. const { serializeUserSecurely } = require('./user-serializer');
  2. function depopulate(page, attributeName) {
  3. // revert the ObjectID
  4. if (page[attributeName] != null && page[attributeName]._id != null) {
  5. page[attributeName] = page[attributeName]._id;
  6. }
  7. }
  8. function serializeInsecureUserAttributes(page) {
  9. if (page.lastUpdateUser != null && page.lastUpdateUser._id != null) {
  10. page.lastUpdateUser = serializeUserSecurely(page.lastUpdateUser);
  11. }
  12. if (page.creator != null && page.creator._id != null) {
  13. page.creator = serializeUserSecurely(page.creator);
  14. }
  15. if (page.revision != null && page.revision.author != null && page.revision.author._id != null) {
  16. page.revision.author = serializeUserSecurely(page.revision.author);
  17. }
  18. return page;
  19. }
  20. function serializePageSecurely(page) {
  21. let serialized = page;
  22. // invoke toObject if page is a model instance
  23. if (page.toObject != null) {
  24. serialized = page.toObject();
  25. }
  26. // depopulate revision and revisionHackmdSynced
  27. depopulate(serialized, 'revision');
  28. depopulate(serialized, 'revisionHackmdSynced');
  29. serializeInsecureUserAttributes(serialized);
  30. return serialized;
  31. }
  32. module.exports = {
  33. serializePageSecurely,
  34. };