Taichi Masuyama 3 лет назад
Родитель
Сommit
1b693ba95d

+ 11 - 9
packages/app/src/components/Page/FixPageGrantAlert.tsx

@@ -27,7 +27,7 @@ const FixPageGrantModal = (props: ModalProps): JSX.Element => {
   } = props;
   } = props;
 
 
   const [selectedGrant, setSelectedGrant] = useState<PageGrant>(PageGrant.GRANT_OWNER);
   const [selectedGrant, setSelectedGrant] = useState<PageGrant>(PageGrant.GRANT_OWNER);
-  const [selectedGroupName, setSelectedGroupName] = useState<string | undefined>(undefined);
+  const [selectedGroup, setSelectedGroup] = useState<{_id: string, name: string} | undefined>(undefined); // TODO: Typescriptize model
 
 
   // Alert message state
   // Alert message state
   const [shouldShowModalAlert, setShowModalAlert] = useState<boolean>(false);
   const [shouldShowModalAlert, setShowModalAlert] = useState<boolean>(false);
@@ -38,14 +38,14 @@ const FixPageGrantModal = (props: ModalProps): JSX.Element => {
   useEffect(() => {
   useEffect(() => {
     if (isOpen) {
     if (isOpen) {
       setSelectedGrant(PageGrant.GRANT_OWNER);
       setSelectedGrant(PageGrant.GRANT_OWNER);
-      setSelectedGroupName(undefined);
+      setSelectedGroup(undefined);
       setShowModalAlert(false);
       setShowModalAlert(false);
     }
     }
   }, [isOpen]);
   }, [isOpen]);
 
 
   const submit = async() => {
   const submit = async() => {
     // Validate input values
     // Validate input values
-    if (selectedGrant === PageGrant.GRANT_USER_GROUP && selectedGroupName == null) {
+    if (selectedGrant === PageGrant.GRANT_USER_GROUP && selectedGroup == null) {
       setShowModalAlert(true);
       setShowModalAlert(true);
       return;
       return;
     }
     }
@@ -55,13 +55,15 @@ const FixPageGrantModal = (props: ModalProps): JSX.Element => {
     try {
     try {
       await apiv3Put(`/page/${pageId}/grant`, {
       await apiv3Put(`/page/${pageId}/grant`, {
         grant: selectedGrant,
         grant: selectedGrant,
-        grantedGroupName: selectedGroupName,
+        grantedGroup: selectedGroup?._id,
       });
       });
+
+      toastSuccess(t('Successfully updated'));
     }
     }
     catch (err) {
     catch (err) {
-      toastError();
+      console.error(err);
+      toastError(t('Failed to update'));
     }
     }
-    toastSuccess();
   };
   };
 
 
   const renderModalBodyAndFooter = () => {
   const renderModalBodyAndFooter = () => {
@@ -131,9 +133,9 @@ const FixPageGrantModal = (props: ModalProps): JSX.Element => {
                     >
                     >
                       <span className="float-left">
                       <span className="float-left">
                         {
                         {
-                          selectedGroupName == null
+                          selectedGroup == null
                             ? t('fix_page_grant.modal.select_group_default_text')
                             ? t('fix_page_grant.modal.select_group_default_text')
-                            : selectedGroupName
+                            : selectedGroup.name
                         }
                         }
                       </span>
                       </span>
                     </button>
                     </button>
@@ -143,7 +145,7 @@ const FixPageGrantModal = (props: ModalProps): JSX.Element => {
                           <button
                           <button
                             className="dropdown-item"
                             className="dropdown-item"
                             type="button"
                             type="button"
-                            onClick={() => setSelectedGroupName(g.name)}
+                            onClick={() => setSelectedGroup(g)}
                           >
                           >
                             {g.name}
                             {g.name}
                           </button>
                           </button>

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

@@ -475,7 +475,7 @@ module.exports = (crowi) => {
 
 
     const Page = crowi.model('Page');
     const Page = crowi.model('Page');
 
 
-    const page = await Page.findByIdAndViewer(pageId, req.user, false);
+    const page = await Page.findByIdAndViewer(pageId, req.user, null, false);
 
 
     if (page == null) {
     if (page == null) {
       return res.apiv3Err(new ErrorV3('Page is unreachable or empty.', 'page_unreachable_or_empty'), 400);
       return res.apiv3Err(new ErrorV3('Page is unreachable or empty.', 'page_unreachable_or_empty'), 400);