option for more emails,fix jmap service,add table email accounts

This commit is contained in:
richardtekula
2025-11-19 13:15:45 +01:00
parent 97f437c1c4
commit 1e7c1eab90
18 changed files with 1991 additions and 1299 deletions

View File

@@ -27,6 +27,7 @@ router.post(
email: z.string().email('Neplatný formát emailu'),
name: z.string().optional(),
notes: z.string().optional(),
accountId: z.string().uuid().optional(),
})
),
contactController.addContact

View File

@@ -0,0 +1,71 @@
import express from 'express';
import * as emailAccountController from '../controllers/email-account.controller.js';
import { authenticate } from '../middlewares/auth/authMiddleware.js';
import { validateBody, validateParams } from '../middlewares/security/validateInput.js';
import { sensitiveOperationLimiter } from '../middlewares/security/rateLimiter.js';
import {
createEmailAccountSchema,
updateEmailAccountSchema,
} from '../validators/email-account.validators.js';
import { z } from 'zod';
const router = express.Router();
// All email account routes require authentication
router.use(authenticate);
/**
* Email account management
*/
// Get all email accounts for logged-in user
router.get('/', emailAccountController.getEmailAccounts);
// Get specific email account
router.get(
'/:id',
validateParams(z.object({ id: z.string().uuid() })),
emailAccountController.getEmailAccount
);
// Create new email account
router.post(
'/',
sensitiveOperationLimiter,
validateBody(createEmailAccountSchema),
emailAccountController.createEmailAccount
);
// Update email account password
router.patch(
'/:id/password',
validateParams(z.object({ id: z.string().uuid() })),
validateBody(z.object({ emailPassword: z.string().min(1) })),
sensitiveOperationLimiter,
emailAccountController.updateEmailAccountPassword
);
// Toggle email account status
router.patch(
'/:id/status',
validateParams(z.object({ id: z.string().uuid() })),
validateBody(z.object({ isActive: z.boolean() })),
emailAccountController.toggleEmailAccountStatus
);
// Set email account as primary
router.post(
'/:id/set-primary',
validateParams(z.object({ id: z.string().uuid() })),
emailAccountController.setPrimaryEmailAccount
);
// Delete email account
router.delete(
'/:id',
validateParams(z.object({ id: z.string().uuid() })),
sensitiveOperationLimiter,
emailAccountController.deleteEmailAccount
);
export default router;