diff --git a/src/mail.js b/src/mail.js index b22656abb..d7cde53fe 100644 --- a/src/mail.js +++ b/src/mail.js @@ -28,7 +28,8 @@ exports = module.exports = { disableUserMailbox: disableUserMailbox, getAliases: getAliases, - setAliases: setAliases, + getUserAliases: getUserAliases, + setUserAliases: setUserAliases, getLists: getLists, getList: getList, @@ -940,7 +941,18 @@ function disableUserMailbox(domain, userId, callback) { }); } -function getAliases(domain, userId, callback) { +function getAliases(domain, callback) { + assert.strictEqual(typeof domain, 'string'); + assert.strictEqual(typeof callback, 'function'); + + mailboxdb.listAliases(domain, function (error, result) { + if (error) return callback(new MailError(MailError.INTERNAL_ERROR, error)); + + callback(null, result); + }); +} + +function getUserAliases(domain, userId, callback) { assert.strictEqual(typeof domain, 'string'); assert.strictEqual(typeof userId, 'string'); assert.strictEqual(typeof callback, 'function'); @@ -959,7 +971,7 @@ function getAliases(domain, userId, callback) { }); } -function setAliases(domain, userId, aliases, callback) { +function setUserAliases(domain, userId, aliases, callback) { assert.strictEqual(typeof domain, 'string'); assert.strictEqual(typeof userId, 'string'); assert(Array.isArray(aliases)); diff --git a/src/routes/mail.js b/src/routes/mail.js index fff430cf3..f22e0aaf6 100644 --- a/src/routes/mail.js +++ b/src/routes/mail.js @@ -23,7 +23,8 @@ exports = module.exports = { disableUserMailbox: disableUserMailbox, getAliases: getAliases, - setAliases: setAliases, + getUserAliases: getUserAliases, + setUserAliases: setUserAliases, getLists: getLists, getList: getList, @@ -249,9 +250,19 @@ function disableUserMailbox(req, res, next) { function getAliases(req, res, next) { assert.strictEqual(typeof req.params.domain, 'string'); + + mail.getAliases(req.params.domain, function (error, result) { + if (error) return next(new HttpError(500, error)); + + next(new HttpSuccess(200, { aliases: result })); + }); +} + +function getUserAliases(req, res, next) { + assert.strictEqual(typeof req.params.domain, 'string'); assert.strictEqual(typeof req.params.userId, 'string'); - mail.getAliases(req.params.domain, req.params.userId, function (error, result) { + mail.getUserAliases(req.params.domain, req.params.userId, function (error, result) { if (error && error.reason === MailError.NOT_FOUND) return next(new HttpError(404, error.message)); if (error) return next(new HttpError(500, error)); @@ -259,7 +270,7 @@ function getAliases(req, res, next) { }); } -function setAliases(req, res, next) { +function setUserAliases(req, res, next) { assert.strictEqual(typeof req.params.domain, 'string'); assert.strictEqual(typeof req.params.userId, 'string'); assert.strictEqual(typeof req.body, 'object'); @@ -270,7 +281,7 @@ function setAliases(req, res, next) { if (typeof req.body.aliases[i] !== 'string') return next(new HttpError(400, 'alias must be a string')); } - mail.setAliases(req.params.domain, req.params.userId, req.body.aliases, function (error) { + mail.setUserAliases(req.params.domain, req.params.userId, req.body.aliases, function (error) { if (error && error.reason === MailError.NOT_FOUND) return next(new HttpError(404, error.message)); if (error && error.reason === MailError.BAD_FIELD) return next(new HttpError(400, error.message)); if (error) return next(new HttpError(500, error)); diff --git a/src/server.js b/src/server.js index 4f8e996ed..285127abd 100644 --- a/src/server.js +++ b/src/server.js @@ -229,8 +229,9 @@ function initializeExpressSync() { router.get ('/api/v1/mail/:domain/mailboxes/:userId', settingsScope, routes.user.requireAdmin, routes.mail.getUserMailbox); router.post('/api/v1/mail/:domain/mailboxes/:userId', settingsScope, routes.user.requireAdmin, routes.mail.enableUserMailbox); router.del ('/api/v1/mail/:domain/mailboxes/:userId', settingsScope, routes.user.requireAdmin, routes.mail.disableUserMailbox); - router.get ('/api/v1/mail/:domain/aliases/:userId', settingsScope, routes.user.requireAdmin, routes.mail.getAliases); - router.put ('/api/v1/mail/:domain/aliases/:userId', settingsScope, routes.user.requireAdmin, routes.mail.setAliases); + router.get ('/api/v1/mail/:domain/aliases', settingsScope, routes.user.requireAdmin, routes.mail.getAliases); + router.get ('/api/v1/mail/:domain/aliases/:userId', settingsScope, routes.user.requireAdmin, routes.mail.getUserAliases); + router.put ('/api/v1/mail/:domain/aliases/:userId', settingsScope, routes.user.requireAdmin, routes.mail.setUserAliases); router.get ('/api/v1/mail/:domain/lists', settingsScope, routes.user.requireAdmin, routes.mail.getLists); router.post('/api/v1/mail/:domain/lists', settingsScope, routes.user.requireAdmin, routes.mail.addList); router.get ('/api/v1/mail/:domain/lists/:groupId', settingsScope, routes.user.requireAdmin, routes.mail.getList);