From 0dcb2ad5c599ca3e4b8f55e6de5dc54608b46c15 Mon Sep 17 00:00:00 2001 From: alma Date: Sun, 4 May 2025 09:44:53 +0200 Subject: [PATCH] dolibarr user --- app/api/users/route.ts | 8 ++++---- lib/dolibarr-api.ts | 30 ++++++++++++++++++------------ 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/app/api/users/route.ts b/app/api/users/route.ts index 4d2865be..6b3ff3ab 100644 --- a/app/api/users/route.ts +++ b/app/api/users/route.ts @@ -495,8 +495,8 @@ export async function POST(req: Request) { console.log(`User already exists in Dolibarr with ID: ${existingUser.id}`); dolibarrUserId = existingUser.id; } else { - // Create user in Dolibarr - console.log('Creating new user in Dolibarr with data:', { + // Create user account in Dolibarr + console.log('Creating new user account in Dolibarr with data:', { username: data.username, email: data.email, name: `${data.firstName} ${data.lastName}` @@ -511,10 +511,10 @@ export async function POST(req: Request) { }); if (dolibarrResult.success) { - console.log(`User created in Dolibarr with ID: ${dolibarrResult.id}`); + console.log(`User account created in Dolibarr with ID: ${dolibarrResult.id}`); dolibarrUserId = dolibarrResult.id; } else { - console.error("Dolibarr user creation failed:", dolibarrResult.error); + console.error("Dolibarr user account creation failed:", dolibarrResult.error); // We don't return an error here since Keycloak user was created successfully // We just log the error and continue } diff --git a/lib/dolibarr-api.ts b/lib/dolibarr-api.ts index 1e7e0e33..7539289b 100644 --- a/lib/dolibarr-api.ts +++ b/lib/dolibarr-api.ts @@ -1,5 +1,5 @@ import { NextResponse } from "next/server"; -import { DolibarrErrorResponse, DolibarrThirdParty } from "@/app/types/dolibarr"; +import { DolibarrErrorResponse, DolibarrThirdParty, DolibarrUser } from "@/app/types/dolibarr"; /** * Create a user in Dolibarr @@ -32,23 +32,28 @@ export async function createDolibarrUser(userData: { : `${process.env.DOLIBARR_API_URL}/`; console.log(`Creating Dolibarr user for ${userData.email}`); - console.log('Full API URL:', apiUrl + 'thirdparties'); + console.log('Full API URL:', apiUrl + 'users'); console.log('API Key (first 5 chars):', process.env.DOLIBARR_API_KEY.substring(0, 5) + '...'); + // Format the user data for Dolibarr user creation const requestBody = { - name: `${userData.firstName} ${userData.lastName}`, - name_alias: userData.username, + login: userData.username, + lastname: userData.lastName, + firstname: userData.firstName, + password: userData.password, email: userData.email, - client: '1', // Mark as customer - code_client: 'auto', // Auto-generate client code + admin: 0, // Not an administrator + employee: 1, // Is an employee + signature: `${userData.firstName} ${userData.lastName}`, note_private: 'Created via API integration from platform', - status: '1', // Active + entity: 1, // Main entity + status: 1 // Active }; console.log('Request body:', JSON.stringify(requestBody, null, 2)); - // Create the user in Dolibarr as a thirdparty/customer - const response = await fetch(`${apiUrl}thirdparties`, { + // Create the user in Dolibarr as a user account + const response = await fetch(`${apiUrl}users`, { method: 'POST', headers: { 'DOLAPIKEY': process.env.DOLIBARR_API_KEY, @@ -121,10 +126,11 @@ export async function checkDolibarrUserExists(email: string): Promise<{ exists: ? process.env.DOLIBARR_API_URL : `${process.env.DOLIBARR_API_URL}/`; - const queryUrl = `${apiUrl}thirdparties?sortfield=t.rowid&sortorder=ASC&limit=1&sqlfilters=(t.email:=:'${encodeURIComponent(email)}')`; + // Use the users endpoint instead of thirdparties + const queryUrl = `${apiUrl}users?sortfield=t.rowid&sortorder=ASC&limit=1&sqlfilters=(t.email:=:'${encodeURIComponent(email)}')`; console.log('Full search URL:', queryUrl); - // Search for thirdparty/customer with matching email + // Search for user with matching email const response = await fetch(queryUrl, { method: 'GET', headers: { @@ -145,7 +151,7 @@ export async function checkDolibarrUserExists(email: string): Promise<{ exists: return { exists: false }; } - const data = await response.json() as DolibarrThirdParty[]; + const data = await response.json() as DolibarrUser[]; console.log('Dolibarr user search response:', data); // If we got results, user exists