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
This commit is contained in:
Acid Chicken (硫酸鶏) 2018-12-01 07:19:17 +09:00 committed by syuilo
parent 44944b1d7a
commit f4f19f28d8
3 changed files with 4 additions and 4 deletions

View file

@ -147,8 +147,8 @@ export const isRemoteUser = (user: any): user is IRemoteUser =>
!isLocalUser(user); !isLocalUser(user);
//#region Validators //#region Validators
export function validateUsername(username: string): boolean { export function validateUsername(username: string, remote?: boolean): boolean {
return typeof username == 'string' && /^[a-zA-Z0-9_]{1,20}$/.test(username); return typeof username == 'string' && (remote ? /^\w+([\w\.-]+\w+)?$/ : /^[a-zA-Z0-9_]{1,20}$/).test(username);
} }
export function validatePassword(password: string): boolean { export function validatePassword(password: string): boolean {

View file

@ -43,7 +43,7 @@ function validatePerson(x: any, uri: string) {
return new Error('invalid person: inbox is not a 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'); return new Error('invalid person: invalid username');
} }

View file

@ -45,7 +45,7 @@ export const meta = {
}; };
export default define(meta, (ps, me) => new Promise(async (res, rej) => { 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[] = []; let users: IUser[] = [];