diff --git a/ghost/admin/app/controllers/member.js b/ghost/admin/app/controllers/member.js index 4f80f1fa9b..b9edc04300 100644 --- a/ghost/admin/app/controllers/member.js +++ b/ghost/admin/app/controllers/member.js @@ -109,6 +109,11 @@ export default class MemberController extends Controller { this.showImpersonateMemberModal = !this.showImpersonateMemberModal; } + @action + closeImpersonateMemberModal() { + this.showImpersonateMemberModal = false; + } + @action save() { return this.saveTask.perform(); diff --git a/ghost/admin/app/routes/member.js b/ghost/admin/app/routes/member.js index 0b1637da5c..9d3dfd9437 100644 --- a/ghost/admin/app/routes/member.js +++ b/ghost/admin/app/routes/member.js @@ -12,6 +12,7 @@ export default class MembersRoute extends AdminRoute { super(...arguments); this.router.on('routeWillChange', (transition) => { this.showUnsavedChangesModal(transition); + this.closeImpersonateModal(transition); }); } @@ -64,4 +65,14 @@ export default class MembersRoute extends AdminRoute { } } } + + closeImpersonateModal(transition) { + // If user navigates away with forward or back button, ensure returning to page + // hides modal + if (transition.from && transition.from.name === this.routeName && transition.targetName) { + let {controller} = this; + + controller.closeImpersonateMemberModal(transition); + } + } }