From 6478d77733fcc5e51627d987744c92b4d58d157f Mon Sep 17 00:00:00 2001 From: Alice Gaudon Date: Mon, 1 Mar 2021 13:29:30 +0100 Subject: [PATCH] MailboxBackend: fix redirections --- .../backend/MailboxBackendController.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/controllers/backend/MailboxBackendController.ts b/src/controllers/backend/MailboxBackendController.ts index 6960497..dc494c1 100644 --- a/src/controllers/backend/MailboxBackendController.ts +++ b/src/controllers/backend/MailboxBackendController.ts @@ -105,7 +105,7 @@ export default class MailboxBackendController extends Controller { const domain = MailDomain.create(req.body); await domain.save(); req.flash('success', `Domain ${domain.name} successfully added with owner ${(await domain.owner.get())?.name}`); - res.redirect(Controller.route('backend-mailboxes')); + res.redirect(Controller.route('backend-edit-domain', domain.id)); } protected async getEditDomain(req: Request, res: Response): Promise { @@ -134,7 +134,7 @@ export default class MailboxBackendController extends Controller { await domain.save(); req.flash('success', `Domain ${domain.name} updated successfully.`); - res.redirect(Controller.route('backend-mailboxes')); + res.redirect(Controller.route('backend-edit-domain', domain.id)); } protected async postRemoveDomain(req: Request, res: Response): Promise { @@ -147,7 +147,7 @@ export default class MailboxBackendController extends Controller { // Don't delete that domain if it still has identities if ((await domain.identities.get()).length > 0) { req.flash('error', `This domain still has identities. Please remove all of these first (don't forget to rename mailboxes).`); - res.redirect(Controller.route('backend-mailboxes')); + res.redirect(Controller.route('backend-edit-domain', domain.id)); return; } @@ -185,7 +185,7 @@ export default class MailboxBackendController extends Controller { } req.flash('success', 'Mail identity ' + await identity.toEmail() + ' successfully created.'); - res.redirect(Controller.route('backend-mailbox', req.params.id)); + res.redirect(Controller.route('backend-mailbox', user.id)); } protected async postDeleteMailIdentity(req: Request, res: Response): Promise { @@ -195,15 +195,16 @@ export default class MailboxBackendController extends Controller { .first(); if (!identity) throw new NotFoundHttpError('Mail identity', req.url); - const user = await identity.user.get(); - if (user?.as(UserMailIdentityComponent).main_mail_identity_id === identity.id) { + const user = identity.user.getOrFail(); + if (!user) throw new NotFoundHttpError('Mail identity owner', req.url); + if (user.as(UserMailIdentityComponent).main_mail_identity_id === identity.id) { req.flash('error', `Cannot delete this user's mailbox identity.`); - res.redirect(Controller.route('backend-mailbox', req.params.id)); + res.redirect(Controller.route('backend-mailbox', user.id)); return; } await identity.delete(); req.flash('success', 'Identity ' + await identity.toEmail() + ' successfully deleted.'); - res.redirect(Controller.route('backend-mailbox', req.params.id)); + res.redirect(Controller.route('backend-mailbox', user.id)); } }