page-serializer.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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
  27. depopulate(serialized, 'revision');
  28. serializeInsecureUserAttributes(serialized);
  29. return serialized;
  30. }
  31. module.exports = {
  32. serializePageSecurely,
  33. };