certify-shared-page.js 930 B

123456789101112131415161718192021222324252627282930313233
  1. import ShareLink from '~/server/models/share-link';
  2. import loggerFactory from '~/utils/logger';
  3. const logger = loggerFactory('growi:middleware:certify-shared-page');
  4. /** @param {import('~/server/crowi').default} crowi Crowi instance */
  5. module.exports = (crowi) => {
  6. return async (req, res, next) => {
  7. const pageId = req.query.pageId || req.body.pageId || null;
  8. const shareLinkId = req.query.shareLinkId || req.body.shareLinkId || null;
  9. if (pageId == null || shareLinkId == null) {
  10. return next();
  11. }
  12. const sharelink = await ShareLink.findOne({
  13. _id: { $eq: shareLinkId },
  14. relatedPage: { $eq: pageId },
  15. });
  16. // check sharelink enabled
  17. if (sharelink == null || sharelink.isExpired()) {
  18. return next();
  19. }
  20. logger.debug('shareLink id is', sharelink._id);
  21. req.isSharedPage = true;
  22. logger.debug('Confirmed target page id is a share page');
  23. next();
  24. };
  25. };