Просмотр исходного кода

impl retrieveValidShareLinkByReferer

Yuki Takei 2 лет назад
Родитель
Сommit
91721b80d3

+ 1 - 6
apps/app/src/server/middlewares/certify-shared-file/certify-shared-file.ts

@@ -20,7 +20,7 @@ export const certifySharedFileMiddleware = async(req: RequestToAllowShareLink, r
   const { referer } = req.headers;
 
   if (fileId == null) {
-    logger.error('The param fileId is required.');
+    logger.error('The param fileId is required. Please confirm to usage of this middleware.');
     return next();
   }
 
@@ -49,11 +49,6 @@ export const certifySharedFileMiddleware = async(req: RequestToAllowShareLink, r
     logger.info(`No valid ShareLink document found by the referer (${validReferer.referer}})`);
     return next();
   }
-  // const ShareLink = getModelSafely<IShareLink>('ShareLink');
-  // if (ShareLink == null) {
-  //   logger.warn('Could not get Attachment model. next() is called without processing anything.');
-  //   return next();
-  // }
 
   if (!validateAttachment(fileId, shareLink)) {
     logger.info(`No valid ShareLink document found by the fileId (${fileId}) and referer (${validReferer.referer}})`);

+ 22 - 5
apps/app/src/server/middlewares/certify-shared-file/retrieve-valid-share-link.ts

@@ -1,11 +1,28 @@
-import type { IShareLink } from '~/interfaces/share-link';
+import type { ShareLinkModel } from '~/server/models/share-link';
+import { getModelSafely } from '~/server/util/mongoose-utils';
+import loggerFactory from '~/utils/logger';
 
 import type { ValidReferer } from './interfaces';
 
-export const retrieveValidShareLinkByReferer = (referer: ValidReferer): IShareLink | null => {
-  // find ShareLink
 
-  // is not expired
+const logger = loggerFactory('growi:middleware:certify-shared-fire:retrieve-valid-share-link');
 
-  return null;
+
+export const retrieveValidShareLinkByReferer = async(referer: ValidReferer): Promise<ShareLinkModel | null> => {
+  const ShareLink = getModelSafely<ShareLinkModel>('ShareLink');
+  if (ShareLink == null) {
+    logger.warn('Could not get ShareLink model. next() will be called without processing anything.');
+    return null;
+  }
+
+  const shareLinkId = referer;
+  const shareLink = await ShareLink.findOne({
+    id: shareLinkId,
+  });
+  if (shareLink == null || shareLink.isExpired()) {
+    logger.info(`ShareLink ('${shareLinkId}') is not found or has already expired.`);
+    return null;
+  }
+
+  return shareLink;
 };