diff --git a/app/[section]/page.tsx b/app/[section]/page.tsx index d8121f7b..a65d0d7b 100644 --- a/app/[section]/page.tsx +++ b/app/[section]/page.tsx @@ -10,13 +10,11 @@ const menuItems = { missions: "https://example.com/missions" } -type PageProps = { - params: { - section: string; - }; -}; +interface SectionParams { + section: string; +} -export default async function SectionPage({ params }: PageProps) { +export default async function SectionPage({ params }: { params: SectionParams }) { const section = params?.section ? String(params.section) : ''; const iframeUrl = menuItems[section as keyof typeof menuItems]; diff --git a/docker-compose.yml b/docker-compose.yml index bd527c92..40db5c51 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,6 +20,20 @@ services: - "6379:6379" volumes: - redis_data:/data + + app: + build: + context: . + dockerfile: Dockerfile + restart: always + ports: + - "3000:3000" + depends_on: + - db + - redis + environment: + - DATABASE_URL=postgresql://postgres:postgres@db:5432/calendar_db + - REDIS_URL=redis://:mySecretPassword@redis:6379 volumes: db: diff --git a/lib/services/email-service.ts b/lib/services/email-service.ts index 8e6bb09c..92e8e868 100644 --- a/lib/services/email-service.ts +++ b/lib/services/email-service.ts @@ -1379,4 +1379,50 @@ export async function testEmailConnection(credentials: EmailCredentials): Promis error: `IMAP connection failed: ${error instanceof Error ? error.message : 'Unknown error'}` }; } +} + +/** + * Force recaching of user credentials + * This function is used to refresh credentials in Redis cache + */ +export async function forceRecacheUserCredentials(userId: string): Promise { + try { + // Get credentials from database + const accounts = await prisma.mailCredentials.findMany({ + where: { userId } + }); + + if (!accounts || accounts.length === 0) { + console.log(`No email accounts found for user ${userId}`); + return false; + } + + // Recache each account's credentials + for (const account of accounts) { + const credentials: EmailCredentials = { + host: account.host, + port: account.port, + email: account.email, + password: account.password, + secure: account.secure, + smtp_host: account.smtp_host || undefined, + smtp_port: account.smtp_port || undefined, + smtp_secure: account.smtp_secure || undefined, + display_name: account.display_name || undefined, + color: account.color || undefined + }; + + await cacheEmailCredentials(userId, account.id, credentials); + console.log(`Recached credentials for user ${userId}, account ${account.id}`); + + // Invalidate other caches related to this account + await invalidateFolderCache(userId, account.id, '*'); + await invalidateEmailContentCache(userId, account.id, '*'); + } + + return true; + } catch (error) { + console.error(`Error recaching credentials for user ${userId}:`, error); + return false; + } } \ No newline at end of file