|
|
@@ -2,7 +2,9 @@ import EventEmitter from 'events';
|
|
|
|
|
|
import type { IUserHasId } from '@growi/core';
|
|
|
import { pagePathUtils } from '@growi/core/dist/utils';
|
|
|
+import mongoose from 'mongoose';
|
|
|
|
|
|
+import type { PageModel } from '~/server/models/page';
|
|
|
import loggerFactory from '~/utils/logger';
|
|
|
|
|
|
const logger = loggerFactory('growi:events:user');
|
|
|
@@ -23,11 +25,14 @@ class UserEvent extends EventEmitter {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- const Page = this.crowi.model('Page');
|
|
|
+ const Page = mongoose.model('Page') as unknown as PageModel;
|
|
|
const userHomepagePath = pagePathUtils.userHomepagePath(user);
|
|
|
|
|
|
let page = await Page.findByPath(userHomepagePath, true);
|
|
|
|
|
|
+ // TODO: Make it more type safe
|
|
|
+ // Since the type of page.creator is 'any', we resort to the following comparison,
|
|
|
+ // checking if page.creator.toString() is not equal to user._id.toString(). Our code covers null, string, or object types.
|
|
|
if (page != null && page.creator != null && page.creator.toString() !== user._id.toString()) {
|
|
|
await this.crowi.pageService.deleteCompletelyUserHomeBySystem(userHomepagePath);
|
|
|
page = null;
|