import axios from 'axios'; import { logger } from '../utils/logger.js'; /** * Validuje JMAP credentials a vráti account ID * @param {string} email - Email address * @param {string} password - Email password * @returns {Promise<{accountId: string, session: object}>} */ export const validateJmapCredentials = async (email, password) => { const jmapServer = process.env.JMAP_SERVER; if (!jmapServer) { throw new Error('JMAP_SERVER environment variable is not configured'); } try { const response = await axios.get(`${jmapServer}session`, { auth: { username: email, password: password, }, }); const session = response.data; // Získaj account ID z session const accountId = session.primaryAccounts?.['urn:ietf:params:jmap:mail'] || session.primaryAccounts?.['urn:ietf:params:jmap:core'] || Object.keys(session.accounts || {})[0]; if (!accountId) { throw new Error('Nepodarilo sa získať JMAP account ID'); } logger.success(`JMAP credentials validated for ${email}, accountId: ${accountId}`); return { accountId, session, }; } catch (error) { logger.error(`Failed to validate JMAP credentials for ${email}`, error); if (error.response?.status === 401) { throw new Error('Nesprávne prihlasovacie údaje k emailu'); } throw new Error('Nepodarilo sa overiť emailový účet'); } };