Просмотр исходного кода

Merge branch 'imprv/integrate-customize-user-page-delete' into imprv/105325-124724-cannot-change-page-grant

ryoji-s 2 лет назад
Родитель
Сommit
32e9caa7f1

+ 2 - 2
apps/app/src/server/events/user.ts

@@ -27,8 +27,8 @@ class UserEvent extends EventEmitter {
 
 
     let page = await Page.findByPath(userHomepagePath, true);
     let page = await Page.findByPath(userHomepagePath, true);
 
 
-    if (page !== null && page.creator !== null && page.creator.toString() !== user._id.toString()) {
-      await this.crowi.pageService.deleteCompletelyUserHomeBySystem(user, userHomepagePath);
+    if (page != null && page.creator != null && page.creator.toString() !== user._id.toString()) {
+      await this.crowi.pageService.deleteCompletelyUserHomeBySystem(userHomepagePath);
       page = null;
       page = null;
     }
     }
 
 

+ 1 - 1
apps/app/src/server/routes/apiv3/users.js

@@ -801,7 +801,7 @@ module.exports = (crowi) => {
       activityEvent.emit('update', res.locals.activity._id, { action: SupportedAction.ACTION_ADMIN_USERS_REMOVE });
       activityEvent.emit('update', res.locals.activity._id, { action: SupportedAction.ACTION_ADMIN_USERS_REMOVE });
 
 
       if (isUsersHomepageDeletionEnabled) {
       if (isUsersHomepageDeletionEnabled) {
-        crowi.pageService.deleteCompletelyUserHomeBySystem(req.user, userHomepagePath);
+        crowi.pageService.deleteCompletelyUserHomeBySystem(userHomepagePath);
       }
       }
 
 
       return res.apiv3({ user: serializedUser });
       return res.apiv3({ user: serializedUser });

+ 2 - 19
apps/app/src/server/service/page.ts

@@ -1966,12 +1966,11 @@ class PageService {
    * @description This function is intended to be used exclusively for forcibly deleting the user homepage by the system.
    * @description This function is intended to be used exclusively for forcibly deleting the user homepage by the system.
    * It should only be called from within the appropriate context and with caution as it performs a system-level operation.
    * It should only be called from within the appropriate context and with caution as it performs a system-level operation.
    *
    *
-   * @param {IUserHasId} user - The user object.
    * @param {string} userHomepagePath - The path of the user's homepage.
    * @param {string} userHomepagePath - The path of the user's homepage.
    * @returns {Promise<void>} - A Promise that resolves when the deletion is complete.
    * @returns {Promise<void>} - A Promise that resolves when the deletion is complete.
    * @throws {Error} - If an error occurs during the deletion process.
    * @throws {Error} - If an error occurs during the deletion process.
    */
    */
-  async deleteCompletelyUserHomeBySystem(user: IUserHasId, userHomepagePath: string): Promise<void> {
+  async deleteCompletelyUserHomeBySystem(userHomepagePath: string): Promise<void> {
     const Page = this.crowi.model('Page');
     const Page = this.crowi.model('Page');
     const userHomepage = await Page.findByPath(userHomepagePath, true);
     const userHomepage = await Page.findByPath(userHomepagePath, true);
 
 
@@ -1985,7 +1984,6 @@ class PageService {
     const ids = [userHomepage._id];
     const ids = [userHomepage._id];
     const paths = [userHomepage.path];
     const paths = [userHomepage.path];
 
 
-    let pageOp;
     try {
     try {
       if (!shouldUseV4Process) {
       if (!shouldUseV4Process) {
         // Ensure consistency of ancestors
         // Ensure consistency of ancestors
@@ -2003,18 +2001,9 @@ class PageService {
 
 
       if (!userHomepage.isEmpty) {
       if (!userHomepage.isEmpty) {
         // Emit an event for the search service
         // Emit an event for the search service
-        this.pageEvent.emit('deleteCompletely', userHomepage, user);
+        this.pageEvent.emit('deleteCompletely', userHomepage);
       }
       }
 
 
-      // Create a PageOperation model
-      pageOp = await PageOperation.create({
-        actionType: PageActionType.DeleteCompletely,
-        actionStage: PageActionStage.Main,
-        page: userHomepage,
-        user,
-        fromPath: userHomepage.path,
-      });
-
       const { PageQueryBuilder } = Page;
       const { PageQueryBuilder } = Page;
 
 
       // Find descendant pages with system deletion condition
       // Find descendant pages with system deletion condition
@@ -2058,15 +2047,9 @@ class PageService {
 
 
       await streamToPromise(writeStream);
       await streamToPromise(writeStream);
       // ────────┤ end │─────────
       // ────────┤ end │─────────
-
-      // Clean up PageOperation
-      await PageOperation.deleteOne({ _id: pageOp._id });
     }
     }
     catch (err) {
     catch (err) {
       logger.error('Error occurred while deleting user homepage and subpages.', err);
       logger.error('Error occurred while deleting user homepage and subpages.', err);
-      if (pageOp != null) {
-        await PageOperation.deleteOne({ _id: pageOp._id });
-      }
       throw err;
       throw err;
     }
     }
   }
   }