diff --git a/src/app/api/users/[userId]/route.ts b/src/app/api/users/[userId]/route.ts index e642fe3c1..8128dc021 100644 --- a/src/app/api/users/[userId]/route.ts +++ b/src/app/api/users/[userId]/route.ts @@ -63,14 +63,14 @@ export async function POST(request: Request, { params }: { params: Promise<{ use } if (username && auth.user.isAdmin) { - data.username = username; + data.username = username.toLowerCase(); } // Check when username changes if (data.username && user.username !== data.username) { - const user = await getUserByUsername(username); + const existingUser = await getUserByUsername(data.username); - if (user) { + if (existingUser && existingUser.id !== userId) { return badRequest({ message: 'User already exists' }); } } diff --git a/src/app/api/users/route.ts b/src/app/api/users/route.ts index 4335c33fb..09acd0442 100644 --- a/src/app/api/users/route.ts +++ b/src/app/api/users/route.ts @@ -36,7 +36,7 @@ export async function POST(request: Request) { const user = await createUser({ id: id || uuid(), - username, + username: username.toLowerCase(), password: hashPassword(password), role: role ?? ROLES.user, }); diff --git a/src/queries/prisma/user.ts b/src/queries/prisma/user.ts index 7e5d28f92..56706be80 100644 --- a/src/queries/prisma/user.ts +++ b/src/queries/prisma/user.ts @@ -46,7 +46,7 @@ export async function getUser(userId: string, options: GetUserOptions = {}) { } export async function getUserByUsername(username: string, options: GetUserOptions = {}) { - return findUser({ where: { username } }, options); + return findUser({ where: { username: username.toLowerCase() } }, options); } export async function getUsers(criteria: UserFindManyArgs, filters: QueryFilters = {}) {