2
0

page-serializer.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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, shouldDepopulateRevision = false) {
  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 revisionHackmdSynced
  27. depopulate(page, 'revisionHackmdSynced');
  28. // optional depopulation
  29. if (shouldDepopulateRevision) {
  30. depopulate(page, 'revision');
  31. }
  32. serializeInsecureUserAttributes(serialized);
  33. return serialized;
  34. }
  35. module.exports = {
  36. serializePageSecurely,
  37. };