52 lines
1.8 KiB
TypeScript
52 lines
1.8 KiB
TypeScript
'use client';
|
|
|
|
// Helper function to verify authentication with the local API
|
|
export async function verifyAuth(token: string) {
|
|
try {
|
|
let authEndpoint;
|
|
|
|
// Check if we're running in a browser environment
|
|
if (typeof window !== 'undefined') {
|
|
// Use the current origin in browser environments
|
|
const origin = window.location.origin;
|
|
authEndpoint = new URL('/api/auth/me', origin).toString();
|
|
console.log(`Using browser origin for auth endpoint: ${authEndpoint}`);
|
|
} else {
|
|
// For SSR or when window is not available (e.g. in Docker container)
|
|
// Use the environment variable if available
|
|
if (process.env.SERVER_API_URL) {
|
|
authEndpoint = `${process.env.SERVER_API_URL}/auth/me`;
|
|
console.log(`Using SERVER_API_URL for auth endpoint: ${authEndpoint}`);
|
|
} else {
|
|
// Fallback for local development
|
|
const protocol = (process.env.USE_HTTPS === 'false') ? 'http' : 'https';
|
|
const port = process.env.INTERNAL_API_PORT || '3000';
|
|
authEndpoint = `${protocol}://localhost:${port}/api/auth/me`;
|
|
console.log(`Using fallback for auth endpoint: ${authEndpoint}`);
|
|
}
|
|
}
|
|
|
|
console.log(`Verifying authentication with endpoint: ${authEndpoint}`);
|
|
|
|
const response = await fetch(authEndpoint, {
|
|
method: "GET",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
Authorization: `Bearer ${token}`,
|
|
},
|
|
// Prevent caching of auth requests
|
|
cache: 'no-store'
|
|
});
|
|
|
|
if (!response.ok) {
|
|
console.error(`Auth verification failed: ${response.status}`);
|
|
return false;
|
|
}
|
|
|
|
return await response.json();
|
|
} catch (error) {
|
|
console.error("Authentication verification failed:", error);
|
|
console.error("Error details:", error instanceof Error ? error.message : 'Unknown error');
|
|
return false;
|
|
}
|
|
}
|