CentralBackend/controller/auth/EmailVerificationController.js
2025-09-08 16:05:37 +02:00

54 lines
2.2 KiB
JavaScript

const UnitOfWork = require('../../database/UnitOfWork');
const EmailVerificationRepository = require('../../repositories/email/EmailVerificationRepository');
const EmailVerificationService = require('../../services/email/EmailVerificationService');
const { logger } = require('../../middleware/logger');
class EmailVerificationController {
static async sendVerificationEmail(req, res) {
const userId = req.user.userId;
const unitOfWork = new UnitOfWork();
await unitOfWork.start();
try {
const emailVerificationRepo = new EmailVerificationRepository(unitOfWork);
const userRecord = await emailVerificationRepo.getUserBasic(userId);
if (!userRecord) {
await unitOfWork.rollback();
logger.warn(`User not found for email verification: ${userId}`);
return res.status(404).json({ success: false, message: 'User not found' });
}
await EmailVerificationService.sendVerificationEmail(userRecord, unitOfWork);
await unitOfWork.commit();
logger.info(`Verification email sent to user ${userId}`);
res.json({ success: true, message: 'Verification email sent' });
} catch (error) {
await unitOfWork.rollback(error);
logger.error('Error sending verification email:', error);
res.status(400).json({ success: false, message: error.message });
}
}
static async verifyEmailCode(req, res) {
const userId = req.user.userId;
const { code } = req.body;
const unitOfWork = new UnitOfWork();
await unitOfWork.start();
try {
const result = await EmailVerificationService.verifyCode(userId, code, unitOfWork);
await unitOfWork.commit();
if (result.success) {
logger.info(`Email verified for user ${userId}`);
return res.json({ success: true });
} else {
logger.warn(`Failed email verification for user ${userId}: ${result.error}`);
return res.status(400).json({ success: false, error: result.error });
}
} catch (error) {
await unitOfWork.rollback(error);
logger.error('Error verifying email code:', error);
res.status(400).json({ success: false, error: error.message });
}
}
}
module.exports = EmailVerificationController;