diff --git a/api/api/v1/accounts/lookup/index.ts b/api/api/v1/accounts/lookup/index.ts index 63507810..f09a9ada 100644 --- a/api/api/v1/accounts/lookup/index.ts +++ b/api/api/v1/accounts/lookup/index.ts @@ -1,4 +1,4 @@ -import { apiRoute, applyConfig, auth, userAddressValidator } from "@/api"; +import { apiRoute, applyConfig, auth, userAddressValidatorRemote } from "@/api"; import { createRoute } from "@hono/zod-openapi"; import { User } from "@versia/kit/db"; import { RolePermissions, Users } from "@versia/kit/tables"; @@ -62,7 +62,7 @@ export default apiRoute((app) => const { user } = context.get("auth"); // Check if acct is matching format username@domain.com or @username@domain.com - const accountMatches = acct?.trim().match(userAddressValidator); + const accountMatches = acct?.trim().match(userAddressValidatorRemote); if (accountMatches) { // Remove leading @ if it exists diff --git a/utils/api.ts b/utils/api.ts index beaad45b..319a4a04 100644 --- a/utils/api.ts +++ b/utils/api.ts @@ -106,6 +106,16 @@ export const userAddressValidator = createRegExp( [global], ); +export const userAddressValidatorRemote = createRegExp( + maybe("@"), + oneOrMore(anyOf(letter.lowercase, digit, charIn("-_"))).groupedAs( + "username", + ), + exactly("@"), + oneOrMore(anyOf(letter, digit, charIn("_-.:"))).groupedAs("domain"), + [global], +); + export const webfingerMention = createRegExp( exactly("acct:"), oneOrMore(anyOf(letter, digit, charIn("-_"))).groupedAs("username"),