diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-11-14 07:58:18 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-11-14 07:58:18 +0900 |
| commit | 2d2eefe3d44ad7118bbe39d5acb1301ed802522e (patch) | |
| tree | d961b9b0ab3bed7eed1efe0470b61eb381add724 /packages/backend/src/server/api/endpoints/admin | |
| parent | docs: Update Code of Conduct to version 2.1 (#12150) (diff) | |
| download | sharkey-2d2eefe3d44ad7118bbe39d5acb1301ed802522e.tar.gz sharkey-2d2eefe3d44ad7118bbe39d5acb1301ed802522e.tar.bz2 sharkey-2d2eefe3d44ad7118bbe39d5acb1301ed802522e.zip | |
feat: メールアドレスを使用してユーザー名を割り出す機能
Resolve #10158
Diffstat (limited to 'packages/backend/src/server/api/endpoints/admin')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/admin/accounts/find-by-email.ts | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/packages/backend/src/server/api/endpoints/admin/accounts/find-by-email.ts b/packages/backend/src/server/api/endpoints/admin/accounts/find-by-email.ts new file mode 100644 index 0000000000..686341582b --- /dev/null +++ b/packages/backend/src/server/api/endpoints/admin/accounts/find-by-email.ts @@ -0,0 +1,61 @@ +/* + * SPDX-FileCopyrightText: syuilo and other misskey contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { Inject, Injectable } from '@nestjs/common'; +import { Endpoint } from '@/server/api/endpoint-base.js'; +import type { UserProfilesRepository } from '@/models/_.js'; +import { DI } from '@/di-symbols.js'; +import { UserEntityService } from '@/core/entities/UserEntityService.js'; +import { ApiError } from '@/server/api/error.js'; + +export const meta = { + tags: ['admin'], + + requireCredential: true, + requireAdmin: true, + + errors: { + userNotFound: { + message: 'No such user who has the email address.', + code: 'USER_NOT_FOUND', + id: 'cb865949-8af5-4062-a88c-ef55e8786d1d', + }, + }, +} as const; + +export const paramDef = { + type: 'object', + properties: { + email: { type: 'string' }, + }, + required: ['email'], +} as const; + +@Injectable() +export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export + constructor( + @Inject(DI.userProfilesRepository) + private userProfilesRepository: UserProfilesRepository, + + private userEntityService: UserEntityService, + ) { + super(meta, paramDef, async (ps, me) => { + const profile = await this.userProfilesRepository.findOne({ + where: { email: ps.email }, + relations: ['user'], + }); + + if (profile == null) { + throw new ApiError(meta.errors.userNotFound); + } + + const res = await this.userEntityService.pack(profile.user!, null, { + detail: true, + }); + + return res; + }); + } +} |