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 });
|
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()) {
|
if (!name?.trim()) {
|
||||||
return NextResponse.json(
|
return NextResponse.json(
|
||||||
{ message: "Le nom du groupe est requis" },
|
{ 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();
|
const groupId = groupData.id || Date.now().toString();
|
||||||
|
|
||||||
// Create calendar for the group creator
|
// Create calendar for the group creator
|
||||||
|
|||||||
@ -520,19 +520,28 @@ export default function EquipePage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Only try to parse if we have text content
|
// Only try to parse if we have text content
|
||||||
if (text && typeof text === 'string' && text.trim().length > 0) {
|
if (text && typeof text === 'string') {
|
||||||
if (contentType.includes('application/json')) {
|
const trimmedText = text.trim();
|
||||||
try {
|
if (trimmedText.length > 0) {
|
||||||
const errorData = JSON.parse(text);
|
if (contentType.includes('application/json')) {
|
||||||
errorMessage = errorData.message || errorData.error || errorMessage;
|
// Additional check: make sure it looks like JSON (starts with { or [)
|
||||||
} catch (parseError) {
|
if (trimmedText.startsWith('{') || trimmedText.startsWith('[')) {
|
||||||
// If JSON parsing fails, use the text (truncated if too long)
|
try {
|
||||||
console.warn('Failed to parse error response as JSON:', parseError);
|
const errorData = JSON.parse(trimmedText);
|
||||||
errorMessage = text.length > 200 ? text.substring(0, 200) + '...' : 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 = 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) {
|
} catch (error) {
|
||||||
@ -548,13 +557,27 @@ export default function EquipePage() {
|
|||||||
let newGroup;
|
let newGroup;
|
||||||
try {
|
try {
|
||||||
const text = await response.text();
|
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");
|
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) {
|
} catch (parseError) {
|
||||||
console.error("Error parsing success response:", 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]);
|
setGroups(prev => [...prev, newGroup]);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user