🔧 Fix Authentication Headers & Add Debug Logging

🔐 Authentication Fixes:
- Added proper auth headers to collections API calls
- Added auth headers to thumbnail API calls
- Fixed missing Authorization Bearer token in requests

🔍 Enhanced Debug Logging:
- Added server-side logging in collections API
- Added debug logging in thumbnails API
- Log user authentication data
- Log SQL query results
- Log final API responses

This should fix the userRole: null issue by ensuring proper authentication
and help identify any remaining issues with detailed logging.
This commit is contained in:
Randall Stillwell 2025-07-27 12:39:28 -05:00
parent 111658436f
commit 7077fc9e25
3 changed files with 31 additions and 3 deletions

View file

@ -23,6 +23,7 @@ export default async function handler(req, res) {
}
const currentUserId = user.userId;
console.log('🔍 Debug - Collections API - Current user:', user);
// Get collections based on ownership, collaboration, or public visibility
const result = await sql`
@ -50,6 +51,14 @@ export default async function handler(req, res) {
ORDER BY c.updated_at DESC
`;
console.log('🔍 Debug - Collections API - Query results:', result.rows.map(r => ({
name: r.name,
user_id: r.user_id,
creator_email: r.creator_email,
user_role: r.user_role,
effective_role: r.effective_role
})));
const collections = result.rows.map(collection => ({
id: collection.id,
slug: collection.slug,
@ -66,6 +75,12 @@ export default async function handler(req, res) {
userRole: collection.effective_role
}));
console.log('🔍 Debug - Collections API - Final response:', collections.map(c => ({
name: c.name,
userRole: c.userRole,
creator: c.creator
})));
res.status(200).json(collections);
} catch (error) {

View file

@ -19,13 +19,16 @@ export default async function handler(req, res) {
}
try {
const { identifier } = req.query;
console.log('🔍 Debug - Thumbnails API - Identifier:', identifier);
// Get authenticated user
const user = await getUserFromRequest(req);
if (!user) {
return res.status(401).json({ error: 'Authentication required' });
}
const { identifier } = req.query;
console.log('🔍 Debug - Thumbnails API - User:', user);
if (!identifier) {
return res.status(400).json({ error: 'Collection identifier is required' });
@ -33,6 +36,7 @@ export default async function handler(req, res) {
// Determine if identifier is a slug or numeric ID
const isSlug = isValidSlug(identifier) || isNaN(parseInt(identifier));
console.log('🔍 Debug - Thumbnails API - Is slug:', isSlug);
// Verify user has access to this collection
let collectionResult;

View file

@ -52,7 +52,16 @@ export default function Collections() {
const fetchCollections = async () => {
try {
const response = await fetch('/api/collections');
const token = localStorage.getItem('auth_token');
const headers = {
'Content-Type': 'application/json',
};
if (token) {
headers.Authorization = `Bearer ${token}`;
}
const response = await fetch('/api/collections', { headers });
if (response.ok) {
const data = await response.json();
@ -67,7 +76,7 @@ export default function Collections() {
data.map(async (collection) => {
try {
const identifier = collection.slug || collection.id;
const thumbnailResponse = await fetch(`/api/collections/${identifier}/thumbnails`);
const thumbnailResponse = await fetch(`/api/collections/${identifier}/thumbnails`, { headers });
if (thumbnailResponse.ok) {
const thumbnailData = await thumbnailResponse.json();
return { ...collection, thumbnails: thumbnailData.thumbnails };