diff --git a/src/app/api/users/[userId]/route.ts b/src/app/api/users/[userId]/route.ts index aade8aa8d..5814ebf14 100644 --- a/src/app/api/users/[userId]/route.ts +++ b/src/app/api/users/[userId]/route.ts @@ -59,14 +59,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 dbb114cf7..271541707 100644 --- a/src/app/api/users/route.ts +++ b/src/app/api/users/route.ts @@ -35,7 +35,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 14376fc26..1403ef657 100644 --- a/src/queries/prisma/user.ts +++ b/src/queries/prisma/user.ts @@ -42,7 +42,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 = {}) {