fix: add credentials to fetch calls for authenticated API requests

Fix "Failed to load on projects" error by including credentials in all
fetch calls to /api/* endpoints. The session cookie must be sent with
requests for requireAuth middleware to authenticate users.

Changes:
- projects.js: Add credentials: 'include' to all 6 API fetch calls
  (loadProjects, saveProject, deleteProject, loadDeletedProjects,
   restoreProject, permanentDeleteProject)
- sessions-landing.js: Add credentials to 3 API fetch calls
  (loadSessionsAndProjects, moveSessionToProject, context menu
   suggestions)

Resolves issue where projects page showed "Failed to load projects"
error on https://www.rommark.dev/claude

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
uroma
2026-01-19 17:43:39 +00:00
Unverified
parent d4957b70f0
commit e869eaff9c
2 changed files with 19 additions and 8 deletions

View File

@@ -119,7 +119,9 @@ async function loadProjects() {
try {
projectsGrid.innerHTML = '<div class="loading">Loading projects...</div>';
const response = await fetch('/api/projects');
const response = await fetch('/api/projects', {
credentials: 'include'
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
@@ -157,6 +159,7 @@ async function saveProject(projectData) {
headers: {
'Content-Type': 'application/json'
},
credentials: 'include',
body: JSON.stringify(projectData)
});
@@ -199,7 +202,8 @@ async function deleteProject(projectId) {
try {
const response = await fetch(`/api/projects/${projectId}`, {
method: 'DELETE'
method: 'DELETE',
credentials: 'include'
});
if (!response.ok) {
@@ -222,7 +226,9 @@ async function deleteProject(projectId) {
*/
async function loadDeletedProjects() {
try {
const response = await fetch('/api/projects?includeDeleted=true');
const response = await fetch('/api/projects?includeDeleted=true', {
credentials: 'include'
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
@@ -242,7 +248,8 @@ async function loadDeletedProjects() {
async function restoreProject(projectId) {
try {
const response = await fetch(`/api/projects/${projectId}/restore`, {
method: 'POST'
method: 'POST',
credentials: 'include'
});
if (!response.ok) {
@@ -270,7 +277,8 @@ async function permanentDeleteProject(projectId) {
try {
const response = await fetch(`/api/projects/${projectId}/permanent`, {
method: 'DELETE'
method: 'DELETE',
credentials: 'include'
});
if (!response.ok) {