You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/09/07 12:00:38 UTC
[isis] branch master updated: ISIS-2774: fixes recursive call in
ImpersonateMenu.impersonate
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 98fbbb9 ISIS-2774: fixes recursive call in ImpersonateMenu.impersonate
98fbbb9 is described below
commit 98fbbb98966975e9723f1b531764dc7d0e21ece0
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Sep 7 14:00:31 2021 +0200
ISIS-2774: fixes recursive call in ImpersonateMenu.impersonate
---
.../java/org/apache/isis/applib/services/user/ImpersonateMenu.java | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/user/ImpersonateMenu.java b/api/applib/src/main/java/org/apache/isis/applib/services/user/ImpersonateMenu.java
index c09844c..8bb1f46 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/user/ImpersonateMenu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/user/ImpersonateMenu.java
@@ -35,6 +35,7 @@ import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.annotation.Publishing;
import org.apache.isis.applib.annotation.RestrictTo;
import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.applib.services.message.MessageService;
import lombok.RequiredArgsConstructor;
@@ -74,10 +75,10 @@ public class ImpersonateMenu {
final UserService userService;
final MessageService messageService;
+ final FactoryService factoryService;
final List<ImpersonateMenuAdvisor> impersonateMenuAdvisors;
-
@Action(
domainEvent = impersonate.ActionEvent.class,
semantics = SemanticsOf.IDEMPOTENT,
@@ -103,7 +104,9 @@ public class ImpersonateMenu {
messageService.informUser("Now impersonating " + userName);
}
@MemberSupport public boolean hideAct() {
- return ! userService.supportsImpersonation() || !hideAct();
+ // when supported, either 'impersonate' or 'impersonateWithRoles' should show up but not both
+ return ! userService.supportsImpersonation()
+ || ! factoryService.mixin(impersonateWithRoles.class, ImpersonateMenu.this).hideAct();
}
@MemberSupport public String disableAct() {
return userService.isImpersonating() ? "currently impersonating" : null;