courrier msft oauth

This commit is contained in:
alma 2025-05-02 09:49:32 +02:00
parent 758607d05f
commit 06de428e61

View File

@ -34,10 +34,10 @@ interface EmailCredentialsExtended extends EmailCredentials {
// Define the extended MailCredentials type that includes OAuth fields // Define the extended MailCredentials type that includes OAuth fields
interface MailCredentialsWithOAuth extends MailCredentials { interface MailCredentialsWithOAuth extends MailCredentials {
use_oauth?: boolean; useOAuth?: boolean;
access_token?: string | null; accessToken?: string | null;
refresh_token?: string | null; refreshToken?: string | null;
token_expiry?: Date | null; tokenExpiry?: Date | null;
} }
// Types specific to this service // Types specific to this service
@ -277,38 +277,40 @@ export async function getImapConnection(
} }
// Map database fields to our credential format // Map database fields to our credential format
credentials = { if (dbCredentials) {
email: dbCredentials.email, credentials = {
password: dbCredentials.password, email: dbCredentials.email,
host: dbCredentials.host, password: dbCredentials.password || '',
port: dbCredentials.port, host: dbCredentials.host,
secure: dbCredentials.secure, port: dbCredentials.port,
smtp_host: dbCredentials.smtp_host || undefined, secure: dbCredentials.secure,
smtp_port: dbCredentials.smtp_port || undefined, smtp_host: dbCredentials.smtp_host || undefined,
smtp_secure: dbCredentials.smtp_secure ?? false, smtp_port: dbCredentials.smtp_port || undefined,
display_name: dbCredentials.display_name || undefined, smtp_secure: dbCredentials.smtp_secure ?? false,
color: dbCredentials.color || undefined, display_name: dbCredentials.display_name || undefined,
color: dbCredentials.color || undefined,
// Map OAuth fields - using camelCase field names from the schema
useOAuth: dbCredentials.useOAuth || false,
accessToken: dbCredentials.accessToken || undefined,
refreshToken: dbCredentials.refreshToken || undefined,
tokenExpiry: dbCredentials.tokenExpiry ? dbCredentials.tokenExpiry.getTime() : undefined
} as EmailCredentialsExtended; // Cast to extended type
// Map OAuth fields // Log credentials (safely)
useOAuth: dbCredentials.use_oauth || false, console.log('Loaded credentials from database:', {
accessToken: dbCredentials.access_token || undefined, email: credentials.email,
refreshToken: dbCredentials.refresh_token || undefined, host: credentials.host,
tokenExpiry: dbCredentials.token_expiry ? dbCredentials.token_expiry.getTime() : undefined port: credentials.port,
}; useOAuth: credentials.useOAuth,
hasAccessToken: !!credentials.accessToken,
// Log credentials (safely) hasRefreshToken: !!credentials.refreshToken,
console.log('Loaded credentials from database:', { tokenExpiry: credentials.tokenExpiry ? new Date(credentials.tokenExpiry).toISOString() : undefined
email: credentials.email, });
host: credentials.host,
port: credentials.port, // Cache the credentials for future use
useOAuth: credentials.useOAuth, await cacheEmailCredentials(userId, accountId, credentials);
hasAccessToken: !!credentials.accessToken, }
hasRefreshToken: !!credentials.refreshToken,
tokenExpiry: credentials.tokenExpiry ? new Date(credentials.tokenExpiry).toISOString() : undefined
});
// Cache the credentials for future use
await cacheEmailCredentials(userId, accountId, credentials);
} }
// Cast to extended type // Cast to extended type
@ -559,20 +561,20 @@ export async function saveUserEmailCredentials(
smtp_secure: credentials.smtp_secure ?? false, smtp_secure: credentials.smtp_secure ?? false,
display_name: credentials.display_name || null, display_name: credentials.display_name || null,
color: credentials.color || null, color: credentials.color || null,
// Add OAuth fields if present // Add OAuth fields if present - using the camelCase names from the schema
use_oauth: extendedCreds.useOAuth ?? false, useOAuth: extendedCreds.useOAuth ?? false,
access_token: extendedCreds.accessToken || null, accessToken: extendedCreds.accessToken || null,
refresh_token: extendedCreds.refreshToken || null, refreshToken: extendedCreds.refreshToken || null,
token_expiry: extendedCreds.tokenExpiry ? new Date(extendedCreds.tokenExpiry) : null tokenExpiry: extendedCreds.tokenExpiry ? new Date(extendedCreds.tokenExpiry) : null
}; };
try { try {
console.log('Saving credentials with OAuth data:', { console.log('Saving credentials with OAuth data:', {
...dbCredentials, ...dbCredentials,
password: dbCredentials.password ? '***' : null, password: dbCredentials.password ? '***' : null,
access_token: dbCredentials.access_token ? '***' : null, accessToken: dbCredentials.accessToken ? '***' : null,
refresh_token: dbCredentials.refresh_token ? '***' : null, refreshToken: dbCredentials.refreshToken ? '***' : null,
use_oauth: dbCredentials.use_oauth useOAuth: dbCredentials.useOAuth
}); });
// Save to database using the unique constraint on [userId, email] // Save to database using the unique constraint on [userId, email]