From 2d2aef29b438c4b540e1d41b70ca1910f2fe8b0b Mon Sep 17 00:00:00 2001 From: Alma Date: Wed, 9 Apr 2025 20:14:12 +0200 Subject: [PATCH] update api users and groups2 --- app/api/users/[id]/route.ts | 6 ++--- app/api/users/[userId]/route.ts | 47 ++++++++++++++++++++++----------- 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/app/api/users/[id]/route.ts b/app/api/users/[id]/route.ts index 638a6bb8..c30f043c 100644 --- a/app/api/users/[id]/route.ts +++ b/app/api/users/[id]/route.ts @@ -5,7 +5,7 @@ import { NextResponse } from "next/server"; //TODO: Ajouter la suppression automatique du compte Nextcloud export async function DELETE( req: Request, - { params }: { params: { id: string } } + { params }: { params: { userId: string } } ) { const session = await getServerSession(authOptions); @@ -42,7 +42,7 @@ export async function DELETE( // Delete user using admin token const response = await fetch( - `${process.env.KEYCLOAK_BASE_URL}/admin/realms/${process.env.KEYCLOAK_REALM}/users/${params.id}`, + `${process.env.KEYCLOAK_BASE_URL}/admin/realms/${process.env.KEYCLOAK_REALM}/users/${params.userId}`, { method: "DELETE", headers: { @@ -73,4 +73,4 @@ export async function DELETE( { status: 500 } ); } -} +} \ No newline at end of file diff --git a/app/api/users/[userId]/route.ts b/app/api/users/[userId]/route.ts index caf2a6db..0379f928 100644 --- a/app/api/users/[userId]/route.ts +++ b/app/api/users/[userId]/route.ts @@ -1,7 +1,8 @@ -import { getServerSession } from "next-auth/next"; -import { authOptions } from "@/app/api/auth/[...nextauth]/route"; +import { getServerSession } from "next-auth"; +import { authOptions } from "../../auth/[...nextauth]/route"; import { NextResponse } from "next/server"; +//TODO: Ajouter la suppression automatique du compte Nextcloud export async function DELETE( req: Request, { params }: { params: { userId: string } } @@ -13,7 +14,7 @@ export async function DELETE( } try { - // Get client credentials token + // First get an admin token using client credentials const tokenResponse = await fetch( `${process.env.KEYCLOAK_BASE_URL}/realms/${process.env.KEYCLOAK_REALM}/protocol/openid-connect/token`, { @@ -30,33 +31,47 @@ export async function DELETE( ); const tokenData = await tokenResponse.json(); - + if (!tokenResponse.ok) { - console.error("Failed to get token:", tokenData); - return NextResponse.json({ error: "Failed to get token" }, { status: 500 }); + console.error("Failed to get admin token:", tokenData); + return NextResponse.json( + { error: "Erreur d'authentification" }, + { status: 401 } + ); } - // Delete user - const deleteResponse = await fetch( + // Delete user using admin token + const response = await fetch( `${process.env.KEYCLOAK_BASE_URL}/admin/realms/${process.env.KEYCLOAK_REALM}/users/${params.userId}`, { - method: 'DELETE', + method: "DELETE", headers: { - 'Authorization': `Bearer ${tokenData.access_token}`, + Authorization: `Bearer ${tokenData.access_token}`, }, } ); - if (!deleteResponse.ok) { - const errorData = await deleteResponse.json(); - console.error("Failed to delete user:", errorData); - return NextResponse.json({ error: "Failed to delete user" }, { status: deleteResponse.status }); + console.log("Delete response:", { + status: response.status, + ok: response.ok + }); + + if (!response.ok) { + const errorText = await response.text(); + console.error("Delete error:", errorText); + return NextResponse.json( + { error: "Erreur lors de la suppression", details: errorText }, + { status: response.status } + ); } return NextResponse.json({ success: true }); } catch (error) { - console.error("Error in DELETE user:", error); - return NextResponse.json({ error: "Internal server error" }, { status: 500 }); + console.error("Error deleting user:", error); + return NextResponse.json( + { error: "Erreur serveur", details: error }, + { status: 500 } + ); } }