From 5ebf098316381ab3b4a3a15ae0a7b466520c058a Mon Sep 17 00:00:00 2001 From: chyoo Date: Thu, 13 Aug 2026 13:34:24 +0900 Subject: [PATCH] fix existing user enrollment for instructors --- src/auth/routes.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/auth/routes.ts b/src/auth/routes.ts index 89f9502..27e6c26 100644 --- a/src/auth/routes.ts +++ b/src/auth/routes.ts @@ -826,10 +826,9 @@ authRoutes.post('/instructor/students', authRequired, async (c) => { const email = body.data.email.toLowerCase() const existingUser = await findUserByEmail(email) - if (existingUser) return c.json({ error: 'email_already_registered' }, 409) try { - const user = await createManagedUser({ + const user = existingUser ?? await createManagedUser({ email, password: body.data.password, name: body.data.name, @@ -839,17 +838,25 @@ authRoutes.post('/instructor/students', authRequired, async (c) => { licenseCode: body.data.licenseCode, }) - await prisma.userAppRole.create({ - data: { + await prisma.userAppRole.upsert({ + where: { + userId_appKey_roleCode: { + userId: user.id, + appKey: 'LMS', + roleCode: 'STUDENT', + }, + }, + create: { userId: user.id, appKey: 'LMS', roleCode: 'STUDENT', assignedById: instructor.id, }, + update: {}, }) - const createdUser = await findUserById(user.id) - return c.json({ user: userResponse(createdUser ?? user) }, 201) + const resolvedUser = await findUserById(user.id) + return c.json({ user: userResponse(resolvedUser ?? user) }, existingUser ? 200 : 201) } catch { return c.json({ error: 'user_create_failed' }, 400) }