summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/username
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-04-29 17:03:14 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-04-29 17:03:14 +0900
commit0ad7869249c8594277afc0aa707c05ac2ed633cf (patch)
tree8a889e6c4a764df00ac0ce4c0d8e11c62856387a /packages/backend/src/server/api/endpoints/username
parentMerge branch 'develop' of https://github.com/misskey-dev/misskey into develop (diff)
downloadsharkey-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.ts9
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,
};
});
}