From 03ce112457e3aa0c878ebcc3ecae800c5bc9dcaf Mon Sep 17 00:00:00 2001
From: Jade <68784313+jang-hs@users.noreply.github.com>
Date: Tue, 25 Aug 2026 14:04:49 +0900
Subject: [PATCH] feat(users): validate usernames before creating or renaming
(#610)
---
app/routes/users/dialogs/create-user.tsx | 13 ++++++++++-
app/routes/users/dialogs/rename-user.tsx | 6 ++++-
app/routes/users/user-actions.ts | 11 +++++++++
app/utils/user.ts | 22 ++++++++++++++++++
tests/unit/utils/user.test.ts | 29 +++++++++++++++++++++++-
5 files changed, 78 insertions(+), 3 deletions(-)
diff --git a/app/routes/users/dialogs/create-user.tsx b/app/routes/users/dialogs/create-user.tsx
index 9794df7..e546ea7 100644
--- a/app/routes/users/dialogs/create-user.tsx
+++ b/app/routes/users/dialogs/create-user.tsx
@@ -3,6 +3,7 @@ import Dialog, { DialogPanel } from "~/components/dialog";
import Input from "~/components/input";
import Text from "~/components/text";
import Title from "~/components/title";
+import { USERNAME_PATTERN, USERNAME_RULE } from "~/utils/user";
interface CreateUserProps {
isOidc?: boolean;
@@ -23,7 +24,17 @@ export default function CreateUser({ isOidc, isDisabled }: CreateUserProps) {
-
+
diff --git a/app/routes/users/dialogs/rename-user.tsx b/app/routes/users/dialogs/rename-user.tsx
index 96f8976..bc0560c 100644
--- a/app/routes/users/dialogs/rename-user.tsx
+++ b/app/routes/users/dialogs/rename-user.tsx
@@ -3,6 +3,7 @@ import Input from "~/components/input";
import Text from "~/components/text";
import Title from "~/components/title";
import { User } from "~/types";
+import { USERNAME_PATTERN, USERNAME_RULE } from "~/utils/user";
interface RenameProps {
user: User;
@@ -10,7 +11,6 @@ interface RenameProps {
setIsOpen: (isOpen: boolean) => void;
}
-// TODO: Server side validation before submitting
export default function RenameUser({ user, isOpen, setIsOpen }: RenameProps) {
return (