- Add admin-only authorization for company and projects CRUD operations - Create requireAccountId middleware to eliminate code duplication - Standardize error handling (use next(error) consistently) - Change error messages to Slovak language 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
167 lines
3.6 KiB
JavaScript
167 lines
3.6 KiB
JavaScript
import * as emailAccountService from '../services/email-account.service.js';
|
|
import {
|
|
logEmailLink,
|
|
} from '../services/audit.service.js';
|
|
|
|
/**
|
|
* Get all email accounts for logged-in user
|
|
* GET /api/email-accounts
|
|
*/
|
|
export const getEmailAccounts = async (req, res, next) => {
|
|
try {
|
|
const userId = req.userId;
|
|
const accounts = await emailAccountService.getUserEmailAccounts(userId);
|
|
|
|
res.status(200).json({
|
|
success: true,
|
|
data: accounts,
|
|
});
|
|
} catch (error) {
|
|
next(error);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Get a specific email account
|
|
* GET /api/email-accounts/:id
|
|
*/
|
|
export const getEmailAccount = async (req, res, next) => {
|
|
try {
|
|
const userId = req.userId;
|
|
const { id } = req.params;
|
|
|
|
const account = await emailAccountService.getEmailAccountById(id, userId);
|
|
|
|
res.status(200).json({
|
|
success: true,
|
|
data: account,
|
|
});
|
|
} catch (error) {
|
|
next(error);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Create a new email account
|
|
* POST /api/email-accounts
|
|
*/
|
|
export const createEmailAccount = async (req, res, next) => {
|
|
const { email, emailPassword } = req.body;
|
|
const userId = req.userId;
|
|
const ipAddress = req.ip || req.connection.remoteAddress;
|
|
const userAgent = req.headers['user-agent'];
|
|
|
|
try {
|
|
const account = await emailAccountService.createEmailAccount(
|
|
userId,
|
|
email,
|
|
emailPassword
|
|
);
|
|
|
|
// Log email account creation
|
|
await logEmailLink(userId, email, ipAddress, userAgent);
|
|
|
|
res.status(201).json({
|
|
success: true,
|
|
data: account,
|
|
message: 'Email účet úspešne pripojený',
|
|
});
|
|
} catch (error) {
|
|
next(error);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Update email account password
|
|
* PATCH /api/email-accounts/:id/password
|
|
*/
|
|
export const updateEmailAccountPassword = async (req, res, next) => {
|
|
try {
|
|
const userId = req.userId;
|
|
const { id } = req.params;
|
|
const { emailPassword } = req.body;
|
|
|
|
const result = await emailAccountService.updateEmailAccountPassword(
|
|
id,
|
|
userId,
|
|
emailPassword
|
|
);
|
|
|
|
res.status(200).json({
|
|
success: true,
|
|
data: result,
|
|
message: 'Heslo k emailovému účtu bolo aktualizované',
|
|
});
|
|
} catch (error) {
|
|
next(error);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Toggle email account active status
|
|
* PATCH /api/email-accounts/:id/status
|
|
*/
|
|
export const toggleEmailAccountStatus = async (req, res, next) => {
|
|
try {
|
|
const userId = req.userId;
|
|
const { id } = req.params;
|
|
const { isActive } = req.body;
|
|
|
|
const result = await emailAccountService.toggleEmailAccountStatus(
|
|
id,
|
|
userId,
|
|
isActive
|
|
);
|
|
|
|
res.status(200).json({
|
|
success: true,
|
|
data: result,
|
|
message: `Email účet ${isActive ? 'aktivovaný' : 'deaktivovaný'}`,
|
|
});
|
|
} catch (error) {
|
|
next(error);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Set email account as primary
|
|
* POST /api/email-accounts/:id/set-primary
|
|
*/
|
|
export const setPrimaryEmailAccount = async (req, res, next) => {
|
|
try {
|
|
const userId = req.userId;
|
|
const { id } = req.params;
|
|
|
|
const result = await emailAccountService.setPrimaryEmailAccount(id, userId);
|
|
|
|
res.status(200).json({
|
|
success: true,
|
|
data: result,
|
|
message: 'Primárny email účet bol nastavený',
|
|
});
|
|
} catch (error) {
|
|
next(error);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Delete email account
|
|
* DELETE /api/email-accounts/:id
|
|
*/
|
|
export const deleteEmailAccount = async (req, res, next) => {
|
|
try {
|
|
const userId = req.userId;
|
|
const { id } = req.params;
|
|
|
|
const result = await emailAccountService.removeUserFromEmailAccount(id, userId);
|
|
|
|
res.status(200).json({
|
|
success: true,
|
|
data: result,
|
|
message: result.message,
|
|
});
|
|
} catch (error) {
|
|
next(error);
|
|
}
|
|
};
|