corr add group
This commit is contained in:
parent
b033087a60
commit
c552beffbe
@ -175,7 +175,21 @@ export async function POST(req: Request) {
|
||||
return NextResponse.json({ message: "Non autorisé" }, { status: 401 });
|
||||
}
|
||||
|
||||
const { name } = await req.json();
|
||||
// Safely parse request body
|
||||
let name: string;
|
||||
try {
|
||||
const body = await req.json();
|
||||
name = body?.name;
|
||||
} catch (parseError) {
|
||||
logger.error('Error parsing request body', {
|
||||
error: parseError instanceof Error ? parseError.message : String(parseError)
|
||||
});
|
||||
return NextResponse.json(
|
||||
{ message: "Corps de requête invalide" },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
if (!name?.trim()) {
|
||||
return NextResponse.json(
|
||||
{ message: "Le nom du groupe est requis" },
|
||||
@ -269,7 +283,36 @@ export async function POST(req: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
const groupData = await response.json();
|
||||
// Safely parse success response from Keycloak
|
||||
let groupData: any;
|
||||
try {
|
||||
const text = await response.text();
|
||||
if (!text || text.trim().length === 0) {
|
||||
// If Keycloak returns empty response, create a group object with generated ID
|
||||
logger.warn('Keycloak returned empty response for group creation', {
|
||||
groupName: name
|
||||
});
|
||||
groupData = { id: `group-${Date.now()}` };
|
||||
} else {
|
||||
try {
|
||||
groupData = JSON.parse(text);
|
||||
} catch (parseError) {
|
||||
logger.error('Failed to parse Keycloak success response as JSON', {
|
||||
text: text.substring(0, 200),
|
||||
error: parseError instanceof Error ? parseError.message : String(parseError)
|
||||
});
|
||||
// Fallback: create group object with generated ID
|
||||
groupData = { id: `group-${Date.now()}` };
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error('Error reading Keycloak success response', {
|
||||
error: error instanceof Error ? error.message : String(error)
|
||||
});
|
||||
// Fallback: create group object with generated ID
|
||||
groupData = { id: `group-${Date.now()}` };
|
||||
}
|
||||
|
||||
const groupId = groupData.id || Date.now().toString();
|
||||
|
||||
// Create calendar for the group creator
|
||||
|
||||
@ -520,19 +520,28 @@ export default function EquipePage() {
|
||||
}
|
||||
|
||||
// Only try to parse if we have text content
|
||||
if (text && typeof text === 'string' && text.trim().length > 0) {
|
||||
if (contentType.includes('application/json')) {
|
||||
try {
|
||||
const errorData = JSON.parse(text);
|
||||
errorMessage = errorData.message || errorData.error || errorMessage;
|
||||
} catch (parseError) {
|
||||
// If JSON parsing fails, use the text (truncated if too long)
|
||||
console.warn('Failed to parse error response as JSON:', parseError);
|
||||
errorMessage = text.length > 200 ? text.substring(0, 200) + '...' : text;
|
||||
if (text && typeof text === 'string') {
|
||||
const trimmedText = text.trim();
|
||||
if (trimmedText.length > 0) {
|
||||
if (contentType.includes('application/json')) {
|
||||
// Additional check: make sure it looks like JSON (starts with { or [)
|
||||
if (trimmedText.startsWith('{') || trimmedText.startsWith('[')) {
|
||||
try {
|
||||
const errorData = JSON.parse(trimmedText);
|
||||
errorMessage = errorData.message || errorData.error || errorMessage;
|
||||
} catch (parseError) {
|
||||
// If JSON parsing fails, use the text (truncated if too long)
|
||||
console.warn('Failed to parse error response as JSON:', parseError);
|
||||
errorMessage = trimmedText.length > 200 ? trimmedText.substring(0, 200) + '...' : trimmedText;
|
||||
}
|
||||
} else {
|
||||
// Doesn't look like JSON, use as plain text
|
||||
errorMessage = trimmedText.length > 200 ? trimmedText.substring(0, 200) + '...' : trimmedText;
|
||||
}
|
||||
} else {
|
||||
// If there's text but not JSON, use it (truncated if too long)
|
||||
errorMessage = trimmedText.length > 200 ? trimmedText.substring(0, 200) + '...' : trimmedText;
|
||||
}
|
||||
} else {
|
||||
// If there's text but not JSON, use it (truncated if too long)
|
||||
errorMessage = text.length > 200 ? text.substring(0, 200) + '...' : text;
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
@ -548,13 +557,27 @@ export default function EquipePage() {
|
||||
let newGroup;
|
||||
try {
|
||||
const text = await response.text();
|
||||
if (!text || text.trim().length === 0) {
|
||||
const trimmedText = text?.trim() || '';
|
||||
|
||||
if (!trimmedText || trimmedText.length === 0) {
|
||||
throw new Error("Réponse vide du serveur");
|
||||
}
|
||||
newGroup = JSON.parse(text);
|
||||
|
||||
// Make sure it looks like JSON before parsing
|
||||
if (!trimmedText.startsWith('{') && !trimmedText.startsWith('[')) {
|
||||
throw new Error("Réponse invalide du serveur (format non-JSON)");
|
||||
}
|
||||
|
||||
try {
|
||||
newGroup = JSON.parse(trimmedText);
|
||||
} catch (parseError) {
|
||||
console.error("Error parsing JSON:", parseError);
|
||||
throw new Error("Erreur lors de la lecture de la réponse du serveur");
|
||||
}
|
||||
} catch (parseError) {
|
||||
console.error("Error parsing success response:", parseError);
|
||||
throw new Error("Erreur lors de la lecture de la réponse du serveur");
|
||||
const errorMsg = parseError instanceof Error ? parseError.message : "Erreur lors de la lecture de la réponse du serveur";
|
||||
throw new Error(errorMsg);
|
||||
}
|
||||
|
||||
setGroups(prev => [...prev, newGroup]);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user