diff --git a/frontend/src/pages/Admin/Users/NewUserModal/index.jsx b/frontend/src/pages/Admin/Users/NewUserModal/index.jsx
index 8b11c1a1128..236b8c78119 100644
--- a/frontend/src/pages/Admin/Users/NewUserModal/index.jsx
+++ b/frontend/src/pages/Admin/Users/NewUserModal/index.jsx
@@ -62,17 +62,10 @@ export default function NewUserModal({ closeModal }) {
minLength={2}
required={true}
autoComplete="off"
- pattern="^[a-z0-9_-]+$"
- onInvalid={(e) =>
- e.target.setCustomValidity(
- "Username must only contain lowercase letters, numbers, underscores, and hyphens with no spaces"
- )
- }
- onChange={(e) => e.target.setCustomValidity("")}
/>
- Username must only contain lowercase letters, numbers,
- underscores, and hyphens with no spaces
+ Username must only contain lowercase letters, periods,
+ numbers, underscores, and hyphens with no spaces
diff --git a/frontend/src/pages/Admin/Users/UserRow/EditUserModal/index.jsx b/frontend/src/pages/Admin/Users/UserRow/EditUserModal/index.jsx
index 5a88e4d898d..aaf1b658be3 100644
--- a/frontend/src/pages/Admin/Users/UserRow/EditUserModal/index.jsx
+++ b/frontend/src/pages/Admin/Users/UserRow/EditUserModal/index.jsx
@@ -80,8 +80,8 @@ export default function EditUserModal({ currentUser, user, closeModal }) {
autoComplete="off"
/>
- Username must only contain lowercase letters, numbers,
- underscores, and hyphens with no spaces
+ Username must only contain lowercase letters, periods,
+ numbers, underscores, and hyphens with no spaces
diff --git a/server/models/user.js b/server/models/user.js
index 5979de34788..35e8271bcfd 100644
--- a/server/models/user.js
+++ b/server/models/user.js
@@ -13,7 +13,7 @@ const { EventLogs } = require("./eventLogs");
*/
const User = {
- usernameRegex: new RegExp(/^[a-z0-9_-]+$/),
+ usernameRegex: new RegExp(/^[a-z0-9_\-.]+$/),
writable: [
// Used for generic updates so we can validate keys in request body
"username",
@@ -95,7 +95,7 @@ const User = {
// Do not allow new users to bypass validation
if (!this.usernameRegex.test(username))
throw new Error(
- "Username must only contain lowercase letters, numbers, underscores, and hyphens with no spaces"
+ "Username must only contain lowercase letters, periods, numbers, underscores, and hyphens with no spaces"
);
const bcrypt = require("bcrypt");
@@ -175,7 +175,7 @@ const User = {
return {
success: false,
error:
- "Username must only contain lowercase letters, numbers, underscores, and hyphens with no spaces",
+ "Username must only contain lowercase letters, periods, numbers, underscores, and hyphens with no spaces",
};
const user = await prisma.users.update({