itizawa 5 лет назад
Родитель
Сommit
77d4f18e3f

+ 2 - 1
src/server/middlewares/login-required.js

@@ -17,7 +17,8 @@ module.exports = (crowi, isGuestAllowed = false) => {
       return next();
     }
 
-    if (req.isSharedPage) {
+    // check the page is shared
+    if (isGuestAllowed && req.isSharedPage) {
       logger.debug('target page is shared page');
       return next();
     }

+ 16 - 0
src/test/middlewares/login-required.test.js

@@ -52,6 +52,22 @@ describe('loginRequired', () => {
       expect(result).toBe('redirect');
     });
 
+    test('pass anyone into sharedPage when aclService.isGuestAllowedToRead() returns true', () => {
+
+      req.isSharedPage = true
+
+      // prepare spy for AclService.isGuestAllowedToRead
+      const isGuestAllowedToReadSpy = jest.spyOn(crowi.aclService, 'isGuestAllowedToRead')
+        .mockImplementation(() => false);
+
+      const result = loginRequired(req, res, next);
+
+      expect(isGuestAllowedToReadSpy).toHaveBeenCalled();
+      expect(next).toHaveBeenCalled();
+      expect(res.redirect).not.toHaveBeenCalled();
+      expect(result).toBe('next');
+    });
+
   });