From 4b74a8a008760bbfff338362c3c7ba3cc62608d2 Mon Sep 17 00:00:00 2001 From: Pablo Lara Date: Thu, 26 Sep 2024 16:01:16 +0200 Subject: [PATCH] feat: add a header to use basic auth --- actions/providers.ts | 83 +++++++++++++++++++++++++++----------------- 1 file changed, 52 insertions(+), 31 deletions(-) diff --git a/actions/providers.ts b/actions/providers.ts index d4b0dc4d29..22084527ed 100644 --- a/actions/providers.ts +++ b/actions/providers.ts @@ -6,6 +6,10 @@ import { redirect } from "next/navigation"; import { auth } from "@/auth.config"; import { parseStringify } from "@/lib"; +// Credentials for basic auth +const username = process.env.API_USERNAME; +const password = process.env.API_PASSWORD; + export const getProviders = async ({ page = 1, query = "", @@ -35,6 +39,7 @@ export const getProviders = async ({ const providers = await fetch(url.toString(), { headers: { "X-Tenant-ID": `${tenantId}`, + Authorization: "Basic " + btoa(`${username}:${password}`), }, }); const data = await providers.json(); @@ -59,6 +64,7 @@ export const getProvider = async (formData: FormData) => { const providers = await fetch(url.toString(), { headers: { "X-Tenant-ID": `${tenantId}`, + Authorization: "Basic " + btoa(`${username}:${password}`), }, }); const data = await providers.json(); @@ -86,6 +92,7 @@ export const updateProvider = async (formData: FormData) => { method: "PATCH", headers: { "X-Tenant-ID": `${tenantId}`, + Authorization: "Basic " + btoa(`${username}:${password}`), "Content-Type": "application/vnd.api+json", }, body: JSON.stringify({ @@ -110,17 +117,24 @@ export const updateProvider = async (formData: FormData) => { }; export const addProvider = async (formData: FormData) => { + console.log(formData); + const session = await auth(); const keyServer = process.env.API_BASE_URL; + const tenantId = session?.user.tenantId; + const provider = formData.get("provider"); - const providerId = formData.get("id"); + const providerId = formData.get("providerId"); const alias = formData.get("alias"); + const url = new URL(`${keyServer}/providers`); + try { - const response = await fetch(`${keyServer}/providers`, { + const response = await fetch(url.toString(), { method: "POST", headers: { - "X-Tenant-ID": `${process.env.HEADER_TENANT_ID}`, + "X-Tenant-ID": `${tenantId}`, + Authorization: "Basic " + btoa(`${username}:${password}`), "Content-Type": "application/vnd.api+json", }, body: JSON.stringify({ @@ -128,7 +142,7 @@ export const addProvider = async (formData: FormData) => { type: "Provider", attributes: { provider: provider, - provider_id: providerId, + uid: providerId, alias: alias, }, }, @@ -146,40 +160,20 @@ export const addProvider = async (formData: FormData) => { }; export const checkConnectionProvider = async (formData: FormData) => { + const session = await auth(); const keyServer = process.env.API_BASE_URL; + const tenantId = session?.user.tenantId; const providerId = formData.get("id"); - try { - const response = await fetch( - `${keyServer}/providers/${providerId}/connection`, - { - method: "POST", - headers: { - "X-Tenant-ID": `${process.env.HEADER_TENANT_ID}`, - }, - }, - ); - const data = await response.json(); - revalidatePath("/providers"); - return parseStringify(data); - } catch (error) { - return { - error: getErrorMessage(error), - }; - } -}; - -export const deleteProvider = async (formData: FormData) => { - const keyServer = process.env.API_BASE_URL; - - const providerId = formData.get("id"); + const url = new URL(`${keyServer}/providers/${providerId}/connection`); try { - const response = await fetch(`${keyServer}/providers/${providerId}`, { - method: "DELETE", + const response = await fetch(url.toString(), { + method: "POST", headers: { - "X-Tenant-ID": `${process.env.HEADER_TENANT_ID}`, + "X-Tenant-ID": `${tenantId}`, + Authorization: "Basic " + btoa(`${username}:${password}`), }, }); const data = await response.json(); @@ -191,6 +185,33 @@ export const deleteProvider = async (formData: FormData) => { }; } }; + +export const deleteProvider = async (formData: FormData) => { + const session = await auth(); + const keyServer = process.env.API_BASE_URL; + const tenantId = session?.user.tenantId; + + const providerId = formData.get("id"); + const url = new URL(`${keyServer}/providers/${providerId}`); + + try { + const response = await fetch(url.toString(), { + method: "DELETE", + headers: { + "X-Tenant-ID": `${tenantId}`, + Authorization: "Basic " + btoa(`${username}:${password}`), + }, + }); + const data = await response.json(); + revalidatePath("/providers"); + return parseStringify(data); + } catch (error) { + return { + error: getErrorMessage(error), + }; + } +}; + export const getErrorMessage = (error: unknown): string => { let message: string;