Răsfoiți Sursa

Make use of isUserPage method when checking user page

arvid-e 2 luni în urmă
părinte
comite
d48d579417

+ 8 - 2
apps/app/src/pages/[[...path]]/page-data-props.ts

@@ -10,6 +10,8 @@ import { isIPageInfo, isIPageNotFoundInfo } from '@growi/core';
 import {
 import {
   isPermalink as _isPermalink,
   isPermalink as _isPermalink,
   isTopPage,
   isTopPage,
+  isUserPage,
+  isUsersTopPage,
 } from '@growi/core/dist/utils/page-path-utils';
 } from '@growi/core/dist/utils/page-path-utils';
 import { removeHeadingSlash } from '@growi/core/dist/utils/path-utils';
 import { removeHeadingSlash } from '@growi/core/dist/utils/path-utils';
 import assert from 'assert';
 import assert from 'assert';
@@ -168,9 +170,13 @@ export async function getPageDataForInitial(
 
 
   if (isHidingUserPages && pageWithMeta.data != null) {
   if (isHidingUserPages && pageWithMeta.data != null) {
     const pagePath = pageWithMeta.data.path;
     const pagePath = pageWithMeta.data.path;
+    const isTargetUserPage = isUserPage(pagePath) || isUsersTopPage(pagePath);
 
 
-    if (pagePath.startsWith('/user')) {
-      const isOwnPage = user != null && pagePath === `/user/${user.username}`;
+    if (isTargetUserPage) {
+      const isOwnPage =
+        user != null &&
+        (pagePath === `/user/${user.username}` ||
+          pagePath.startsWith(`/user/${user.username}/`));
 
 
       if (!isOwnPage) {
       if (!isOwnPage) {
         return {
         return {

+ 13 - 3
apps/app/src/server/routes/apiv3/page/index.ts

@@ -17,7 +17,11 @@ import {
   SubscriptionStatusType,
   SubscriptionStatusType,
 } from '@growi/core';
 } from '@growi/core';
 import { ErrorV3 } from '@growi/core/dist/models';
 import { ErrorV3 } from '@growi/core/dist/models';
-import { convertToNewAffiliationPath } from '@growi/core/dist/utils/page-path-utils';
+import {
+  convertToNewAffiliationPath,
+  isUserPage,
+  isUsersTopPage,
+} from '@growi/core/dist/utils/page-path-utils';
 import { normalizePath } from '@growi/core/dist/utils/path-utils';
 import { normalizePath } from '@growi/core/dist/utils/path-utils';
 import type { HydratedDocument } from 'mongoose';
 import type { HydratedDocument } from 'mongoose';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
@@ -225,9 +229,15 @@ module.exports = (crowi: Crowi) => {
 
 
         if (isHidingUserPages && page != null) {
         if (isHidingUserPages && page != null) {
           const pagePath = page.path;
           const pagePath = page.path;
-          if (pagePath.startsWith('/user')) {
+          const isTargetUserPage =
+            isUserPage(page.path) || isUsersTopPage(page.path);
+
+          if (isTargetUserPage) {
             const isOwnPage =
             const isOwnPage =
-              user != null && pagePath === `/user/${user.username}`;
+              user != null &&
+              (pagePath === `/user/${user.username}` ||
+                pagePath.startsWith(`/user/${user.username}/`));
+
             if (!isOwnPage) {
             if (!isOwnPage) {
               return res.apiv3Err(
               return res.apiv3Err(
                 new ErrorV3('Page is forbidden', 'page-is-forbidden'),
                 new ErrorV3('Page is forbidden', 'page-is-forbidden'),