user.ts 1.1 KB

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