2
0

user.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import EventEmitter from 'events';
  2. import type { IUserHasId } from '@growi/core';
  3. import { pagePathUtils } from '@growi/core/dist/utils';
  4. import loggerFactory from '~/utils/logger';
  5. const logger = loggerFactory('growi:events:user');
  6. class UserEvent extends EventEmitter {
  7. crowi: any;
  8. // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
  9. constructor(crowi: any) {
  10. super();
  11. this.crowi = crowi;
  12. }
  13. async onActivated(user: IUserHasId): Promise<void> {
  14. if (this.crowi.pageService === null) {
  15. logger.warn('crowi pageService is null');
  16. return;
  17. }
  18. const Page = this.crowi.model('Page');
  19. const userHomepagePath = pagePathUtils.userHomepagePath(user);
  20. let page = await Page.findByPath(userHomepagePath, true);
  21. if (page != null && page.creator != null && page.creator.toString() !== user._id.toString()) {
  22. await this.crowi.pageService.deleteCompletelyUserHomeBySystem(userHomepagePath);
  23. page = null;
  24. }
  25. if (page == null) {
  26. const body = `# ${user.username}\nThis is ${user.username}'s page`;
  27. try {
  28. await this.crowi.pageService.create(userHomepagePath, body, user, {});
  29. logger.debug('User page created', page);
  30. }
  31. catch (err) {
  32. logger.error('Failed to create user page', err);
  33. }
  34. }
  35. }
  36. }
  37. export default UserEvent;