From da369e604c58e11dcb26fb982b43e0265219ce30 Mon Sep 17 00:00:00 2001 From: Jesse Wierzbinski Date: Sat, 23 Nov 2024 23:09:59 +0100 Subject: [PATCH] fix(api): :bug: Fix lookup endpoints thinking local user is remote --- api/api/v1/accounts/lookup/index.ts | 4 ++-- utils/api.ts | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) 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"),