retrieve-valid-share-link.ts 992 B

12345678910111213141516171819202122232425262728
  1. import type { ShareLinkDocument, ShareLinkModel } from '~/server/models/share-link';
  2. import { getModelSafely } from '~/server/util/mongoose-utils';
  3. import loggerFactory from '~/utils/logger';
  4. import type { ValidReferer } from './interfaces';
  5. const logger = loggerFactory('growi:middleware:certify-shared-page-attachment:retrieve-valid-share-link');
  6. export const retrieveValidShareLinkByReferer = async(referer: ValidReferer): Promise<ShareLinkDocument | null> => {
  7. const ShareLink = getModelSafely<ShareLinkDocument, ShareLinkModel>('ShareLink');
  8. if (ShareLink == null) {
  9. logger.warn('Could not get ShareLink model. next() will be called without processing anything.');
  10. return null;
  11. }
  12. const shareLinkId = referer;
  13. const shareLink = await ShareLink.findOne({
  14. id: shareLinkId,
  15. });
  16. if (shareLink == null || shareLink.isExpired()) {
  17. logger.info(`ShareLink ('${shareLinkId}') is not found or has already expired.`);
  18. return null;
  19. }
  20. return shareLink;
  21. };