diff options
| author | おさむのひと <46447427+samunohito@users.noreply.github.com> | 2024-07-29 21:31:32 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-29 21:31:32 +0900 |
| commit | 72bc78974657b22ab6b1f5a36f6144c294e36de3 (patch) | |
| tree | b2d25d52e254f91e1b718123c25e73afea2039bb /packages/backend/src/core/UserService.ts | |
| parent | New Crowdin updates (#13916) (diff) | |
| download | sharkey-72bc78974657b22ab6b1f5a36f6144c294e36de3.tar.gz sharkey-72bc78974657b22ab6b1f5a36f6144c294e36de3.tar.bz2 sharkey-72bc78974657b22ab6b1f5a36f6144c294e36de3.zip | |
feature: ユーザ作成時にSystemWebhookを発信できるようにする (#14321)
* feature: ユーザ作成時にSystemWebhookを発信できるようにする
* fix CHANGELOG.md
Diffstat (limited to 'packages/backend/src/core/UserService.ts')
| -rw-r--r-- | packages/backend/src/core/UserService.ts | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/packages/backend/src/core/UserService.ts b/packages/backend/src/core/UserService.ts index 72fa4d928d..9b1961c631 100644 --- a/packages/backend/src/core/UserService.ts +++ b/packages/backend/src/core/UserService.ts @@ -8,15 +8,18 @@ import type { FollowingsRepository, UsersRepository } from '@/models/_.js'; import type { MiUser } from '@/models/User.js'; import { DI } from '@/di-symbols.js'; import { bindThis } from '@/decorators.js'; +import { SystemWebhookService } from '@/core/SystemWebhookService.js'; +import { UserEntityService } from '@/core/entities/UserEntityService.js'; @Injectable() export class UserService { constructor( @Inject(DI.usersRepository) private usersRepository: UsersRepository, - @Inject(DI.followingsRepository) private followingsRepository: FollowingsRepository, + private systemWebhookService: SystemWebhookService, + private userEntityService: UserEntityService, ) { } @@ -50,4 +53,23 @@ export class UserService { }); } } + + /** + * SystemWebhookを用いてユーザに関する操作内容を管理者各位に通知する. + * ここではJobQueueへのエンキューのみを行うため、即時実行されない. + * + * @see SystemWebhookService.enqueueSystemWebhook + */ + @bindThis + public async notifySystemWebhook(user: MiUser, type: 'userCreated') { + const packedUser = await this.userEntityService.pack(user, null, { schema: 'UserLite' }); + const recipientWebhookIds = await this.systemWebhookService.fetchSystemWebhooks({ isActive: true, on: [type] }); + for (const webhookId of recipientWebhookIds) { + await this.systemWebhookService.enqueueSystemWebhook( + webhookId, + type, + packedUser, + ); + } + } } |