const UserError = require('vn-loopback/util/user-error'); module.exports = Self => { Self.remoteMethod('removeAlias', { description: 'Remove alias if the user has the grant', accessType: 'WRITE', accepts: [ { arg: 'ctx', type: 'Object', http: {source: 'context'} }, { arg: 'id', type: 'number', required: true, description: 'The user id', http: {source: 'path'} }, { arg: 'mailAlias', type: 'number', description: 'The alias to delete', required: true } ], http: { path: `/:id/removeAlias`, verb: 'POST' } }); Self.removeAlias = async function(ctx, id, mailAlias, options) { const models = Self.app.models; const userId = ctx.req.accessToken.userId; const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); const canRemoveAlias = await models.ACL.checkAccessAcl(ctx, 'VnUser', 'canRemoveAlias', 'WRITE'); if (userId != id && !canRemoveAlias) throw new UserError(`You don't have grant privilege`); const mailAliasAccount = await models.MailAliasAccount.findOne({ where: { mailAlias: mailAlias, account: id } }, myOptions); await mailAliasAccount.destroy(myOptions); }; };