summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAcid Chicken (硫酸鶏) <root@acid-chicken.com>2018-12-01 07:19:17 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2018-12-01 07:19:17 +0900
commit53c559c001577afbf2e1910f7510093f7c1371ad (patch)
treea7387647fdf4255c4459564b58959afc78dbd108 /src
parentUpdate webpack requirement from 4.26.0 to 4.26.1 (#3453) (diff)
downloadmisskey-53c559c001577afbf2e1910f7510093f7c1371ad.tar.gz
misskey-53c559c001577afbf2e1910f7510093f7c1371ad.tar.bz2
misskey-53c559c001577afbf2e1910f7510093f7c1371ad.zip
Allow hyphens in the middle of remote usernames (#3440)
* Allow hyphens in the middle of remote usernames refs: d797c29db462de4a3d69a5077a1ae4d03195b6f2 * Make options fallback better * Make options flat
Diffstat (limited to 'src')
-rw-r--r--src/models/user.ts4
-rw-r--r--src/remote/activitypub/models/person.ts2
-rw-r--r--src/server/api/endpoints/users/search.ts2
3 files changed, 4 insertions, 4 deletions
diff --git a/src/models/user.ts b/src/models/user.ts
index db10e06d8a..0e9875504b 100644
--- a/src/models/user.ts
+++ b/src/models/user.ts
@@ -147,8 +147,8 @@ export const isRemoteUser = (user: any): user is IRemoteUser =>
!isLocalUser(user);
//#region Validators
-export function validateUsername(username: string): boolean {
- return typeof username == 'string' && /^[a-zA-Z0-9_]{1,20}$/.test(username);
+export function validateUsername(username: string, remote?: boolean): boolean {
+ return typeof username == 'string' && (remote ? /^\w+([\w\.-]+\w+)?$/ : /^[a-zA-Z0-9_]{1,20}$/).test(username);
}
export function validatePassword(password: string): boolean {
diff --git a/src/remote/activitypub/models/person.ts b/src/remote/activitypub/models/person.ts
index 6f694a6ec1..74fcdc10a2 100644
--- a/src/remote/activitypub/models/person.ts
+++ b/src/remote/activitypub/models/person.ts
@@ -43,7 +43,7 @@ function validatePerson(x: any, uri: string) {
return new Error('invalid person: inbox is not a string');
}
- if (!validateUsername(x.preferredUsername)) {
+ if (!validateUsername(x.preferredUsername, true)) {
return new Error('invalid person: invalid username');
}
diff --git a/src/server/api/endpoints/users/search.ts b/src/server/api/endpoints/users/search.ts
index b37c07003b..85138fa6e1 100644
--- a/src/server/api/endpoints/users/search.ts
+++ b/src/server/api/endpoints/users/search.ts
@@ -45,7 +45,7 @@ export const meta = {
};
export default define(meta, (ps, me) => new Promise(async (res, rej) => {
- const isUsername = validateUsername(ps.query.replace('@', ''));
+ const isUsername = validateUsername(ps.query.replace('@', ''), true);
let users: IUser[] = [];