diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-04-29 17:03:14 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-04-29 17:03:14 +0900 |
| commit | 0ad7869249c8594277afc0aa707c05ac2ed633cf (patch) | |
| tree | 8a889e6c4a764df00ac0ce4c0d8e11c62856387a /packages/backend/src/server/api/endpoints/username | |
| parent | Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop (diff) | |
| download | sharkey-0ad7869249c8594277afc0aa707c05ac2ed633cf.tar.gz sharkey-0ad7869249c8594277afc0aa707c05ac2ed633cf.tar.bz2 sharkey-0ad7869249c8594277afc0aa707c05ac2ed633cf.zip | |
feat: preserved usernames
Resolve #10704
Diffstat (limited to 'packages/backend/src/server/api/endpoints/username')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/username/available.ts | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/packages/backend/src/server/api/endpoints/username/available.ts b/packages/backend/src/server/api/endpoints/username/available.ts index c80b6efdcd..6293c5cb50 100644 --- a/packages/backend/src/server/api/endpoints/username/available.ts +++ b/packages/backend/src/server/api/endpoints/username/available.ts @@ -4,6 +4,7 @@ import type { UsedUsernamesRepository, UsersRepository } from '@/models/index.js import { Endpoint } from '@/server/api/endpoint-base.js'; import { localUsernameSchema } from '@/models/entities/User.js'; import { DI } from '@/di-symbols.js'; +import { MetaService } from '@/core/MetaService.js'; export const meta = { tags: ['users'], @@ -39,9 +40,10 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { @Inject(DI.usedUsernamesRepository) private usedUsernamesRepository: UsedUsernamesRepository, + + private metaService: MetaService, ) { super(meta, paramDef, async (ps, me) => { - // Get exist const exist = await this.usersRepository.countBy({ host: IsNull(), usernameLower: ps.username.toLowerCase(), @@ -49,8 +51,11 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { const exist2 = await this.usedUsernamesRepository.countBy({ username: ps.username.toLowerCase() }); + const meta = await this.metaService.fetch(); + const isPreserved = meta.preservedUsernames.map(x => x.toLowerCase()).includes(ps.username.toLowerCase()); + return { - available: exist === 0 && exist2 === 0, + available: exist === 0 && exist2 === 0 && !isPreserved, }; }); } |