james-d-taboola's picture
fix: add fallback password for server-side auth validation
ad5892d
/**
* Session management utilities
* Centralizes authentication session handling for both client and server
*/
/**
* Get credentials from browser localStorage (client-side only)
* @returns {username, password} or null if not found
*/
export function getStoredCredentials(): { username: string; password: string } | null {
if (typeof window === 'undefined') {
return null; // Server-side rendering
}
const stored = localStorage.getItem('auth_credentials');
if (!stored) {
return null;
}
try {
return JSON.parse(stored);
} catch (error) {
console.error('[Session] Failed to parse stored credentials:', error);
localStorage.removeItem('auth_credentials');
return null;
}
}
/**
* Store credentials in browser localStorage (client-side only)
*/
export function storeCredentials(username: string, password: string): void {
if (typeof window === 'undefined') {
return; // Server-side rendering
}
localStorage.setItem('auth_credentials', JSON.stringify({ username, password }));
}
/**
* Clear stored credentials from browser localStorage (client-side only)
*/
export function clearStoredCredentials(): void {
if (typeof window === 'undefined') {
return; // Server-side rendering
}
localStorage.removeItem('auth_credentials');
}
/**
* Generate Basic Auth header from credentials
*/
export function createBasicAuthHeader(username: string, password: string): string {
return 'Basic ' + btoa(`${username}:${password}`);
}
/**
* Parse Basic Auth header to extract credentials
* @returns {username, password} or null if invalid
*/
export function parseBasicAuthHeader(authHeader: string): { username: string; password: string } | null {
if (!authHeader || !authHeader.startsWith('Basic ')) {
return null;
}
try {
const base64Credentials = authHeader.slice(6); // Remove "Basic " prefix
const credentials = Buffer.from(base64Credentials, 'base64').toString('utf-8');
const [username, password] = credentials.split(':');
if (!username || !password) {
return null;
}
return { username, password };
} catch (error) {
console.error('[Session] Failed to parse auth header:', error);
return null;
}
}
/**
* Get the user password from environment
* Falls back to 'cz-2025' if not set
*/
export function getDefaultPassword(): string {
return process.env.BASIC_AUTH_PASSWORD || process.env.NEXT_PUBLIC_DEFAULT_PASSWORD || 'cz-2025';
}