Files
crm-server/src/services/email.service.js

52 lines
1.4 KiB
JavaScript

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');
}
};