page-serializer.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
  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 (
  16. page.revision != null &&
  17. page.revision.author != null &&
  18. page.revision.author._id != null
  19. ) {
  20. page.revision.author = serializeUserSecurely(page.revision.author);
  21. }
  22. return page;
  23. }
  24. export function serializePageSecurely(page) {
  25. let serialized = page;
  26. // invoke toObject if page is a model instance
  27. if (page.toObject != null) {
  28. serialized = page.toObject();
  29. }
  30. // depopulate revision
  31. depopulate(serialized, 'revision');
  32. serializeInsecureUserAttributes(serialized);
  33. return serialized;
  34. }