monacousa-portal/server/api/admin/smtp-config.get.ts

62 lines
2.0 KiB
TypeScript

export default defineEventHandler(async (event) => {
console.log('[api/admin/smtp-config.get] =========================');
console.log('[api/admin/smtp-config.get] GET /api/admin/smtp-config - Get SMTP configuration');
try {
// Validate session and require admin privileges
const sessionManager = createSessionManager();
const cookieHeader = getCookie(event, 'monacousa-session') ? getHeader(event, 'cookie') : undefined;
const session = sessionManager.getSession(cookieHeader);
if (!session?.user) {
throw createError({
statusCode: 401,
statusMessage: 'Authentication required'
});
}
if (session.user.tier !== 'admin') {
throw createError({
statusCode: 403,
statusMessage: 'Admin privileges required'
});
}
console.log('[api/admin/smtp-config.get] Authorized admin:', session.user.email);
// Force reload and get SMTP configuration
const { getSMTPConfig, reloadAdminConfig } = await import('~/server/utils/admin-config');
// Force reload configuration to ensure we have the latest settings
try {
await reloadAdminConfig();
} catch (error) {
console.warn('[api/admin/smtp-config.get] Failed to reload config, using cached version:', error);
}
const config = getSMTPConfig();
console.log('[api/admin/smtp-config.get] Current SMTP config status:', {
host: config.host || 'not set',
port: config.port || 'not set',
hasUsername: !!config.username,
hasPassword: !!config.password,
fromAddress: config.fromAddress || 'not set'
});
// Hide password for security
const safeConfig = {
...config,
password: config.password ? '••••••••••••••••' : ''
};
return {
success: true,
data: safeConfig
};
} catch (error: any) {
console.error('[api/admin/smtp-config.get] ❌ Error getting SMTP config:', error);
throw error;
}
});