fix: handle empty playerId string in user edit API
This commit is contained in:
@@ -32,6 +32,10 @@ export async function PUT(
|
||||
);
|
||||
}
|
||||
|
||||
// Parse playerId - handle empty string case
|
||||
const parsedPlayerId = playerId ? parseInt(playerId) : undefined;
|
||||
const isValidPlayerId = parsedPlayerId !== undefined && !isNaN(parsedPlayerId);
|
||||
|
||||
// Update the user
|
||||
const user = await prisma.user.update({
|
||||
where: { id },
|
||||
@@ -39,14 +43,14 @@ export async function PUT(
|
||||
email: email || existingUser.email,
|
||||
name: name !== undefined ? name : existingUser.name,
|
||||
role: role || existingUser.role,
|
||||
playerId: playerId ? parseInt(playerId) : null,
|
||||
playerId: isValidPlayerId ? parsedPlayerId : null,
|
||||
},
|
||||
});
|
||||
|
||||
// Update the player's user relation if needed
|
||||
if (playerId !== undefined) {
|
||||
// First, remove user from any existing player
|
||||
if (existingUser.playerId && existingUser.playerId !== parseInt(playerId)) {
|
||||
if (existingUser.playerId && existingUser.playerId !== parsedPlayerId) {
|
||||
await prisma.player.update({
|
||||
where: { id: existingUser.playerId },
|
||||
data: { user: { disconnect: true } },
|
||||
@@ -54,9 +58,9 @@ export async function PUT(
|
||||
}
|
||||
|
||||
// Then, connect user to the new player
|
||||
if (playerId) {
|
||||
if (isValidPlayerId) {
|
||||
await prisma.player.update({
|
||||
where: { id: parseInt(playerId) },
|
||||
where: { id: parsedPlayerId! },
|
||||
data: { user: { connect: { id: user.id } } },
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user