itizawa 5 лет назад
Родитель
Сommit
86c67a4b6e
2 измененных файлов с 13 добавлено и 3 удалено
  1. 9 0
      src/server/models/share-link.js
  2. 4 3
      src/server/routes/page.js

+ 9 - 0
src/server/models/share-link.js

@@ -24,7 +24,16 @@ const schema = new mongoose.Schema({
 schema.plugin(mongoosePaginate);
 schema.plugin(mongoosePaginate);
 schema.plugin(uniqueValidator);
 schema.plugin(uniqueValidator);
 
 
+
 module.exports = function(crowi) {
 module.exports = function(crowi) {
+
+  schema.methods.isExpired = function() {
+    if (this.expiredAt == null) {
+      return false;
+    }
+    return this.expiredAt.getTime() < new Date().getTime();
+  };
+
   const model = mongoose.model('ShareLink', schema);
   const model = mongoose.model('ShareLink', schema);
   return model;
   return model;
 };
 };

+ 4 - 3
src/server/routes/page.js

@@ -449,15 +449,16 @@ module.exports = function(crowi, app) {
     const view = `layout-${layoutName}/shared_page`;
     const view = `layout-${layoutName}/shared_page`;
 
 
     const shareLink = await ShareLink.findOne({ _id: linkId }).populate('relatedPage');
     const shareLink = await ShareLink.findOne({ _id: linkId }).populate('relatedPage');
-    let page = shareLink.relatedPage;
 
 
-    if (page == null) {
+    if (shareLink.relatedPage == null || shareLink == null) {
       // page is not found
       // page is not found
       return res.render(`layout-${layoutName}/not_found_shared_page`);
       return res.render(`layout-${layoutName}/not_found_shared_page`);
     }
     }
 
 
+    let page = shareLink.relatedPage;
+
     // check if share link is expired
     // check if share link is expired
-    if (shareLink.expiredAt.getTime() < new Date().getTime()) {
+    if (shareLink.isExpired()) {
       // page is not found
       // page is not found
       return res.render(`layout-${layoutName}/expired_shared_page`);
       return res.render(`layout-${layoutName}/expired_shared_page`);
     }
     }