Răsfoiți Sursa

fix: disable move option for user

yohei0125 4 ani în urmă
părinte
comite
3976400ff7

+ 11 - 5
packages/app/src/components/Common/Dropdown/PageItemControl.tsx

@@ -105,7 +105,10 @@ const PageItemControlDropdownMenu = React.memo((props: DropdownMenuProps): JSX.E
 
         {/* Bookmark */}
         { showBookmarkMenuItem && isEnableActions && !pageInfo.isEmpty && isIPageInfoForOperation(pageInfo) && (
-          <DropdownItem onClick={bookmarkItemClickedHandler}>
+          <DropdownItem
+            onClick={bookmarkItemClickedHandler}
+            disabled={!pageInfo.isMovable}
+          >
             <i className="fa fa-fw fa-bookmark-o"></i>
             { pageInfo.isBookmarked ? t('remove_bookmark') : t('add_bookmark') }
           </DropdownItem>
@@ -120,8 +123,11 @@ const PageItemControlDropdownMenu = React.memo((props: DropdownMenuProps): JSX.E
         ) }
 
         {/* Move/Rename */}
-        { isEnableActions && pageInfo.isMovable && (
-          <DropdownItem onClick={renameItemClickedHandler}>
+        { isEnableActions && (
+          <DropdownItem
+            onClick={renameItemClickedHandler}
+            disabled={!pageInfo.isMovable}
+          >
             <i className="icon-fw  icon-action-redo"></i>
             {t('Move/Rename')}
           </DropdownItem>
@@ -131,12 +137,12 @@ const PageItemControlDropdownMenu = React.memo((props: DropdownMenuProps): JSX.E
 
         {/* divider */}
         {/* Delete */}
-        { isEnableActions && pageInfo.isMovable && (
+        { isEnableActions && (
           <>
             <DropdownItem divider />
             <DropdownItem
               className={`pt-2 ${pageInfo.isDeletable ? 'text-danger' : ''}`}
-              disabled={!pageInfo.isDeletable}
+              disabled={!pageInfo.isDeletable && !pageInfo.isMovable}
               onClick={deleteItemClickedHandler}
             >
               <i className="icon-fw icon-trash"></i>

+ 5 - 2
packages/app/src/server/routes/apiv3/page.js

@@ -10,7 +10,9 @@ const express = require('express');
 const { body, query } = require('express-validator');
 
 const router = express.Router();
-const { convertToNewAffiliationPath, isTopPage } = pagePathUtils;
+const {
+  convertToNewAffiliationPath, isTopPage, isUserPage, isUserNamePage,
+} = pagePathUtils;
 const ErrorV3 = require('../../models/vo/error-apiv3');
 
 
@@ -356,6 +358,7 @@ module.exports = (crowi) => {
    *            description: Internal server error.
    */
   router.get('/info', certifySharedPage, loginRequired, validator.info, apiV3FormValidator, async(req, res) => {
+    console.log('YOOOOOOOOOOOOOOOOOOOOOOOO');
     const { user, isSharedPage } = req;
     const { pageId } = req.query;
 
@@ -391,7 +394,7 @@ module.exports = (crowi) => {
 
       const isBookmarked = await Bookmark.findByPageIdAndUserId(pageId, user._id);
       const isLiked = page.isLiked(user);
-      const isMovable = !isTopPage(page.path);
+      const isMovable = !isTopPage(page.path) && !isUserPage(page.path) && !isUserNamePage(page.path) && !page.isEmpty;
       const isAbleToDeleteCompletely = pageService.canDeleteCompletely(page.creator?._id, user);
 
       const subscription = await Subscription.findByUserIdAndTargetId(user._id, pageId);

+ 2 - 2
packages/app/src/server/service/page.ts

@@ -26,7 +26,7 @@ const debug = require('debug')('growi:services:page');
 
 const logger = loggerFactory('growi:services:page');
 const {
-  isCreatablePage, isTrashPage, isTopPage, isDeletablePage, omitDuplicateAreaPathFromPaths, omitDuplicateAreaPageFromPages,
+  isCreatablePage, isTrashPage, isTopPage, isDeletablePage, omitDuplicateAreaPathFromPaths, omitDuplicateAreaPageFromPages, isUserPage, isUserNamePage,
 } = pagePathUtils;
 
 const BULK_REINDEX_SIZE = 100;
@@ -1698,7 +1698,7 @@ class PageService {
       };
     }
 
-    const isMovable = isGuestUser ? false : !isTopPage(page.path);
+    const isMovable = isGuestUser ? false : !isTopPage(page.path) && !isUserPage(page.path) && !isUserNamePage(page.path) && !page.isEmpty;
 
     const likers = page.liker.slice(0, 15) as Ref<IUserHasId>[];
     const seenUsers = page.seenUsers.slice(0, 15) as Ref<IUserHasId>[];