itizawa 5 лет назад
Родитель
Сommit
0c5182a121
2 измененных файлов с 11 добавлено и 7 удалено
  1. 6 4
      src/server/service/file-uploader/aws.js
  2. 5 3
      src/server/service/file-uploader/gcs.js

+ 6 - 4
src/server/service/file-uploader/aws.js

@@ -88,19 +88,21 @@ module.exports = function(crowi) {
     const s3 = S3Factory();
     const awsConfig = getAwsConfig();
     const filePath = getFilePathOnStorage(attachment);
+    const provideSecForTemporaryUrl = this.configManager.getConfig('crowi', 'aws:provideSecForTemporaryUrl');
 
-    // issue signed url for 120 seconds
+    // issue signed url (default: expires 120 seconds)
     // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property
     const params = {
       Bucket: awsConfig.bucket,
       Key: filePath,
-      Expires: Attachment.SECONDS_OF_CASH_EXPIRATION,
+      Expires: provideSecForTemporaryUrl,
     };
     const signedUrl = s3.getSignedUrl('getObject', params);
 
+    res.redirect(signedUrl);
+
     try {
-      const { externalUrlCached } = await attachment.cashExternalUrl(signedUrl);
-      return res.redirect(externalUrlCached);
+      return attachment.cashTemporaryUrlByProvideSec(signedUrl, provideSecForTemporaryUrl);
     }
     catch (err) {
       logger.error(err);

+ 5 - 3
src/server/service/file-uploader/gcs.js

@@ -67,17 +67,19 @@ module.exports = function(crowi) {
     const myBucket = gcs.bucket(getGcsBucket());
     const filePath = getFilePathOnStorage(attachment);
     const file = myBucket.file(filePath);
+    const provideSecForTemporaryUrl = this.configManager.getConfig('crowi', 'gcs:provideSecForTemporaryUrl');
 
-    // issue signed url for 120 seconds
+    // issue signed url (default: expires 120 seconds)
     // https://cloud.google.com/storage/docs/access-control/signed-urls
     const signedUrl = await file.getSignedUrl({
       action: 'read',
       expires: Date.now() + Attachment.SECONDS_OF_CASH_EXPIRATION * 1000,
     });
 
+    res.redirect(signedUrl);
+
     try {
-      const { externalUrlCached } = await attachment.cashExternalUrl(signedUrl);
-      return res.redirect(externalUrlCached);
+      return attachment.cashTemporaryUrlByProvideSec(signedUrl, provideSecForTemporaryUrl);
     }
     catch (err) {
       logger.error(err);