CORS error cleaned

This commit is contained in:
2026-05-22 15:50:35 +00:00
parent bafec754d1
commit 96c7ba3ec1
11 changed files with 372 additions and 241 deletions

View File

@@ -1,5 +1,8 @@
// src/lib/api.js
const API_BASE = import.meta.env.PUBLIC_API_URL;
// 1. Osiguravamo da API_BASE uvijek završava s točno jednom kosom crtom
const RAW_BASE = import.meta.env.PUBLIC_API_URL;
const API_BASE = RAW_BASE.endsWith('/') ? RAW_BASE : `${RAW_BASE}/`;
/**
* POMOĆNA FUNKCIJA:端 Dohvaća token i postavlja Headere
@@ -66,42 +69,41 @@ async function handleResponse(res) {
// --- RUTE ---
export const routes = {
// Autentifikacija
login: () => '/token/',
trenutniKorisnik: () => '/users/me/',
// Autentifikacija (Maknute početne kose crte!)
login: () => 'token/',
trenutniKorisnik: () => 'users/me/',
// Radni nalozi
radniNalozi: (params = {}) => {
const baseUrl = '/operativa/radni-nalozi/';
// Čistimo null i undefined vrijednosti iz filtera
const baseUrl = 'operativa/radni-nalozi/';
const cleanParams = Object.fromEntries(
Object.entries(params).filter(([_, v]) => v != null)
);
const queryString = new URLSearchParams(cleanParams).toString();
return queryString ? `${baseUrl}?${queryString}` : baseUrl;
},
radniNalogDetalji: (id) => `/operativa/radni-nalozi/${id}/`,
sljedeciBrojNaloga: () => '/operativa/radni-nalozi/sljedeci-broj/',
radniNalogDetalji: (id) => `operativa/radni-nalozi/${id}/`,
sljedeciBrojNaloga: () => 'operativa/radni-nalozi/sljedeci-broj/',
// Putni nalozi i logistika
putniNalozi: () => '/operativa/putni-nalozi/',
putniNalozi: () => 'operativa/putni-nalozi/',
// Vozila i strojevi (Fleet modul)
vozila: () => '/fleet/vozila/', // USKLAĐENO: Prebačeno pod zajednički /fleet/ namespace
vozila: () => 'fleet/vozila/',
strojevi: (vlasnikId = null) => {
const baseUrl = '/fleet/strojevi/';
const baseUrl = 'fleet/strojevi/';
if (vlasnikId) return `${baseUrl}?vlasnik=${vlasnikId}`;
return baseUrl;
},
strojDetalji: (id) => `/fleet/strojevi/${id}/`,
strojDetalji: (id) => `fleet/strojevi/${id}/`,
// Kupci / Klijenti
kupciSvi: () => '/kupci/svi/',
kupacDetalji: (id) => `/kupci/svi/${id}/`,
kupciSvi: () => 'kupci/svi/',
kupacDetalji: (id) => `kupci/svi/${id}/`,
// Kalendar i raspored
mojRaspored: () => '/kalendar/moj-raspored/',
kalendarDogadaji: () => '/kalendar/dogadaji/'
mojRaspored: () => 'kalendar/moj-raspored/',
kalendarDogadaji: () => 'kalendar/dogadaji/'
};
// --- API METODE ---
@@ -418,16 +420,20 @@ export async function fetchPutniNaloziData() {
}
}
/**
* Dohvaća sljedeći slobodni broj radnog naloga s backenda
* Osigurano protiv duplih kosih crta i preflight redirecta
*/
export async function fetchSljedeciBrojNaloga() {
try {
// Koristimo novu rutu iz routes objekta
const url = `${API_BASE}${routes.sljedeciBrojNaloga()}`;
// Pametno spajanje baze i rute (isto kao u ostalim očišćenim metodama)
const base = API_BASE.endsWith('/') ? API_BASE : `${API_BASE}/`;
const ruta = routes.sljedeciBrojNaloga();
const url = `${base}${ruta}`;
const res = await fetch(url, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
headers: getAuthHeaders() // Koristi centralizirane headere umjesto sirovog objekta
});
if (res.ok) {