summaryrefslogtreecommitdiff
path: root/packages/backend/src/core
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/core
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/core')
-rw-r--r--packages/backend/src/core/SignupService.ts15
1 files changed, 13 insertions, 2 deletions
diff --git a/packages/backend/src/core/SignupService.ts b/packages/backend/src/core/SignupService.ts
index d7bc05b8bd..2b8387f89c 100644
--- a/packages/backend/src/core/SignupService.ts
+++ b/packages/backend/src/core/SignupService.ts
@@ -13,8 +13,9 @@ import { UsedUsername } from '@/models/entities/UsedUsername.js';
import generateUserToken from '@/misc/generate-native-user-token.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { bindThis } from '@/decorators.js';
-import UsersChart from './chart/charts/users.js';
-import { UtilityService } from './UtilityService.js';
+import UsersChart from '@/core/chart/charts/users.js';
+import { UtilityService } from '@/core/UtilityService.js';
+import { MetaService } from '@/core/MetaService.js';
@Injectable()
export class SignupService {
@@ -34,6 +35,7 @@ export class SignupService {
private utilityService: UtilityService,
private userEntityService: UserEntityService,
private idService: IdService,
+ private metaService: MetaService,
private usersChart: UsersChart,
) {
}
@@ -44,6 +46,7 @@ export class SignupService {
password?: string | null;
passwordHash?: UserProfile['password'] | null;
host?: string | null;
+ ignorePreservedUsernames?: boolean;
}) {
const { username, password, passwordHash, host } = opts;
let hash = passwordHash;
@@ -76,6 +79,14 @@ export class SignupService {
if (await this.usedUsernamesRepository.findOneBy({ username: username.toLowerCase() })) {
throw new Error('USED_USERNAME');
}
+
+ if (!opts.ignorePreservedUsernames) {
+ const instance = await this.metaService.fetch(true);
+ const isPreserved = instance.preservedUsernames.map(x => x.toLowerCase()).includes(username.toLowerCase());
+ if (isPreserved) {
+ throw new Error('USED_USERNAME');
+ }
+ }
const keyPair = await new Promise<string[]>((res, rej) =>
generateKeyPair('rsa', {