summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/SignupService.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/core/SignupService.ts')
-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', {